Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors—I2C Bus Interface Unit
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
Developer’s Manual
August 2006
890
Order Number: 306262-004US
are examples of I
2
C transactions. These show the
relationships between master and slave devices.
Table 280.
Slave Transactions
I
2
C Slave
Action
Mode of
Operation
Definition
Slave-receive
(default mode)
Slave-receive
only
• I
2
C Bus Interface Unit monitors all slave address transactions.
• The I
2
C Bus Interface Unit Enable bit must be set.
• I
2
C Bus Interface Unit monitors bus for START conditions. When a
START is detected, the interface reads the first 8 bits and compares
the most significant 7 bits with the 7 bit I
2
C Slave Address Register
and the General Call address (00H). If there is a match, the I
2
C Bus
Interface Unit sends an Ack.
• If the first 8 bits are all zero’s, this is a general call address. If the
General Call Disable bit is clear, both the General Call Address
Detected bit and the Slave Address Detected bit in the ISR will be
set. See
“General Call Address” on page 891
• If the 8th bit of the first byte (R/W# bit) is low, the I
2
C Bus Interface
Unit stays in slave-receive mode and the Slave Address Detected bit
is cleared. If the R/W# bit is high, the I
2
C Bus Interface Unit
transitions to slave-transmit mode and the Slave Address Detected
bit is set.
Setting the Slave
Address Detected
bit
Slave-receive
Slave-transmit
• Indicates the interface has detected an I
2
C operation that addresses
the IXP45X/IXP46X network processors (this includes general call
address). The IXP45X/IXP46X network processors can distinguish an
ISAR match from a General Call by reading the General Call Address
Detected bit.
• An interrupt is signalled (if enabled) after the matching slave
address is received and acknowledged.
Read one byte of
I
2
C Data from the
IDBR
Slave-receive
only
• Data receive mode of I
2
C slave operation.
• Eight bits are read from the serial bus into the shift register. When a
full byte has been received and the Ack/Nack bit has completed, the
byte is transferred from the shift register to the IDBR.
• Occurs when the IDBR Receive Full bit in the ISR is set and the
Transfer Byte bit is clear. If enabled, the IDBR Receive Full Interrupt
is signalled to the
CPU
.
•
CPU
will read 1 data byte from the IDBR. When the IDBR is read,
the IXP45X/IXP46X network processors will write the desired Ack/
Nack Control bit and set the Transfer Byte bit. This causes the I
2
C
Bus Interface 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 I
2
C Bus Interface Unit is responsible for
pulling the SDA line low to generate the Ack pulse during the high
SCL period.
• The Ack/Nack Control bit controls the Ack data the I
2
C Bus Interface
Unit drives. See
.
Write one byte of
I
2
C data to the
IDBR
Slave-transmit
only
• Data transmit mode of I
2
C slave operation.
• Occurs when the IDBR Transmit Empty bit is set and the Transfer
Byte bit is clear. If enabled, the IDBR Transmit Empty Interrupt is
signalled to the IXP45X/IXP46X network processors.
• The IXP45X/IXP46X network processors
will write a data byte to the
IDBR and set the Transfer Byte bit to initiate the transfer.
Wait for
Acknowledge
from master-
receiver
Slave-transmit
only
• As a slave-transmitter, the I
2
C Bus Interface Unit is responsible for
releasing the SDA line to allow the master-receiver to pull the line
low for the Ack.
• See