Datasheet

Table Of Contents
clock. Clock synchronization is performed using the wired-AND connection to the SCL signal. When the master transitions
the SCL clock to zero, the master starts counting the low time of the SCL clock and transitions the SCL clock signal to one at
the beginning of the next clock period. However, if another master is holding the SCL line to 0, then the master goes into a
HIGH wait state until the SCL clock line transitions to one.
All masters then count off their high time, and the master with the shortest high time transitions the SCL line to zero. The
masters then count out their low time and the one with the longest low time forces the other masters into a HIGH wait
state. Therefore, a synchronized SCL clock is generated, which is illustrated in Figure 80. Optionally, slaves may hold the
SCL line low to slow down the timing on the I2C bus.
CLKA
CLKB
SCL
Wait State
SCL LOW transition Resets all CLKs
to start counting their LOW periods
SCL transitions HIGH when
all CLKs are in HIGH state
Start counting HIGH period
Figure 80. Multi-
Master Clock
Synchronization
4.4.10. Operation Modes
This section provides information on operation modes.
NOTE
It is important to note that the DW_apb_i2c should only be set to operate as an I2C Master, or I2C Slave, but not both
simultaneously. This is achieved by ensuring that IC_CON.IC_SLAVE_DISABLE and IC_CON.IC_MASTER_MODE are
never set to zero and one, respectively.
4.4.10.1. Slave Mode Operation
This section discusses slave mode procedures.
4.4.10.1.1. Initial Configuration
To use the DW_apb_i2c as a slave, perform the following steps:
1. Disable the DW_apb_i2c by writing a ‘0’ to IC_ENABLE.ENABLE.
2. Write to the IC_SAR register (bits 9:0) to set the slave address. This is the address to which the DW_apb_i2c
responds.
3. Write to the IC_CON register to specify which type of addressing is supported (7-bit or 10-bit by setting bit 3). Enable
the DW_apb_i2c in slave-only mode by writing a ‘0’ into bit six (IC_SLAVE_DISABLE) and a ‘0’ to bit zero
(MASTER_MODE).
RP2040 Datasheet
4.4. I2C 474