就是NoACK(无应答),Busy(器件忙)和BusFault(总线错误)。 1.当STA+SLA+R/W后,如果9th BIT=1,则置位NoACK,表示被寻址的I2C器件不存在。 2.当正处于访问一个I2C设备的过程中,程序应置位Busy。即STA和STO之间Busy=1. 3.如果初始化I2C(释放总线)后,SDA=0和(或)SCL=0,程序应置位BusFault。 根据以上三个条件合理控制程序的流程,才是一个完整的I2C程序。 当出现BusFault标志时,如果只有SDA=0,问题可能出现在主接收模式下的从发送数据等于0,这是可以通过附加SCL脉冲解决。如果不能解锁,应检查其它原因;如果只有SCL=0,应检查总线是否是多主系统。 当然以上条件是建立在硬件设计没有错误,器件没有损坏前提下进行的。 |