UM10503 All information provided in this document is subject to legal disclaimers. © NXP B.V. 2012. All rights reserved.User manual Rev. 1.3 — 6 July 2012 1145 of 1269NXP Semiconductors UM10503Chapter 43: LPC43xx I2C-bus interface43.10.6.4 I2 C-bus obstructed by a LOW level on SCL or SDAAn I2C-bus hang-up can occur if either the SDA or SCL line is held LOW by any device onthe bus. If the SCL line is obstructed (pulled LOW) by a device on the bus, no further serialtransfer is possible, and the problem must be resolved by the device that is pulling theSCL bus line LOW.Typically, the SDA line may be obstructed by another device on the bus that has becomeout of synchronization with the current bus master by either missing a clock, or by sensinga noise pulse as a clock. In this case, the problem can be solved by transmitting additionalclock pulses on the SCL line (see Figure 173). The I 2C interface does not include adedicated time-out timer to detect an obstructed bus, but this can be implemented usinganother timer in the system. When detected, software can force clocks (up to 9 may berequired) on SCL until SDA is released by the offending device. At that point, the slavemay still be out of synchronization, so a START should be generated to insure that all I 2 Cperipherals are synchronized.43.10.6.5 Bus errorA bus error occurs when a START or STOP condition is detected at an illegal position inthe format frame. Examples of illegal positions are during the serial transfer of an addressbyte, a data bit, or an acknowledge bit.The I2 C hardware only reacts to a bus error when it is involved in a serial transfer either asa master or an addressed slave. When a bus error is detected, the I 2C block immediatelyswitches to the not addressed slave mode, releases the SDA and SCL lines, sets theinterrupt flag, and loads the status register with 0x00. This status code may be used tovector to a state service routine which either attempts the aborted serial transfer again orsimply recovers from the error condition as shown in Table 1004.43.10.7 I2C state service routinesThis section provides examples of operations that must be performed by various I 2 C stateservice routines. This includes:• Initialization of the I 2C block after a Reset.• I2C Interrupt Service• The 26 state service routines providing support for all four I 2C operating modes.(1) Unsuccessful attempt to send a START condition.(2) SDA line is released.(3) Successful attempt to send a START condition. State 08H is entered.Fig 173. Recovering from a bus obstruction caused by a LOW level on SDASDA lineSCL line(1)(2)(1)(3)STA flagstartcondition