Fusion 878A
3.0 Electrical Interfaces
PCI Video Decoder
3.4 I
2
C Interface
100600B
Conexant
3-21
3.4 I
2
C Interface
The I
2
C bus is a two-wire serial interface. Serial clock and data lines, SCL, and
SDA transfer data between the bus master and the slave device. The I
2
C bus
within the Fusion 878A supports repeated starts, up to 396.8 kHz timing, and
multi-byte sequential transactions. The
I2CRATE
signal specifies either
99.2 kHz
or 396.8 kHz timing rate.
If the PCI clock runs at less than the maximum rate,
these rates will slow down proportionately. For details on the I
2
C register, see
0x110—I2C Data/Control Register
.
The relationship between SCL and SDA is decoded to provide both a start and
stop condition on the bus. To initiate a transfer on the I
2
C bus, the master must
transmit a start pulse to the slave device. This is accomplished by taking the SDA
line low while the SCL line is held high. The master should generate a start pulse
only at the beginning of the cycle, or after the transfer of a data byte to or from the
slave. To terminate a transfer, the master must take the SDA line high while the
SCL line is held high. The master may issue a stop pulse at any time during an
I
2
C cycle. Since the I
2
C bus interprets any transition on the SDA line during the
high phase of the SCL line as a start or stop pulse, care must be taken to ensure
that data is stable during the high phase of the clock. This is illustrated in
An I
2
C write transaction consists of sending a START signal, 2 or 3 bytes of
data (checking for a receiver acknowledge after each byte), and a STOP signal.
The write data is supplied from a 24-bit register with bytes I2CDB0, I2CDB1,
and I2CDB2. This 24-bit register is shifted left to provide data serially, with the
MSB as the first bit. An I
2
C write occurs when the R/W bit in the I2CDB0[0] is
set to a logical low. The system driver can write 2 or 3 bytes of data by selecting
the appropriate value for I2CW3BRA bit.
An I
2
C read transaction consists of sending a START signal, 1 byte of data
(checking for a receiver acknowledge), reading 1 data byte from the slave,
sending the master NACK, and sending the STOP signal. The data read is shifted
into the I2CDB2 register. An I
2
C read occurs when the R/W bit in the I2CDB0[0]
is set to a logical 1, illustrated in
.
When the read or write operation is completed, the Fusion 878A sends an
interrupt over the PCI bus to the host controller. The status bit RACK will
indicate if the operation completed successfully with the correct number of slave
acknowledges.
Figure 3-14. The Relationship Between SCL and SDA
Start
Stop
SDA
SCL
879A_045