i2c 驱动工作
来源:互联网 发布:vscode设置字体颜色 编辑:程序博客网 时间:2024/06/10 21:16
在新版芯片(fpga)上写驱动:
1. 新版芯片是否需要i2c slave?
单片机很少有i2c slave 模块的,我们的芯片上有,细问下来是为了debug,可以读cpu内部的寄存器来debug,但是最后这个module要不要拿掉再说。
注意:i2c的slave和master是两个module,之前以为是一个,然后设置一个状态位,0是master, 1就是slave。
这个和公司的spi不一样。为什么不一样,我觉得spi本身的协议只是负责传输数据,是传输命令地址还是数据需要上层用户自己实现。而I2c协议除了定义了传输时的timing,更上层如何读或写数据都定义了,所以i2c这个module比较大,实现了更多的协议,不像spi,设个状态位master和slave就切换了。
不过像spi flash这种,应该是flash本身按照spi指定了一套协议,需要按照这个协议去访问这个flash,这个就跟i2c从器件类似了。
2.所有的i2c peripheral 都是一样的I2c协议,都是发id和address,然后就可以读和写这个地址的数据。所有的i2c从器件都可以这样操作。
3.记住每个字节都有ack位(第九个脉冲),就算是16位的地址,也是分开发,第一个8个字节后就有一个ack位。
4写的波形,start-->id-->adrress-->data-->stop
read波形 start-->id-->adrress-->stop start-->id-->data-->stop 要start两次
5.burst write eeprom时,length太大会出错?
sccb的burst write时就是页写,长度不能超过页的大小,否则会出错。其实就是长度大的话,比如一页大小128个字节,写的长度是512,那写到129时,eeprom的地址不会自动加1,而是回到了这一页的开始,所以,出错就是把一开始的数据又给覆盖了。
BTW:eeprom的页写和字节写差不多,就是主器件不会在写完第一个字节后发送停止位。
6 eeprom可以指定不同的页吗?
可以, 有页地址
7.iic的restart mode
read 的时候有这种模式,正常是start-->id-->adrress-->stop start-->id-->data-->stop
restart模式少了第一个stop。
好处:快了一点点。
看材料:
ARM_2440_IIC总线接口_中文资料.pdf
- i2c 驱动工作
- I2C设备驱动(一)--工作原理
- i2c驱动--i2c总线接口
- i2c驱动
- I2C驱动
- I2C 驱动
- I2C驱动
- i2c驱动
- I2C驱动
- I2C驱动
- I2C驱动
- I2C驱动
- i2c驱动
- I2C驱动
- i2c驱动
- I2C驱动
- i2c驱动
- i2c驱动--驱动框架
- bug管理工具列举
- 笔记本清灰后组装后出现蓝屏,并不断的循环重启。
- Linux串口编程详解
- TCP/IP、Http、Socket的区别
- Muduo 多线程模型:一个 Sudoku 服务器演变
- i2c 驱动工作
- 关于spring 3.0.5的<mvc:resources> 标签的使用
- poj1811-模板题。大数分解+大质数测试(费马+rho)
- 注册WCF服务问题
- HDU 1160 FatMouse's Speed
- Windows系统下的TCP参数优化
- eBay开源了其大型、高速SQL-on-Hadoop数据库
- 从OOP的角度重看C++(四)——从程序中看OOP
- 算法--堆排序学习以及模板