CH582的I2C问题,工作几十分钟会出错,我初步找到问题,但不明白所以

板子工作一段时间后i2c会卡死, 可以看到发送完第一个slave地址+W之后,ACK已经采样了,但是采样之后sda线上会有一个方波,这个方波是没有意义的,不会被scl上升沿采样到,但是这个方波有些时候会提前出现,出现的位置是第一个ACK采样的位置,这样总线就直接被认为NACK,I2C总线报错。我有点十分着急,所以询问一下大家,希望能得到回复。

无标题.png

用STM32的思路,用GPIO重写I2C可以解决问题这个问题,整个I2C的时序逻辑完全受控。


您好,CH582的硬件IIC查询方式的写法,可以参考下篇博客。

硬件IIC的7位从机地址查询方式读写参考代码 - JayWell - 博客园 (cnblogs.com)


谢谢,建议把这段代码放入官方例程包里面, I2C是最容易出问题的模块,相关的例程有些许简陋


只有登录才能回复,可以选择微信账号登录