write_chip,read_chip
int write_chip(UINT32 addr, UINT32 data)
{
if(0 == fpgaRWMode) /* localbus mode */
{
UINT16 datah, datal;
UINT32 dataread;
datah = (UINT16)(data >> 16);
FPGA_REG(addr) = datah;
rwWait(60);
datal = (UINT16)(data & 0xFFFF);
FPGA_REG(addr) = datal;
rwWait(60);
#if 0
read_chip(addr, &dataread);
if (data != dataread)
{
printf("ERROR:write 0x%08X; read 0x%08X\n", data, dataread);
return OK;
}
#endif
read_chip(addr, (UINT32 *)(&dataread));
if(print_level == 1)
printf("spi write 0x%05X: 0x%08X\n", addr, data);
return OK;
}
else if(1 == fpgaRWMode) /* i2c mode */
{
int ret = 0;
ret = fpgaMAC_i2c_write(0,0,0,addr,(unsigned char *)(&data),4);
if(print_level == 1)
{
if(ret != 0)
printf("spi write failed! read 0x%05x: 0x%08x\n", addr, data);
else
printf("spi write 0x%05x: 0x%08x\n", addr, data);
}
if(!ret)
return OK;
else
return ERROR;
}
else if(2 == fpgaRWMode) /* spi mode */
{
int ret = 0;
unsigned char *wtBuff = (unsigned char *)malloc(8);
if(NULL == wtBuff)
{
printf("No memory!\n");
return -1;
}
*wtBuff = (unsigned char)((data>>24) & 0xff);
*(wtBuff+1) = (unsigned char)((data>>16) & 0xff);
*(wtBuff+2) = (unsigned char)((data>>8 ) & 0xff);
*(wtBuff+3) = (unsigned char)((data ) & 0xff);
ret = fpga_spi_write(addr,(unsigned char *)(wtBuff),4);
if(print_level == 1)
{
if(ret != 0)
printf("spi write failed! read 0x%05x: 0x%08x\n", addr, data);
else
printf("spi write 0x%05x: 0x%08x\n", addr, data);
}
free(wtBuff);
if(!ret)
return OK;
else
return ERROR;
}
else
{
return ERROR;
}
}
int read_chip(UINT32 addr, UINT32 *data)
{
if(data == NULL)
return ERROR;
if(0 == fpgaRWMode) /* localbus mode */
{
UINT16 datah, datal;
datah = FPGA_REG(addr);
rwWait(60);
datal = FPGA_REG(addr);
rwWait(60);
*data = datal + (((UINT32)datah) << 16);
if(print_level == 1)
printf("localbus read 0x%05X: 0x%08X\n", addr, *data);
return OK;
}
else if(1 == fpgaRWMode) /* i2c mode */
{
int ret = 0;
ret = fpgaMAC_i2c_read(0,0,0,addr,(unsigned char *)data,4);
if(print_level == 1)
{
if(ret != 0)
printf("i2c read failed! read 0x%05x: 0x%08x\n", addr, *data);
else
printf("i2c read 0x%05x: 0x%08x\n", addr, *data);
}
if(!ret)
return OK;
else
return ERROR;
}
else if(2 == fpgaRWMode) /* spi mode */
{
int ret = 0;
ret = fpga_spi_read(addr,(unsigned char *)data,4);
if(print_level == 1)
{
if(ret != 0)
printf("spi read failed! read 0x%05x: 0x%08x\n", addr, *data);
else
printf("spi read 0x%05x: 0x%08x\n", addr, *data);
}
if(!ret)
return OK;
else
return ERROR;
}
else
{
return ERROR;
}
}
write_chip,read_chip的更多相关文章
- Pyhton开源框架(加强版)
info:Djangourl:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 ...
- MPlayer
名称 mplayer − 电影播放器 mencoder − 电影编解码器 概要 mplayer [选项] [文件|URL|播放列表|−] mplayer [选项] 文件1 [指定选项] [文件 ...
- python 爬取腾讯微博并生成词云
本文以延参法师的腾讯微博为例进行爬取并分析 ,话不多说 直接附上源代码.其中有比较详细的注释. 需要用到的包有 BeautifulSoup WordCloud jieba # coding:utf-8 ...
- 面经 cisco
1. 优先级反转问题及解决方法 (1)什么是优先级反转 简单从字面上来说,就是低优先级的任务先于高优先级的任务执行了,优先级搞反了.那在什么情况下会生这种情况呢? 假设三个任务准备执行,A,B,C,优 ...
- linux驱动(续)
网络通信 --> IO多路复用之select.poll.epoll详解 IO多路复用之select.poll.epoll详解 目前支持I/O多路复用的系统调用有 select,psel ...
- HttpServletRequest对象(一)
javaweb学习总结(十)——HttpServletRequest对象(一) 一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HT ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- 先说IEnumerable,我们每天用的foreach你真的懂它吗?
我们先思考几个问题: 为什么在foreach中不能修改item的值? 要实现foreach需要满足什么条件? 为什么Linq to Object中要返回IEnumerable? 接下来,先开始我们的正 ...
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...
随机推荐
- ES6学习笔记(三)
ES6加强了对Unicode的支持,并且扩展了字符串对象. 1.字符的Unicode表示法 JavaScript允许采用\uxxxx形式表示一个字符,其中"xxxx"表示字符的码点 ...
- php截取字符串的实例代码(支持utf-8)
分享下php中截取字符串的例子,支持utf-8格式. 1,截取字符串 <?php $string="2006年4月我又长大了一岁!"; echo substr($string ...
- RTC搭建android下三层应用程序访问服务器MsSql-服务器端
前几天通过Ro搭建webservice,然后在android下调用,虽然已近成功,但是返回的数据库里的中文有乱码一直未得到解决!rtc6.23版本,已经支持xe5,也支持fmx的android下开发, ...
- C#快速学习笔记(译)
下面是通过代码快速学习C#的例子. 1.学习任何语言都必定会学到的hello,world! using System; public class HelloWorld { public static ...
- python 判断 windows 隐藏文件/系统文件
linux 下隐藏文件是以句号 “.” 开头的文件,根据文件名即可判断是否为隐藏文件. win 下是以文件隐藏属性确定的,所以,只能通过微软的 API 获取隐藏属性来判断是否为隐藏文件. 1. win ...
- oracle 导入报错 ORA-00959: tablespace 'HB' does not exist
导入oracle 时发现有几张表导入时一直报错: 报错信息:IMP-00003: ORACLE error 959 encountered ORA-00959: tablespace 'HB' d ...
- 第2章 Git安装与设置
2.1 安装Git 略 2.2 设置Git 通过命令git config,用户可以把此类信息提供给本地版本库. 全局变量:在这台计算机上使用任何Git版本库时,这些全局变量的值都起作用.在相关命令中加 ...
- iOS 10 的适配问题-b
随着iOS10发布的临近,大家的App都需要适配iOS10,下面是我总结的一些关于iOS10适配方面的问题,如果有错误,欢迎指出. 1.系统判断方法失效: 在你的项目中,当需要判断系统版本的话,不要使 ...
- iOS 本地存储四种方法
在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍⼀一下数据保存的方式: 1.NSKeye ...
- 解决MS Azure 不能ping的问题
PsPing v2.01 PsPing implements Ping functionality, TCP ping, latency and bandwidth measurement. Use ...