UM10413
All information provided in this document is subject to legal disclaimers.
© NXP B.V. 2011. All rights reserved.
User manual
Rev. 1 — 16 December 2011
142 of 268
NXP Semiconductors
UM10413
MPT612 User manual
is achieved by setting the STO flag while the STA flag is still set. No Stop condition is
transmitted. The I
2
C hardware behaves as if a Stop condition was received and is able to
transmit a Start condition. The STO flag is cleared by hardware (see
16.8.12 I
2
C-bus obstructed by a LOW level on SCL or SDA
If SDA or SCL is pulled LOW by an uncontrolled source, an I
2
C-bus hang-up occurs. If the
SCL line is obstructed (pulled LOW) by a device on the bus, no further serial transfer is
possible, and the I
2
C hardware cannot resolve this type of problem. If this occurs, the
problem must be resolved by the device that is pulling the SCL bus line LOW.
If the SDA line is obstructed by another device on the bus (for example, a slave device out
of bit synchronization), the problem can be solved by transmitting additional clock pulses
on the SCL line (see
). The I
2
C hardware transmits additional clock pulses when
the STA flag is set, but no Start condition can be generated because the SDA line is pulled
LOW while the I
2
C-bus is considered free. The I
2
C hardware attempts to generate a Start
condition after every two additional clock pulses on the SCL line. When the SDA line is
eventually released, a normal Start condition is transmitted, state 0x08 is entered, and the
serial transfer continues.
If a forced bus access occurs or a repeated Start condition is transmitted while SDA is
obstructed (pulled LOW), the I
2
C hardware performs the same action as described above.
In each case, state 0x08 is entered after a successful Start condition is transmitted and
normal serial transfer continues. Note that the CPU is not involved in solving these bus
hang-up problems.
16.8.13 Bus error
A bus error occurs when a Start or Stop condition is present at an illegal position in the
format frame. Examples of illegal positions are during the serial transfer of an address
byte, a data bit, or an acknowledge bit.
The I
2
C hardware only reacts to a bus error when it is involved in a serial transfer either as
a master or an addressed slave. If a bus error is detected, the I
2
C block immediately
switches to the not-addressed slave mode, releases the SDA and SCL lines, sets the
interrupt flag, and loads the status register with 0x00. This status code can be used to
vector to a state service routine which either attempts the aborted serial transfer again or
simply recovers from the error condition as shown in
.
Fig 39. Simultaneous repeated Start conditions from two masters
aaa-000602
OTHER MASTER
CONTINUES
DATA
P
S
SLA
A
A
S
W
SLA
28H
08H
other Master sends
repeated START
earlier
retry
S
18H
08H