1 i2c master write (slave read), 2 i2c loopback testing, 3 i2c master read (slave write) – Motorola MPC8260 User Manual
Page 946
34-4
MPC8260 PowerQUICC II UserÕs Manual
MOTOROLA
Part IV. Communications Processor Module
34.3.1 I
2
C Master Write (Slave Read)
If the MPC8260 is the master, prepare the transmit buffers and BDs before initiating a write.
Initialize the Þrst transmit data byte with the slave address and write request (R/W = 0).
If the MPC8260 is the slave target of the write, prepare receive buffers and BDs to await
the masterÕs request. Figure 34-4 shows the timing for a master write.
Figure 34-4. I
2
C Master Write Timing
A master write occurs as follows:
1. The master core sets I2COM[STR]. The transfer starts when the SDMA channel
loads the Tx FIFO with data and the I
2
C bus is not busy.
2. The I
2
C master generates a start conditionÑa high-to-low transition on SDA while
SCL is highÑand the transfer clock SCL pulses for each bit shifted out on SDA. If
the master transmitter detects a multiple-master collision (by sensing a Ф0Х on SDA
while sending a Ф1Х), transmission stops and the channel reverts to slave mode. A
maskable interrupt is sent to the masterÕs core so software can try to retransmit later.
3. The slave acknowledges each byte and writes to its current receive buffer until a new
start or stop condition is detected.
4. After sending each byte, the master monitors the acknowledge indication. If the
slave receiver fails to acknowledge a byte, transmission stops and the master
generates a stop conditionÑa low-to-high transition on SDA while SCL is high.
34.3.2 I
2
C Loopback Testing
When in master mode, an I
2
C controller supports loopback operation for master write
requests. The master I
2
C controller simply issues a write request directed to its own address
(programmed in I2ADD). The masterÕs receiver monitors the transmission and reads the
transmitted data into its receive buffer. Loopback operation requires no special register
programming.
34.3.3 I
2
C Master Read (Slave Write)
Before initiating a master read with the MPC8260, prepare a transmit buffer of size n+1
bytes, where n is the number of bytes to be read from the slave. The Þrst transmit byte
should be initialized to the slave address with R/W = 1. The next n transmit bytes are used
strictly for timing and can be left uninitialized. ConÞgure suitable receive buffers and BDs
to receive the slaveÕs transmission.
SDA
Device Address
W
Data Byte
S
T
A
R
T
S
T
O
P
A
C
K
A
C
K
Note: Data and ACK are repeated n times.