![GigaDevice Semiconductor GD32E23 Series User Manual Download Page 470](http://html.mh-extra.com/html/gigadevice-semiconductor/gd32e23-series/gd32e23-series_user-manual_2225794470.webp)
GD32E23x User Manual
470
held LOW by the master with the longest LOW period. Masters with shorter LOW period
enter a HIGH wait-state during this time.
Figure 17-4. Clock synchronization
CLK1
CLK2
SCL
17.3.5.
Arbitration
Arbitration, like synchronization, is part of the protocol where more than one master is used
in the system. Slaves are not involved in the arbitration procedure.
A master may start a transfer only if the bus is free. Two masters may generate a START
signal within the minimum hold time of the START signal which results in a valid START
signal on the bus. Arbitration is then required to determine which master will complete its
transmission.
Arbitration proceeds bit by bit. During every bit, while SCL is HIGH, each master checks
whether the SDA level matches what it has been sent. This process may take many bits. Two
masters can even complete an entire transmission without error, as long as the
transmissions are identical. The first time a master tries to send a HIGH, but detects that the
SDA level is LOW, then the master knows that it has lost the arbitration and turns off its SDA
output driver. The other master goes on to complete its transmission.
Figure 17-5. SDA line arbitration
SDA
SCL
SDA from
master2
SDA from
master1
1
1
1
0
0
0
1
1
1
1
0
0
17.3.6.
I2C communication flow
Each I2C device is recognized by a unique address (whether it is a microcontroller, LCD
driver, memory or keyboard interface) and can be operated as either a transmitter or receiver,
depending on the function of the device.
An I2C slave will continue to detect addresses after a START signal on I2C bus and compare
the detected address with its slave address which is programmed by software. Once the two
addresses match with each other, the I2C slave will send an ACK to the I2C bus and respond
to the following command on I2C bus: transmitting or receiving the desired data. Additionally,