NXP Semiconductors | UM10301 |
| User Manual PCF85x3, PCA8565 and PCF2123, PCA2125 |
19.3 No communication via I2C-bus
When no communication with the RTC is possible, it is also not possible to set and read time. Normally the
If the bus gets stuck first it needs to be determined how exactly it is stuck. There are two “bus stuck scenarios”:
•SCL (clock) stuck low: There is nothing that can be done about this but to hard reset the device (remove power) because the
•SDA (data) stuck low, but clock ok: A start condition can’t be sent because this requires a high to low transition of SDA while SCL is high. SDA however is stuck low.
What will work is to send 9 clocks plus a STOP condition. The 9 clock pulses will clear the I2C state machine, thus causing the device to release the bus. This permits the master to send a STOP condition and now the I2C interface of the slave will have been reset. This works for all I2C compatible devices without exception.
According to the I2C specification there exists a
Sending the 9 clock pulses with SDA low may seem like sending a general call address since data is always zero for every clock pulse. The difference however is that no START condition could be sent first since SDA was already stuck low. Sending the 9 clock pulses is not the same as sending a general call address. If a device does require data from a general call address, it will acknowledge this address and behave as a slave receiver. The master does not actually know how many devices acknowledged if one or more devices respond. The second and following bytes will be acknowledged by every
In short, when the bus is stuck low due to SDA, the sequence to recover the bus is by sending 9 clock pulses plus STOP.
Remark: Only the PCF8593 includes a dedicated RESET input. When reset occurs only the
UM10301_1 |
| © NXP B.V. 2008. All rights reserved. |
User manual | Rev. 01 — 23 December 2008 | 49 of 52 |