MS51
Nov. 28, 2019
Page
411
of 491
Rev 1.00
MS51
32K
SE
RIES
TE
CHNICAL RE
F
EREN
CE MA
N
UAL
I2C0_SDA line should be left high by the slave so that the mater can generate a STOP or a repeated
START condition.
If a slave-receiver does acknowledge the slave address, it switches itself to not addressed slave mode
and cannot receive any more data bytes. This slave leaves the I2C0_SDA line high. The master
should generate a STOP or a repeated START condition.
If a master-receiver is involved in a transfer, because the master controls the number of bytes in the
transfer, it should signal the end of data to the slave-transmitter by not generating an acknowledge on
the last byte. The slave-transmitter then switches to not addressed mode and releases the I2C0_SDA
line to allow the master to generate a STOP or a repeated START condition.
SDA output by transmitter
SCL from master
1
2
8
9
START
condition
SDA output by receiver
SDA = 0, acknowledge (ACK)
SDA = 1, not acknowledge (NACK)
Clock pulse for
acknowledge bit
Figure 6.11-7 Acknowledge Bit
Arbitration
6.11.2.4
A master may start a transfer only if the bus is free. It is possible for two or more masters to generate
a START condition. In these situations, an arbitration scheme takes place on the I2C0_SDA line, while
I2
C0_SCL is high. During arbitration, the first of the competing master devices to place‘a’’1’ (high) on
I2C0_SDA while an
other master transmits‘a’’0’ (low) switches off its data output stage because the
level on the bus does not match its own level. The arbitration lost master switches to the not
addressed slave immediately to detect its own slave address in the same serial transfer whether it is
being addressed by the winning master. It also releases I2C0_SDA line to high level for not affecting
the data transfer continued by the winning master. However, the arbitration lost master continues
generating clock pulses on I2C0_SCL line until the end of the byte in which it loses the arbitration.
Arbitration is carried out by all masters continuously monitoring the I2C0_SDA line after outputting
data. If the value read from the I2C0_SDA line does not match the value that the master has to output,
it has lost the arbitration. Note that a master can only lose arbitration when it outputs a high I2C0_SDA
value while another master outputs a low value. Arbitration will continue until only one master remains,
and this may take many bits. Its first stage is a comparison of address bits, and if both masters are
trying to address the same device, arbitration continues on to the comparison of data bits or
acknowledge bit.
DATA 1 from master 1
START
condition
Master 1 loses arbitration for DATA 1
≠
SDA
It immediately switches to not addressed slave
and outputs high level
DATA 2 from master 2
SDA line
SCL line
Figure 6.11-8 Arbitration Procedure of Two Masters