A Repeated Start or Restart condition is identical to a Start condition. A master device can issue a Restart condition instead of a Stop condition if it intends to hold the bus after completing the current data transfer. A Restart condition has the same effect on the slave as a Start condition would, resetting all slave logic and preparing it to receive an address. The Restart condition is always initiated by the master.
A Restart condition occurs when the Restart Enable (RSEN) bit is set, I2CxCNT
is ‘0’, and either the master hardware or the user software sets the
Start bit.
When the Start bit is set, the master hardware releases SDA (SDA floats high) for TSCL/2. Then, the hardware releases SCL for TSCL/2, and samples SDA. If SDA is sampled low (while SCL is high), as bus collision has occurred, setting the Bus Collision Detect Interrupt Flag (BCLIF) bit and placing the master hardware in the Idle state. If SDA is sampled high (while SCL is also high), the master hardware issues a Start condition. Once a Restart condition is detected on the bus, the slave hardware will set the Restart Condition Interrupt Flag (RSCIF) bit. See Figure 1 for more details.