![Intel IXP45X Developer'S Manual Download Page 884](http://html1.mh-extra.com/html/intel/ixp45x/ixp45x_developers-manual_2073092884.webp)
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
884
Order Number: 306262-004US
receiving each byte from the serial bus. Before receiving the last byte, software must
set the Ack/Nack Control bit to Nack. Nack is then sent after the next byte is received
to indicate the last byte.
In slave mode, the I
2
C unit automatically acknowledges its own slave address,
independent of the Ack/Nack bit setting in the ICR. As a slave-receiver, an Ack
response is automatically given to a data byte, independent of the Ack/Nack bit setting
in the ICR. The I
2
C unit sends the Ack value after receiving the eighth data bit of the
byte.
In slave-transmit mode, receiving a Nack from the master indicates the last byte is
transferred. The master then sends either a STOP or repeated START. The ISR’s unit
busy bit (2) will remain set until a STOP or repeated START is received.
21.5.4
Arbitration
Arbitration on the I
2
C bus is required due to the multi-master capabilities of the I
2
C
bus. Arbitration is used when two or more masters simultaneously generate a START
condition within the minimum I
2
C hold time of the START condition.
Arbitration can continue for a long period. If the address bit and the R/W# are the
same, the arbitration is then handled by the logic level of the data that is being driven.
Due to the wired-AND nature of the I
2
C bus, no data is lost if both (or all) masters are
outputting the same bus states. If the address, the R/W# bit, or the data are different,
the master which outputted the high state (master’s data will be different from SDA)
will lose arbitration and shut its data drivers off. When losing arbitration, the I
2
C Bus
Interface Unit will shut off the SDA or SCL drivers for the remainder of the byte
transfer, set the Arbitration Loss Detected bit, then return to idle (Slave-Receive)
mode.
21.5.4.1
SCL Arbitration
Each master on the I
2
C bus generates its own clock on the SCL line for data transfers.
With masters generating their own clocks, clocks with different frequencies may be
connected to the SCL line. Since data is valid when the clock is in the high period, a
defined clock synchronization procedure is needed during bit-by-bit arbitration.
Clock synchronization is accomplished by using the wired-AND connection of the I
2
C
interfaces to the SCL line. When a master’s clock transitions from high to low, this
causes the master to hold down the SCL line for its associated period (see
The low to high transition of the clock may not change when another master has not
completed its period. Therefore, the master with the longest low period holds down the
Figure 195. Acknowledge on the I
2
C Bus
B4260-01
1
2-7
8
9
SCL from
Master
Data Output
by Receiver
Data Output
by Transmitter
Clock Pulse
for Acknowledge
SDA released
SDA pulled low
by Receiver (ACK)
Start Condition
∼∼
∼∼
∼∼
∼∼
(SDA)
(SDA)