- 采样窗口的选择:
不要在SCL下降沿后立刻采样SDA信号。 I2C总线经常用于可插卸外设。其导线长度可从几厘米到几米。长导线增加了总线的电容,导致信号改变时间缓慢,SCL下降后立刻采样,SDA的信号可能在短导线时已经稳定,而长导线时SDA还在冲放电的不稳定阶段,导致采样信号错误。
采样点应该选在SDA稳定的中心点,这样留给总线充电的时间比较充裕。 - 提高抗干扰能力:
实际工业高辐射环境下,不排除EMC做的不好,IIC总线收到其他信号的影响,出现毛刺。如果毛刺出现在SDA的采样点,便会出现采样错误。为了在毛刺干扰下仍然可以采样成功,应该不只采样一个点,而是参考debouncing,采样多个点,当多个点的值一致时,或者进行毛刺判断,采样数据才会被取用。
例如,采样五个点,“11111” 才会被视为是SDA线上的一个高电位,“00000”反之。
毛刺判断,采样五个点,有四个一就可以视为高电位,例如“11101” 视为有干扰情况下的高电位。“00100”反之。 - 降低IIC自身的电磁辐射:
非常陡的电平变化会引起强的电磁辐射(EMI), 所以IIC电平变化的原则是在满足Timing的前提下尽可能降低电平变化的速度,使电平变化曲线变缓。
达到这一目的有两点需要注意。 第一是选择合适的上拉电阻。第二是管脚约束,不要使用Vivado默认的drive strength 和 slew rate值。从最低的值开始调试,使用满足Timing的时最低的drive strenth 和 slew rate
关于FPGA实现I2C总线时提高可靠性的总结
最新推荐文章于 2024-03-09 16:45:05 发布