
UM10375
All information provided in this document is subject to legal disclaimers.
© NXP B.V. 2011. All rights reserved.
User manual
Rev. 3 — 14 June 2011
222 of 368
NXP Semiconductors
UM10375
Chapter 13: LPC13xx I2C-bus controller
13.10.2 Address Registers, I2ADDR0 to I2ADDR3
These registers may be loaded with the 7-bit slave address (7 most significant bits) to
which the I
2
C block will respond when programmed as a slave transmitter or receiver. The
LSB (GC) is used to enable General Call address (0x00) recognition. When multiple slave
addresses are enabled, the actual address received may be read from the I2DAT register
at the state where the own slave address has been received.
13.10.3 Address mask registers, I2MASK0 to I2MASK3
The four mask registers each contain seven active bits (7:1). Any bit in these registers
which is set to ‘1’ will cause an automatic compare on the corresponding bit of the
received address when it is compared to the I2ADDRn register associated with that mask
register. In other words, bits in an I2ADDRn register which are masked are not taken into
account in determining an address match.
If the I2ADDRn bit 0 (GC enable bit) is as set and bits(7:1) are all zeroes, then the part will
respond to a received address = “0000000” regardless of the state of the associated mask
register.
When an address-match interrupt occurs, the processor will have to read the data register
(I2DAT) to determine what the received address was that actually caused the match.
13.10.4 Comparator
The comparator compares the received 7-bit slave address with its own slave address (7
most significant bits in I2ADR). It also compares the first received 8-bit byte with the
General Call address (0x00). If an equality is found, the appropriate status bits are set and
an interrupt is requested.
13.10.5 Shift register, I2DAT
This 8-bit register contains a byte of serial data to be transmitted or a byte which has just
been received. Data in I2DAT is always shifted from right to left; the first bit to be
transmitted is the MSB (bit 7) and, after a byte has been received, the first bit of received
data is located at the MSB of I2DAT. While data is being shifted out, data on the bus is
simultaneously being shifted in; I2DAT always contains the last byte present on the bus.
Thus, in the event of lost arbitration, the transition from master transmitter to slave
receiver is made with the correct data in I2DAT.
13.10.6 Arbitration and synchronization logic
In the master transmitter mode, the arbitration logic checks that every transmitted logic 1
actually appears as a logic 1 on the I
2
C-bus. If another device on the bus overrules a logic
1 and pulls the SDA line low, arbitration is lost, and the I
2
C block immediately changes
from master transmitter to slave receiver. The I
2
C block will continue to output clock
pulses (on SCL) until transmission of the current serial byte is complete.
Arbitration may also be lost in the master receiver mode. Loss of arbitration in this mode
can only occur while the I
2
C block is returning a “not acknowledge: (logic 1) to the bus.
Arbitration is lost when another device on the bus pulls this signal low. Since this can
occur only at the end of a serial byte, the I
2
C block generates no further clock pulses.
shows the arbitration procedure.