1
1
8
8
1
8
1
1
S
Data
ACK
P
Data
Data
ACK
ACK
I2C Module Operation
1379
SPNU503C – March 2018
Copyright © 2018, Texas Instruments Incorporated
Inter-Integrated Circuit (I2C) Module
27.2.5.4 Free Data Format
In this format (
), the first byte after a START condition is a data byte. The ACK bit is inserted
after each byte, followed by another 8 bits of data. No address or data direction bit is sent. Therefore, the
transmitter and receiver must both support the free data format. The direction of data transmission
(transmit or receive) remains constant throughout the transfer.
To select the free data format, write a 1 to the free data format (FDF) bit of the I2CMDR. The free data
format is not supported in the digital loop back mode.
Figure 27-10. I2C Module in Free Data Format
27.2.6 NACK Bit Generation
When the I2C module is a receiver (master or slave), it can acknowledge or ignore bits sent by the
transmitter. To ignore any new bits, the I2C module must send a no-acknowledge (NACK) bit during the
acknowledge cycle on the bus.
summarizes the various ways a NACK can be generated.
Table 27-1. Ways to Generate a NACK Bit
I2C Module Condition
Basic NACK Bit Generation Options
Additional Option
Slave receiver mode
Disable data transfers (STT = 0)
Set the NACKMOD bit before the rising
edge of the last data bit you intend to
receive.
Allow an overrun condition (RSFULL = 1)
Reset the module (IRS = 0)
Master receiver mode and repeat
mode (RM = 1)
Generate a STOP condition (STP = 1)
Set the NACKMOD bit before the rising
edge of the last data bit you intend to
receive.
Reset the module (IRS = 0)
Master receiver mode with non-repeat
mode (RM = 0)
If STP = 1, allow the internal data counter to
count down to 0 and thus force a STOP
condition.
Set the NACKMOD bit before the rising
edge of the last data bit you intend to
receive.
If STP = 0, make STP = 1 to generate a
STOP condition.
Reset the module (IRS = 0)
In some applications, the slave cannot generate the ACK signal. If the IGNACK bit is set in the I2CEMDR
register, the resulting NACK will be ignored and the I2C block will continue the data transfer.