Intel® PXA26x Processor Family Developer’s Manual 9-13

Inter-Integrated Circuit Bus Interfac e Un i t
When the CPU needs to read data, the I2C unit transitions from slave-receive mode to master-transmit mode to transmit the start address, R/nW bit, and the ACK pulse. After it sends the ACK pulse, the I2C unit transitions to master-receive mode and waits to receive the read data from the slave device (see Figure9-8 on page 9-14).Multiple transactions can take place during an I2C operation. For example, transitioning from master-receive to master-transmit through a repeated start.
Read one byte
of I2C Data
from the IDBR
Master-receive
only
I2C master operation data receive mode.
Eight bits are read from the serial bus, collected in the shift register then
transferred to the IDBR after the ICR[ACKNAK] bit is read.
The CPU reads the IDBR when the ISR[IRF] bit is set and the ICR[TB] bit
is clear. If IDBR Receive Full Interrupt is enabled, it is signalled to the
CPU.
When the IDBR is read, if the ISR[ACKNAK] is clear (indicating ACK),
the processor writes the ICR[ACKNAK] bit and set the ICR[TB] bit to
initiate the next byte read.
If the ISR[ACKNAK] bit is set (indicating NAK), ICR[TB] bit is clear,
ICR[STOP] bit is set, and ISR[UB] bit is set, then the last data byte has
been read into the IDBR and the I2C unit is sending the STOP.
If the ISR[ACKNAK] bit is set (indicating NAK), ICR[TB] bit is clear, but
the ICR[STOP] bit is clear, then the CPU has two options: 1. set the
ICR[START] bit, write a new target address to the IDBR, and set the
ICR[TB] bit which will send a repeated start condition or 2. set the
ICR[MA] bit and leave the ICR[TB] bit clear which will send a STOP only.
Transmit
Acknowledge
to slave-
transmitter
Master-receive
only
As a master-receiver, the I2C unit generates the clock for the
acknowledge pulse. The I2C unit is also responsible for driving the SDA
line during the ACK cycle.
If the next data byte is to be the last transaction, the CPU will set the
ICR[ACKNAK] bit for NAK generation.
See Section9.4.3, “Inter-Integrated Circuit Acknowledge”.
Generate a
Repeated
START to
chain I2C
transactions
Master-transmit
Master-receive
If data chaining is desired, a repeated START condition is used instead
of a STOP condition.
This occurs after the last data byte of a transaction has been written to
the bus.
The CPU will write the next target slave address and the R/nW bit to the
IDBR, set the ICR[START] bit, and set the ICR[TB] bit.
See Section9.3.3, “Start and Stop Bus States”.
Generate a
STOP Master-transmit
Master-receive
Generated after the CPU writes the last data byte on the bus.
CPU generates a STOP condition by setting the ICR[STOP] bit.
See Section9.3.3, “Start and Stop Bus States”.
Table 9-5. Master Transactions (Sheet 2 of 2)
I2C Master
Action Mode of
Operation Definition