我相信不少人有遇到I2C设备识别不到,或者概率性误码。
我相信大部分工程师的做法如下:
1.调整上拉电阻的大小,然后重新老化测试;
2.降低I2C速率,然后老化测试;
3.软件加入一定判断条件,将能剔除的误码剔除掉。
站在硬件角度来看:
第一点,盲目调整,没有调整依据。
第二点,降低I2C速率可能影响使用体验,例如触摸屏应用;降低I2C速率并不能保证就OK。
第三点,软件并不能完全剔除掉误码。
所以此文章推荐硬件接入做I2C的信号测试。下面列举了I2C的Standard-mode,Fast-mode,Fast-mode Plus,Hs-mode,Ultra Fast-mode各个模式信号的要求。
Standard-mode,Fast-mode,Fast-mode Plus:
Hs-mode
Ultra Fast-mode
从上可知,信号要求一般有电平大小、电平宽度、速率、上升下降时间、建立时间、保持时间。所以我们应该先保证自己板上的I2C信号符合标准要求后,再去做其他排查或者规避措施。
如下是我列出的Standard-mode,Fast-mode测试表,如下:
Standard-mode
Fast-mode
咋们只需要填写黄色部分,如信号名、电平以及测试结果,则可以自动得出是否测试通过。
当然也建议各位可以导入到公司的硬件测试中,很多公司都是有在做这个测试的。
测试表文件可以后台回复“硬件人-I2C测试表”获取。
推荐阅读:
IIC总线的硬件解析