SCPA069 July   2024 TCA4307

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1What is a Stuck Bus?
  5. 2How can a Stuck Bus Occur?
  6. 3Crosstalk
  7. 4EMI
  8. 5Hot Insertion
  9. 6Resolving a Stuck Bus
  10. 7Conclusion
  11. 8References

What is a Stuck Bus?

An I2C stuck bus is when the SDA line gets held low indefinitely while the SCL line is high. This presents a problem because typically there are multiple I2C devices on the bus and if the SDA line were to get stuck low, then I2C communication can no longer be possible. In this situation the I2C controller cannot issue a start or stop condition because the I2C controller cannot control the SDA line. In the worst case scenario, even the processor can get stuck in a state where the processor is waiting on the SDA line to go high. This can result in the entire system or end equipment getting stuck because the processor is no longer executing any other lines of code since the processor is waiting indefinitely. This document can focus on this specific type of I2C stuck bus since there are methods to try to resolve this kind of stuck bus.

There is also another type of I2C stuck bus event in which the SCL line can get stuck low. Generally the only device on the I2C bus that can control the SCL line is the I2C controller which issues the SCL pulses. However there are some I2C target devices which can execute clock stretching and in rare cases can potentially get the clock stuck low. In these cases, the only recovery method can be a reset or power cycle of the device sticking the bus low.