本帖最后由 isdz 于 2019-5-27 11:54 编辑 有些单片机有斜率限制器,这个功能可以使得SCL和SDA上的脉冲的上升沿和下降沿的斜率比较小,使得波形的边沿震荡小,避免线间串扰。比如AVR单片机的手册上有提到。但是stm32f103单片手册中只提到上升沿时间可以调整,下降沿没有提到,经过示波器监测波形,也发现stm32的I2C的下降沿确实没有这个斜率限制器。这在I2C长线传输时会造成问题(我用的线长达到40CM) 下图是AVR单片机手册中提到的 下图是示波器监测AVR单片机I2C的波形,蓝色是SDA。黄色是SCL,可以看到波形的斜率没有这么大,上升沿和下降沿的时间大概是120nm. 下图是stm32单片机的手册中关于I2C的上升沿时间寄存器的描述 下边两张图分别是上升沿和下降沿的波形图,可以看到上升沿还好,下降沿的时间只有10几个纳秒,而且形成很严重的振荡,有时会造成通信故障。 请st公司的技术支持人员和各位大侠指点迷津,多谢多谢! |
根据示波器所显示的
一,两端都加阻值一样的上拉电阻
二,上拉电阻的阻值尽可能低(两端并联后的阻值大慨470R)
三, 在连接线串一几十欧的电阻, 以减低线的Q值。
这三条都做了, 应该就可以解决你的问题了