一文搞懂I2C潜在问题及解决方案(下篇)

📅 2026/7/1 1:52:12
一文搞懂I2C潜在问题及解决方案(下篇)
趁热打铁吧毕竟下次心血来潮想要写点什么也是很难控接着上一篇留下问题继续聊聊I2C的那些小事首先说说测试中典型的信号问题及解决方案1上升边沿出现过冲如图●问题产生原因a. 源端匹配电阻阻值选取不合适;b. 源端驱动能力太强●对应解决方案方法1预留源端串联电阻出现过冲时一般需要调大电阻方法2软件配置驱动强度减小驱动强度等级2低电平过高●问题产生原因a. 上拉电阻取值太小;●对应解决方案方法1调大上拉电阻阻值但调大的同时需要关注上升沿时间可能会因为过缓而超过芯片手册要求方法2另外源端串阻和驱动能力也会一定程度影响输出低电但上拉电阻的调整对该现象改善最明显3上升沿过缓不满足时序要求●问题产生原因1a. 负载电容包含走线电容封装电容C_COMP过大;●对应解决方案1方法1检视路径是否有多余的电容器件方法2尽量缩短路径走线长度方法3减小上拉电阻减小上拉电阻的同时注意低电平是否满足要求●问题产生原因2a. 上拉电阻过大;●对应解决方案2方法1在满足VOL的基础上逐步减小电阻值注意满足VOLmax4下降沿过缓不满足时序要求●问题产生原因1a. 负载电容过大负载电容包含走线电容封装电容C_COMP;●对应解决方案1方法1检视路径是否有多余的电容器件方法2尽量缩短路径走线长度方法3增大驱动强度等级●问题产生原因2a. 驱动强度等级太低导致下降边沿太缓慢;●对应解决方案2方法1增大驱动强度5边沿回勾/台阶●问题产生原因1a. 测试点位置距离接收端传输线有一段传输线;●对应解决方案1方法1测试点位置尽量靠近接收端测试点到末端的TD0.2TR●问题产生原因2a. 菊花链结构后端负载反射回源端的信号叠加到信号上升沿上;●对应解决方案2方法1保证最末端的负载传输时延TD0.2*TR方法2采用戴维南端接注意高低电压摆幅能否满足要求6地址发送后接收到NACK●问题产生原因a. 主设备发送地址错误b. 从设备地址配置错误c.多个从设备地址冲突;7SCL或者SDA一直保持低电平●问题产生原因a. 上拉到电源的电阻路径上有断路8SCL或者SDA一直保持高电平●问题产生原因a. 初始化失败b. 引脚配置是否在IC指定引脚c. 时钟源未启动;9毛刺/半高电平●问题产生原因a. 集中出现在ACK附近主要原因为SDA控制者的改变毛刺的宽度为Tcontrol-Trelease;注意只要毛刺或者高电平出现的位置不出现在SCL高电平区域就不会对通信造成影响●对应解决方案方法1保证主从设备支持频率匹配方法2增大SCL保持低电平的时间其次简单说说设计中的注意事项1I2C多负载情况下拓扑是否为菊花链拓扑且各分支长度尽量短2SCL信号源端是否就近放置预留串阻SDA信号为双向传输所有源端是否预留串阻3SCL和SDA总线长度是否满足要求(1.8V/2.2Kohm HS模式)10PF*Nmasterslaver器件个数3PF*传输线长度)64PF;4SCL换层信号孔旁边增加伴随地过孔---------------------------------------------------------------------------------------------------------------------个人理解仅供参考如有不严谨请多多指教原文链接一文搞懂I2C潜在问题及解决方案下篇