
DR
AFT
DR
AFT
DRAFT
DR
D
RAFT
DRAFT
DRA
FT DRAF
D
RAFT DRAFT DRAFT DRAFT DRAFT D
DRAFT
D
RAFT DRA
FT DRAFT DRAFT DRAFT DRA
UM10360_0
© NXP B.V. 2009. All rights reserved.
User manual
Rev. 00.06 — 5 June 2009
419 of 808
NXP Semiconductors
UM10360
Chapter 19: LPC17xx I2C0/1/2 interface
8.5.1 Interrupt in Monitor mode
All interrupts will occur as normal when the module is in monitor mode. This means that
the first interrupt will occur when an address-match is detected (any address received if
the MATCH_ALL bit is set, otherwise an address matching one of the four address
registers).
Subsequent to an address-match detection, interrupts will be generated after each data
byte is received for a slave-write transfer, or after each byte that the module believes it
has transmitted for a slave-read transfer. In this second case, the data register will actually
contain data transmitted by some other slave on the bus which was actually addressed by
the master.
Following all of these interrupts, the processor may read the data register to see what was
actually transmitted on the bus.
8.5.2 Loss of arbitration in Monitor mode
In monitor mode, the I
2
C module will not be able to respond to a request for information by
the bus master or issue an ACK. Some other slave on the bus will respond instead.
Software should be aware of the fact that the module is in monitor mode and should not
respond to any loss of arbitration state that is detected.
8.6 I
2
C Data buffer register (I2DATA_BUFFER: I
2
C0, I2CDATA_BUFFER -
0x4001 C02C; I
2
C1, I2C1DATA_BUFFER- 0x4005 C02C; I
2
C2,
I2C2DATA_BUFFER- 0x400A 002C)
In monitor mode, the I
2
C module may lose the ability to stretch the clock if the ENA_SCL
bit is not set. This means that the processor will have a limited amount of time to read the
contents of the data received on the bus. If the processor reads the I2DAT shift register, as
it ordinarily would, it could have only one bit-time to respond to the interrupt before the
received data is overwritten by new data.
To give the processor more time to respond, a new 8-bit, read-only I2DATA_BUFFER
register will be added. The contents of the 8 MSBs of the I2DAT shift register will be
transferred to the I2DATA_BUFFER automatically after every 9 bits (8 bits of data plus
ACK or NACK) has been received on the bus. This means that the processor will have 9
bit transmission times to respond to the interrupt and read the data before it is overwritten.
The processor will still have the ability to read I2DAT directly, as usual, and the behavior of
I2DAT will not be altered in any way.
Although the I2DATA_BUFFER register is primarily intended for use in monitor mode with
the ENA_SCL bit = ‘0’, it will be available for reading at any time under any mode of
operation.
Table 369. I
2
C Data buffer register (I2DATA_BUFFER: I
2
C0, I2CDATA_BUFFER -
0x4001 C02C; I
2
C1, I2C1DATA_BUFFER- 0x4005 C02C; I
2
C2, I2C2DATA_BUFFER-
0x400A 002C) bit description
Bit Symbol
Description
Reset value
7:0 Data
This register holds contents of the 8 MSBs of the I2DAT shift
register.
0