Intel PXA26X User Manual
Intel® PXA26x Processor Family Developer’s Manual
9-13
Inter-Integrated Circuit Bus Interface Unit
When the CPU needs to read data, the I
2
C 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 I
pulse, the I
2
C unit transitions to master-receive mode and waits to receive the read data from the
slave device (see
).Multiple transactions can take place during an I
2
C
operation. For example, transitioning from master-receive to master-transmit through a repeated
start.
start.
Read one byte
of I
of I
2
C Data
from the IDBR
Master-receive
only
only
I
2
C 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.
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.
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.
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 I
ICR[STOP] bit is set, and ISR[UB] bit is set, then the last data byte has
been read into the IDBR and the I
2
C 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.
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
Acknowledge
to slave-
transmitter
Master-receive
only
only
As a master-receiver, the I
2
C unit generates the clock for the
acknowledge pulse. The I
2
C 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.
ICR[ACKNAK] bit for NAK generation.
Generate a
Repeated
START to
chain I
Repeated
START to
chain I
2
C
transactions
Master-transmit
Master-receive
If data chaining is desired, a repeated START condition is used instead
of a STOP condition.
of a STOP condition.
This occurs after the last data byte of a transaction has been written to
the bus.
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.
IDBR, set the ICR[START] bit, and set the ICR[TB] bit.
Generate a
STOP
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.
Table 9-5. Master Transactions (Sheet 2 of 2)
I
2
C Master
Action
Mode of
Operation
Definition