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%.很多人年轻人会选择编 ...
随机推荐
- CSS 中的 em单位
em的对应的像素值如何计算,一言以蔽之:em就是倍数当前元素font-size的倍数,其结果就是当前字体的像素值乘以em的值,至于font-size来自何处?有两个来源:继承自父元素和通过CSS直接设 ...
- jQueryr .on方法解析
.On() 其实.bind(), .live(), .delegate()都是通过.on()来实现的,.unbind(), .die(), .undelegate(),也是一样的都是通过.off()来 ...
- slider jq小插件
html代码 <div class="r_list r_1" style="display:block;"> <div class=" ...
- SqlServer中创建Oracle连接服务器
转自太祖元年的:http://www.cnblogs.com/jirglt/archive/2012/06/10/2544025.html参考:http://down.51cto.com/data/9 ...
- 1006. Sign In and Sign Out
#include <stdio.h> #include <algorithm> #include <iostream> #include <string.h& ...
- 灵光乍现,lua数据绑定
MVVM的核心就是数据驱动,数据驱动的核心就是数据绑定. 我一直在思考,如何使用lua做一个数据绑定的功能,仔细思考一下,数据绑定需要做到的功能很简单,就是当一个数据改变时,能主动回调一个或多个函数就 ...
- EXTJS4.2 chart 柱状图
chart 柱状图 Ext.require('Ext.chart.*'); Ext.require(['Ext.Window', 'Ext.fx.target.Sprite', 'Ext.layout ...
- 【BZOJ 2875】 [Noi2012]随机数生成器
Description 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn m, a, c, x0, n, g<=10^18 Input ...
- linux常用命令及安装软件命令
1.查看操作系统是33位还是64最简单的方法 getconf LONG_BIT 或者 uname -a 2.常用命令 2.1基本操作 clear 清屏 2.2安装命令 rpm(redhat packa ...
- 链接Eclipse和SQL SEVER
一.本文内容 讲诉使用JDBC建立Eclipse和Sql sever的桥梁的过程与其中可能遇见的问题. 二.详细内容 1.JDBC驱动的下载 建议一定要上与SQL SEVER相关的微软官网下载,以便找 ...