I2C Bus recovery
• Typical case is when masters fails when doing a read operation in a slave
• SDA line is then non usable anymore because of the “Slave-Transmitter” mode.
• Methods to recover the SDA line are:
– Reset the slave device (assuming the device has a Reset pin)
– Use a bus recovery sequence to leave the “Slave-Transmitter” mode
• Bus recovery sequence is done as following:
1 -Send 9 clock pulses on SCL line
2 - Ask the master to keep SDA High until the “Slave-Transmitter” releases the SDA line to perform the ACK operation
3 -Keeping SDA High during the ACK means that the “Master-Receiver” does not acknowledge the previous byte receive
4 -The “Slave-Transmitter” then goes in an idle state
5 - The master then sends a STOP command initializing completely the bus