一文搞懂I2C潜在问题及解决方案
2.1 I2C波形质量影响因素分析链路结构I2C总线的优势在于可以仅通过SCL和SDA两条线连接主设备和多个不同的从设备包含IO拓展/传感器/EEPROM/ADDA输入缓冲器对输入的数据进行读操作占用总线时通过下拉到GND的FET来传递数据释放总线时通过上拉到电源的电阻提供高电平LOGIC通过激活FET短接到地从而传递传递“0”从图中可知由高变低的过程是MOS负载电容的放电过程因此下降沿的时间受MOS内阻和负载电容影响另外芯片灌电流的大小约束了上拉电阻的最小值LOGIC通过关断FET释放总线通过上拉电阻将电平拉高从图中可知由低变高的过程是上拉电阻和负载电容的充电过程因此上升沿的时间主要受上拉电阻和负载电容的影响而最缓上升沿的时间决定了上拉电阻的最大值2.2 I2C波形质量影响因素分析2.1.1 TX驱动能力通过扫描同一芯片的不同驱动能力驱动能力对信号的直2.1.2 TX匹配电阻TX匹配与驱动能力原理基本一致通过仿真在驱动能力很强情况下调整匹配电阻获取理想的接收波形2.1.4不同拓扑结构小结1对于多负载结构综合考虑可实现性和信号质量建议选择菊花链结构注意尽量缩短各分支长度当到末端负载的时延TD0.2*TR时菊花链靠近源端的台阶/回勾可以忽略如果不能满足该要求则可以通过末端采用戴维宁端接方式注意该端接方式可能回出现高低电平摆幅缩小的情况2如果受布局限制需要采用星型拓扑注意各分支长度做等长处理如果不能做等长处理则需要在分支处加串阻调节上升沿上的台阶/回勾2.1.5 I2C上拉电阻⭐上拉电阻计算VOL/Cb/Tr决定了上拉电阻的取值范围上拉电阻越小上升沿越陡支持的速率越高但是相应的灌电流越大芯片功耗越大⭐不同模式下上拉电阻阻值选取对信号质量影响根据计算方法VDD为1.8V且负载电容按照100PF最大场景下:标准和快速模式Rup(min)0.48KohmRup(max)300ns/(0.8473*100pf)3.2Kohm高速模式Rup(min)0.48KohmRup(max)150ns/(0.8473*100pf)1.6Kohm负载电容100PF场景下扫描上拉电阻1~5Kohm;标准模式 100kHZ快速模式400kHZ高速模式 1.7MHZ高速模式 3.4MHZ结论1上拉电阻取值不匹配会导致的问题、⭕阻值过大接收端Tr超标⭕阻值过小VOL超VOLmax要求2异常波形的具体表现⭕速率较低时表现为波形上升沿或者下降沿缓慢速率较高的情况下甚至会出现三角波的情况⭕低电平过高2.1.6 I2C负载电容⭐I2C协议⭐不同模式下负载电容对信号质量影响标准模式/快速模式下要求VOLmax1.8*0.20.36V;负载电容最大不超过400PFRup(min)1.8-0.36/3mA0.48Kohm负载电容扫描标准模式 100kHZ快速模式400kHZ高速模式 1.7MHZ高速模式 3.4MHZ结论1负载电容包含走线电容封装电容C_COMP过大会导致的问题、⭕接收端Tr/Tf超标⭕VIL/VIH不满足要求⭕建立保持时间不满足要求2异常波形的具体表现⭕速率较低时表现为波形上升沿或者下降沿缓慢⭕速率较高的情况下甚至会出现三角波的情况2.3 I2C时序1SCL一直是主设备控制SDA依照数据传送方向读数据由从设备控制SDA写数据由主设备控制SDA2开始位和停止位只能由主设备发送3地址的8位发送完与地址匹配的从设备必须进行应答否则主设备就放弃发送数据而是发送停止位4写数据的时候主设备发送完8位数据后从设备如果还有能力接收那么就需要发送应答ACK0如果接收能力超限那么就需要回答NACK主设备如果一定时间没有收到应答或者收到NACK1就不会继续再发送数据而是直接发送结束位5写数据的时候如果主设备速率过快从设备不能匹配其速度从设备可以拉低SCL阻止主设备继续发送数据6SDA线上的数据必须在时钟电平为高时保持稳定因为SCL为高时候SDA上的跳变沿将别当作控制指令START/STOPWrite数据传输方向为Master To Slave主机发送比特帧①第0位也就是图中Start位此时SCL保持高电平SDA由高变低②第1~7位从设备地址位即向哪个从设备来写数据与相应从设备建立连接③第8位读/写标志位高电平则通知从设备它要读数据低电平则表示它要写数据④第9位从设备应答位低电平有效⑤第10~17位发送8位数据⑥第18位从设备应答位⑦第19位停止位SCL保持高电平SDA从低变高Read数据传输方向为 Slave To Master1主机发送START;2主机发送需要读取的从设备地址3主机发送读写标志位“0”4从设备发送应答位5主机发送需要读取寄存器地址6从设备发送应答位7主机发送START;8主机发送需要读取的从设备地址9主机发送读写标志位“1”10从设备发送应答位11从设备发送数据从设备发送数据12主设备发送应答位13从设备发送数据14主设备发送应答位15从设备发送数据16主设备发送NACK17主设备发送Stop---------------------------------------------------------------------------------------------------------------------个人理解仅供参考如有不严谨请多多指教