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.
- See device data sheet for Restart condition setup times.