I
2
C Controller
MPC885 PowerQUICC Family Reference Manual, Rev. 2
Freescale Semiconductor
32-5
3. After the first byte is shifted in, the slave compares the received data to its slave address. If the slave
is an MPC885, the address is programmed in its I
2
C address register (I2ADD).
— If a match is found and the slave is ready, then the slave acknowledges the request and begins
sending on the clock pulse after the acknowledge. If the slave is an MPC885, it is ready when
its transmit FIFO has been loaded by the SDMA channel (the transmit buffers and BDs have
been prepared and I2COM[STR] has been set).
— If a match is found but the slave is not ready, the read request is not acknowledged and the
transaction is aborted. If the slave is an MPC885, a maskable transmission error interrupt is
triggered to allow software to prepare data for transmission on the next try.
— If a mismatch occurs, the slave ignores the message and searches for a new start condition.
4. The master acknowledges each byte sent as long as an overrun does not occur. If the master
receiver fails to acknowledge a byte, the slave aborts transmission. For a slave MPC885, the abort
generates a maskable interrupt. A maskable interrupt is also issued after a complete buffer is sent
or after an error. If an underrun occurs, the MPC885 slave sends ones until a stop condition is
detected.
32.3.4
I
2
C Multi-Master Considerations
The I
2
C controller supports a multi-master configuration, in which the I
2
C controller must alternate
between master and slave modes. The I
2
C controller supports this by implementing I
2
C master arbitration
in hardware. However, due to the nature of the I
2
C bus and the implementation of the I
2
C controller, certain
software considerations must be made.
An MPC885 I
2
C controller attempting a master read request could simultaneously be targeted for an
external master write (slave read). Both operations trigger the controller’s I2CER[RXB] event, but only
one operation wins the bus arbitration. To determine which operation caused the interrupt, software must
verify that its transmit operation actually completed before assuming that the received data is the result of
its read operation.
Problems could also arise if the MPC885's I
2
C controller master sets up a transmit buffer and BD for a
write request, but then is the target of a read request from another master. Without software precautions,
the I
2
C controller responds to the other master with the transmit buffer originally intended for its own write
request. To avoid this situation, a higher-level handshake protocol must be used. For example, a master,
before reading a slave, writes the slave with a description of the requested data (which register should be
read, for example). This operation is typical with many I
2
C devices.
32.4
I
2
C Registers
The following sections describe the I
2
C registers.
Summary of Contents for PowerQUICC MPC870
Page 98: ...MPC885 PowerQUICC Family Reference Manual Rev 2 I 4 Freescale Semiconductor ...
Page 118: ...MPC885 Overview MPC885 PowerQUICC Family Reference Manual Rev 2 1 20 Freescale Semiconductor ...
Page 158: ...The MPC8xx Core MPC885 PowerQUICC Family Reference Manual Rev 2 3 18 Freescale Semiconductor ...
Page 288: ...MPC885 PowerQUICC Family Reference Manual Rev 2 III 4 Freescale Semiconductor ...
Page 554: ...MPC885 PowerQUICC Family Reference Manual Rev 2 V 6 Freescale Semiconductor ...
Page 1090: ...UTOPIA Interface MPC885 PowerQUICC Family Reference Manual Rev 2 43 8 Freescale Semiconductor ...
Page 1312: ...Byte Ordering MPC885 PowerQUICC Family Reference Manual Rev 2 A 8 Freescale Semiconductor ...
Page 1336: ...MPC885 PowerQUICC Family Reference Manual Rev 2 D 16 Freescale Semiconductor ...
Page 1358: ...MPC885 PowerQUICC Family Reference Manual Rev 2 D 38 Freescale Semiconductor ...
Page 1370: ...MPC880 MPC885 PowerQUICC Family Reference Manual Rev 2 E 4 Freescale Semiconductor ...
Page 1386: ...Revision History MPC885 PowerQUICC Family Reference Manual Rev 2 I 2 Freescale Semiconductor ...