Arduino-AirMCU
Arduino-AirMCU copied to clipboard
SDA,SCL任一引脚低电平Busy会置位,例程里面总线如果一直Busy就是锁死,超时100ms复位IIC。
解决因干扰,连线虚接,两边设备复位不同步等原因导致IIC通讯失败并且总线锁死问题。提高IIC总线的健壮性。
谢谢,确定是因为busy导致的吗
谢谢,确定是因为busy导致的吗
首先,按照air001的规格书来说,sda或sdl低电平,busy就会置位。 iic主机读从机,会在从机发送最后一个字节数据时发送nack,再发送stop。 而air001的iic从机,在nack后,stop检测是不置位的。但是nack错误检测能置位。 这个是hal库对iic逻辑的处理错误,在另外一个库我也推了补丁。
其次,补丁修复后测试过程中,我复位uno主机,air从机,或者晃动杜邦线,也会造成总线锁死。 所以在从机用户代码里面,还是要定时去检测总线忙,超时一段时间就要复位下总线。