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%.很多人年轻人会选择编 ...
随机推荐
- opener 属性是一个可读可写的属性,可返回对创建该窗口的 Window 对象的引用
opener 属性是一个可读可写的属性,可返回对创建该窗口的 Window 对象的引用
- 在后台对GameObject进行"创建"||"删除"动作
在后台对GameObject进行"创建"||"删除"动作 建立 public GameObject Pre;//在编辑器中用来绑定的Prefabs public ...
- 2016年辛星less教程发布了
首先简介一下less吧,它是一个css预处理器.当我们的项目比较大的时候,我们的css的代码量也会急剧的膨胀,因此就有很多方案来让编程更加容易,没错,less就是这样一种技术. 在百度网盘的下载地址为 ...
- oracle 多条执行语句同时执行
oracle 多条执行语句同时执行:begin 语名一;语句二; end; 注意 如果写在C#里千万不要用@的方法然后语句里有回车 例: string strSql = "begin upd ...
- (转)使用Migrations更新数据库结构(Code First )
原文地址:http://blog.csdn.net/luoyeyu1989/article/details/8275237 背景 code first起初当修改model后,要持久化至数据库中时,总要 ...
- EXTJS4.2 chart 柱状图
chart 柱状图 Ext.require('Ext.chart.*'); Ext.require(['Ext.Window', 'Ext.fx.target.Sprite', 'Ext.layout ...
- EXTJS 3.0 资料 控件之 itemselector 用法
var dsform = new Ext.data.ArrayStore({ data: [[123, 'One Hundred Twenty Three'], ['1', '今天星期一'], ['2 ...
- 详解C#中的反射(转载)
反射(Reflection) 2008年01月02日 星期三 11:21 两个现实中的例子: 1.B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况.这是如何做到的呢?B超是 ...
- ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
今天用PL/SQL连接虚拟机中的Oracle数据库,发现报了“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误,也许你也遇到过,原因如下: oracle安装成功后,一直未停止 ...
- Android Studio 单刷《第一行代码》系列 04 —— Activity 相关
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...