推荐于 · TA获得超过696个赞
主控制器突然复位、或者I2C总线上存在干扰、或者电源异常等都可能导致I2C总线锁死
在I2C主设备进行读写操作的过程中,主设备在开始信号后控制SCL产生8個时钟脉冲然后拉低SCL信号为低电平,在这个时候从设备输出应答信号,将SDA信号拉为低电平 如果这个时候主设备异常复位SCL就会被释放為高电平。此时如果从设备没有复位,就会继续I2C的应答将SDA拉为低电平,直到SCL变为低电平才会结束应答信号。而对于I2C主设备来说复位后检测SCL和SDA信号,如果发现SDA信号为低电平则会认为I2C总线被占用,会一直等待SCL和SDA信号变为高电平这样,I2C主设备等待从设备释放SDA信号而哃时I2C从设备又在等待主设备将SCL信号拉低以释放应答信号,两者相互等待I2C总线进入一种死锁状态。
本回答被提问者和网友采纳
你对这个回答的评价是