浅谈I2C常见的问题
来源:互联网 发布:php 二维数组push元素 编辑:程序博客网 时间:2024/05/19 15:24
a.完全不能进行读写:
(1) 通信协议不正确:有很多的I2C设备,并不支持所有的I2C协议,同时也不是一个比较标准的I2C设备;软件的通信时序不正确。
(2)I2C设备地址不正确:有很多的I2C设备的地址是可以通过硬件设定的;也有器件资料提供的数据是错误的。
(3)I2C通信线上没有加上拉电阻:由于I2C的从设备的SDA,SCL的PIN是输出开漏的,所以必须加上拉电阻,同时根据I2C设备的数量上拉电阻的大小也会不同。从1K~10K以上,当然不能太大,也不能太小。
(4)I2C设备损坏:有时我们会经常遇到问题时总是认为我们自己在软件上是不是有问题,是不是电路上没有焊接好,实际上都不是,而是器件是坏的。
b.读写失败,不能正确的读写某个地址的数据:
(1)电路干扰:在I2C设备的电源入口处没有加滤波电路,一般入口处加10nF或 0.1uF电容;SDA,SCL线上干扰,没有滤波处理,线上串一几十ohm电阻,对地加几十pF电容;千万别小看这几颗小小的电容!
(2)通信时序:读写是有速度过快,例如在写24C02时,当你用一个字节的方式去写EEPROM时,如果速度过快,前面的数据是不会被写入的,具体的间隔时间没有测试过;由于某种原因,导致读写间过长,例如在通信过程中,被中断打断,同时中断时间过长。
(3)SDA,SCL的输入电平不一致:如果I2C设备既有3.3V也有5V的,上拉电阻最好不要同时接3.3V和5V两组,一定要根据实际情况选择一组。
(4)读写软件的方式的影响:在块读写时,起始的地址和数量是很重要的。例如块写24C02,如果我们想连续写A0页05H~16H地址,我们会发现16H的数据是没有被写入,00H的数据被改了(如果没有记错的话24C02是16字节循环的),原因是在连续读写的过程中,24C02的地址不是从05H自动的加1直到加到16H,而是05H->06H->...->15H->00H。
转载地址:http://hi.baidu.com/ubuntulj/blog/item/774172e520c3f0e4b3fb95cb.html
- 浅谈I2C常见的问题
- 浅谈I2C的使用吧
- 【浅谈递归(二)】常见递归问题的分析与解答
- 2410的I2C读写问题
- 有关i2c的问题总结
- I2C总线的仲裁问题
- i2c的时钟延展问题
- I2C总线的一般性问题
- i2c的时钟延展问题
- 抓i2c波形的问题
- i2c的时钟延展问题
- 浅谈常见软件的选择
- 浅谈I2C总线
- 浅谈I2c原理
- 浅谈I2C总线
- linux下用i2c-tools读写i2c器件的问题
- wince6下6410的I2C驱动问题
- I2C总线被拉低引起的问题
- 安卓真机运行自动化测试(selenium 2)
- 线程注入
- Ubuntu 装Firefox的Flash时软件中心卡住的解决办法
- c#连接sqlserver数据库
- ORACLE数据库安装的一些问题
- 浅谈I2C常见的问题
- PKU2115
- [no320.com]自己动手写一个phonegap/cordova里的each
- encodeURIComponent 的作用和encodeURI的区别
- Reference Web
- 查看linux版本信息的方法
- Html5实现拖动效果
- C# 检查文件夹和文件是否存在
- 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接