I2C Bus Interface Unit

Figure 9-7. Arbitration Procedure of Two Masters

Transmitter 1 Leaves Arbitration

Data 1 SDA

Data 1

Data 2

SDA

SCL

If the I2C unit loses arbitration as the address bits are transferred and it is not addressed by the address bits, the I2C unit resends the address when the I2C bus becomes free. A resend is possible because the IDBR and ICR registers are not overwritten when arbitration is lost.

If the I2C unit loses arbitration because another bus master addresses the processor as a slave device, the I2C unit switches to slave-receive mode and overwrites the original data in the I2C data buffer register. Software can clear the start and re-initiate the master transaction.

Note: Software must prevent the I2C unit from starting a transaction to its own slave address because such a transaction puts the I2C unit in an indeterminate state.

Arbitration has boundary conditions in case an arbitration process is interrupted by a repeated START or STOP condition transmitted on the I2C bus. To prevent errors, the I2C unit acts as a master if no arbitration takes place in the following circumstances:

Between a repeated START condition and a data bit

Between a data bit and a STOP condition

Between a repeated START condition and a STOP condition

These situations occur if different masters write identical data to the same target slave simultaneously and arbitration cannot be resolved after the first data byte transfer.

Note: Software ensures that arbitration is resolved quickly. For example, software can ensure that masters send unique data by requiring that each master transmit its I2C address as the first data byte of any transaction. When arbitration is resolved, the winning master sends a restart and begins a valid data transfer. The slave discards the master’s address and use the other data.

Intel® PXA255 Processor Developer’s Manual

9-11

Page 341
Image 341
Intel PXA255 manual Arbitration Procedure of Two Masters