2.6 Repeated Start/Restart Condition

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 master hardware or user software sets the Start bit.

When the Start bit is set, master hardware releases SDA (SDA floats high) for TSCL/2. Then, 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 master hardware in the idle state. If SDA is sampled high (while SCL is also high), master hardware issues a Start condition. If ABD = 0, hardware loads the I2C shift register with the address loaded into I2CxADB0/1. If ABD = 1, hardware transfers the address from I2CxTXB into the shift register. Once a Restart condition is detected on the bus, the Restart Condition Interrupt Flag (RSCIF) bit is set. See figure below for more details.

Figure 2-4. Restart Condition
Note:
  1. See device data sheet for Restart condition setup times.