UM10850
All information provided in this document is subject to legal disclaimers.
© NXP B.V. 2016. All rights reserved.
User manual
Rev. 2.4 — 13 September 2016
330 of 464
NXP Semiconductors
UM10850
Chapter 23: LPC5410x I2C-bus interfaces (I2C0/1/2)
The I
2
C interface supports Standard-mode, Fast-mode, and Fast-mode Plus with the
same software sequence, which also supports SMBus. High-speed mode is intrinsically
incompatible with SMBus due to conflicting requirements and limitations for clock
stretching, and therefore requires a slightly different software sequence.
23.7.1.2.1
High-speed mode support
High-speed mode requires different pin filtering, somewhat different timing, and a different
drive strength on SCL for the master function. The changes needed for the handling of the
acknowledge bit mean that SMBus cannot be supported when the I
2
C is configured to be
HS capable. This limitation is intrinsic to the SMBus and High-speed I
2
C specifications.
Because of the timing of changes to pin drive strength and filtering, the I
2
C block is
designed to directly control those pad characteristics when configured to be HS capable.
The I
2
C also recognizes HS master codes and responds to programmed addresses when
HS capable.
For software consistency, the changes required for handling of acknowledge and address
recognition, and which affect when interrupts occur, are always in effect when the I
2
C is
configured to be HS capable. This means that software does not need to know if a
particular transfer is actually in HS mode or not.
23.7.1.2.2
Clock stretching
The I
2
C interface automatically stretches the clock when it does not have sufficient
information on how to proceed, i.e. software has not supplied data and/or instructions to
generate a start or stop. In principle, at least, I
2
C can allow the clock to be stretched by
any bus participant at any time that SCL is low, in SM, FM, and MF+ modes.
In practice, the I2C interface described here may stretch SCL at the following times, in
SM, FM, and MF+ modes:
•
As a Slave:
–
after an address is received that complies with at least one slave address (before
the address is acknowledged)
–
as a slave receiver, after each data byte received (software then acknowledges the
data)
–
as a slave transmitter, after each data byte is sent and the matching acknowledge
is received from the master
•
As a master:
–
after each address is sent and the acknowledge bit has been received
–
as a master receiver, after each after each data byte is received (software then
acknowledges the data)
–
as a master transmitter, after each data byte is sent and the matching acknowledge
bit has been received from the slave
In HS mode:
•
As a Slave (only slave functions in HS mode are supported on this device)
–
as a slave receiver, after each data byte is received and automatically
acknowledged