Arduino-AirMCU icon indicating copy to clipboard operation
Arduino-AirMCU copied to clipboard

SDA,SCL任一引脚低电平Busy会置位,例程里面总线如果一直Busy就是锁死,超时100ms复位IIC。

Open wx85105157 opened this issue 1 year ago • 2 comments

解决因干扰,连线虚接,两边设备复位不同步等原因导致IIC通讯失败并且总线锁死问题。提高IIC总线的健壮性。

wx85105157 avatar Jan 07 '24 16:01 wx85105157

谢谢,确定是因为busy导致的吗

HalfSweet avatar Jan 08 '24 11:01 HalfSweet

谢谢,确定是因为busy导致的吗

首先,按照air001的规格书来说,sda或sdl低电平,busy就会置位。 iic主机读从机,会在从机发送最后一个字节数据时发送nack,再发送stop。 而air001的iic从机,在nack后,stop检测是不置位的。但是nack错误检测能置位。 这个是hal库对iic逻辑的处理错误,在另外一个库我也推了补丁。

其次,补丁修复后测试过程中,我复位uno主机,air从机,或者晃动杜邦线,也会造成总线锁死。 所以在从机用户代码里面,还是要定时去检测总线忙,超时一段时间就要复位下总线。

wx85105157 avatar Jan 09 '24 00:01 wx85105157