I2c作为最常见的板载通信之一,他只需要两根线,时钟线和数据线,这些线路允许多个设备通过共享连接建立通信,但i2c也存在着一些问题,本文将探讨关于i2c信号问题,以及如何通过波形分析对其调试优化。

1.i2c常见问题

上升时间过长,上升缓慢;

串扰,包括scl线上的假边缘。

高于预期的低电平输出电压(VOL。

总线竞争和大下冲。

上述问题可能导致i2c通信故障和设备故障。因此了解这些问题的来源并采取适当的调试方式,可以帮助在使用i2c时查明通信问题。

上升时间过长

I2c协议规定了所使用的最大时钟频率的最大允许上升时间,标准模式(100kbps)和快速模式(400kbps)允许的上升时间分别为1000ns和300ns。

影响

当上升时间太长,就会抢占高周期(持续高电平)的有效时间,可能导致信号在时间上从未达到高电平输入电压(VIH)的阈值。

一些i2c设备是边缘速率触发的,需要足够快的转换速率来检测上升脉冲,缓慢的上升时间可能会影响上升沿的检测。

解决方法

影响上升时间的直接因素是这些电容和上拉电阻,关于上升时间的问题通常可以使用更强的上拉电阻(阻值更低的,有更大的上拉电流)来解决。

串扰

串扰通常在sda数据线上可见,来源通常是scl或sda线上快速上升/下降产生的高频信号耦合到sda和scl走线之间的对位电容上,耦合电容带来的耦合额电压叠加到自身,拔高电平造成小尖峰毛刺。

带来的影响

若总线上有带上升时间加速器的缓冲器,sda/scl上的串扰可能会带来问题。具有上升时间加速器的器件可以在高于地电平输入电压(vil)的阈值上升沿上触发。

会使scl为从设备生成错误的上升沿,并可能导致从设备状态机故障,出现错位u数据,并可能导致总线出现卡滞。

解决办法

可以在总线上添加额外的电容,但i2c规定了最大电容规值,因此可添加的电容比较有限。

故解决该问题的最佳办法是在scl和sda线上放置小阻值串联电阻(10欧姆),并最小化sda和scl走线之间的对位总线电容。

VOL 过高

一些I2C从设备具有若下拉FET,容易产生高Vol。

选择太强的上拉电阻(阻值太小)也会导致VOL高于VIL,使总线处于未知状态。

影响

较高的VOL会产生从/主设备将信号预处理为逻辑低的问题。

下冲

除了下降时间过快,当线路上存在大量寄生电感时,可能会出现比较大的下冲(来自寄生电感的反射)。

这种情况在电缆传输中较为常见,但是偶尔也会出现在pcb走线中。

带来的影响

若下冲足够大,可能会违反引脚上允许的绝对最大电压值,并导致设备故障。

如何解决?

在出现下冲情况时,若下降时间不能减慢到以放置下冲发生(串联小电阻),并且不能进一步优化最小寄生电感,这时候需要使用钳位二极管来最小化下冲。

总结

对于i2c的信号完整性问题,比如高于预期VOL电压,串扰,上升时间缓慢等,通常会导致i2c总线上不会出现应答信号,很容易被发现。

需要注意的是那些不会立即导致失效的隐形问题,此类问题可能是总线上的意外争用或大的下冲导致的,使设备随时间的推移出现故障。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐