一、原理(与参考完全一致)
确定该SDA和SCL两根线均通过上拉电阻上拉
二、电平问题(电平转换)
可参考引脚复用表格查看I2C总线的电平,总线电平与设备电平不匹配需做电平转换。常用mos转换电平电路如图所示
三、焊接问题(器件和焊接工艺)
检测上拉电阻、总线上的设备、连接器引脚、电平转换芯片是否虚焊
四、接口排查思路
1、电源(准确性和纹波):检测上拉电阻电压是否正常,设备供电电压是否正常,若电平不匹配且使用电平转换芯片查看电平转换芯片供电是否正常。
2、确认I2C设备复位信号是否处理妥当,有些I2C芯片在复位信号抬起过程中会锁存I2C总线的状态表示为I2C设备的设备地址,需要软件配置其复位信号抬起过程中的总线状态,同时须注意同一总线上的设备地址是否冲突。
3、测量在总线工作时SDA和SCL是否存在波形。
4、波形质量:若波形上升较缓,则上拉电阻较大,减小上拉电阻即可;若波形低电平不能到0V,则上拉电阻较小,增加上拉电阻即可。
5、测量I2C波形是否符合I2C通信协议。在空闲状态时SDA和SCL两线均处于上拉状态,总线的开始和终止都是由主机发起产生。开始条件:SCL线是高电平时,SDA线从高电平向低电平切换。终止条件:SCL线是高电平时,SDA线从低电平向高电平切换。
6、测量SCL时钟线频率是否与设备树中配置一致。
7、检测I2C设备是否正常工作,电平转换部分是否正常工作。
8、可通过I2C tool工具查看总线上是否挂载设备
i2cdetect -l //检测系统上有几组I2C
i2cdetect -r -y 2 //检测I2C第二组总线上的挂载的设备
五、PCB布局布线(PCB层叠问题)
总线拓扑图如下 
Pcb 布线时上拉电阻尽量放在源端。
注:若使用的I2C设备对于I2C的触发比较敏感,有细微的毛刺也会误触发,在同一路上的I2C设备插上后会影响较敏感的设备无法使用,可在I2C设备端加一个RC滤波电路,电容需要用pf级别的,且挂载该设备的总线尽量不要绕太远,时钟线最好进行包地处理。
|