Intel® PXA255 Processor Developer’s Manual 9-15

I2C Bus Interface Unit
Figure 9-11 through Figure9-13 are examples of I2C transactions and show the relationships between master and slave devices.Table 9-6. Slave Transactions
I2C Slave Action Mode of
Operation Definition
Slave-receive
(default mode) Slave-receive
only
•I
2C unit monitors all slave address transactions.
• ICR[IUE] bit must be set.
•I
2C unit monitors bus for START conditions. When a START is
detected, the interface reads the first 8 bits and compares the most
significant seven bits with the 7-bit ISAR and the general call
address (0x00). If there is a match, the I2C unit sends an ACK.
• If the first 8 bits are zero’s, this is a general call address. If the
ICR[GCD] bit is clear, both the ISR[GCAD] bit and the ISR[SAD] bit
will be set. See Section9.4.7.
• If the eighth bit of the first byte (R/nW bit) is low, the I2C unit stays in
slave-receive mode and the ISR[SAD] bit is cleared. If R/nW bit is
high, I2C unit switches to slave-transmit and ISR[SAD] bit is set.
Setting the Slave
Address
Detected bit
Slave-receive
Slave-transmit
• Indicates the interface has detected an I2C operation that addresses
the processor including the general call address. The processor can
distinguish an ISAR match from a General Call by reading the
ISR[GCAD] bit.
• An interrupt is signalled, if enabled, after the matching slave address
is received and acknowledged.
Read one byte of
I2C Data from the
IDBR
Slave-receive
only
• Data receive mode of I2C slave operation.
• Eight bits are read from the serial bus into the shift register. When a
full byte is received and the ACK/NAK bit is completed, the byte is
transferred from the shift register to the IDBR.
• Occurs when the ISR[IRF] bit is set and the ICR[TB] bit is clear. If
enabled, the IDBR Receive Full Interrupt is signalled to the CPU.
• Software reads one data byte from the IDBR. When the IDBR is
read, the processor writes the desired ICR[ACKNAK] bit and sets
the ICR[TB] bit. This causes the I2C unit to stop inserting wait states
and let the master transmitter write the next piece of information.
Transmit
Acknowledge to
master-
transmitter
Slave-receive
only
• As a slave-receiver, the I2C unit pulls the SDA line low to generate
the ACK pulse during the high SCL period.
• ICR[ACKNAK] bit controls the ACK data the I2C unit drives. See
Section9.4.3.
Write one byte of
I2C data to the
IDBR
Slave-transmit
only
• Data transmit mode of I2C slave operation.
• Occurs when ISR[ITE] bit is set and ICR[TB] bit is clear. If enabled,
the IDBR Transmit Empty Interrupt is signalled to the processor.
•The processor writes a data byte to IDBR and sets ICR[TB] bit to start
the transfer.
Wait for
Acknowledge
from master-
receiver
Slave-transmit
only
• As a slave-transmitter, the I2C unit releases the SDA line to allow the
master-receiver to pull the line low for the ACK.
•See Section9.4.3.