To initiate a Start condition (see
Figure 1),
the user sets the Start Condition Enable (
SEN)
bit. If the SDA and SCL pins are sampled high, the Baud Rate Generator is reloaded with the
contents of
SSPxADD and starts its count. If SCL and SDA are both sampled high when the Baud
Rate Generator times out (T
BRG), the SDA pin is driven low. The action of the
SDA being driven low while SCL is high is the Start condition and causes the Start (
S) bit
to be set. Following this, the Baud Rate Generator is reloaded with the contents of SSPxADD
and resumes its count. When the Baud Rate Generator times out (T
BRG), the SEN
bit will be automatically cleared by hardware; the Baud Rate Generator is suspended,
leaving the SDA line held low and the Start condition is complete.
Important:
- 1.If at the beginning of the Start condition, the SDA and SCL
pins are already sampled low, or if during the Start condition, the SCL line is
sampled low before the SDA line is driven low, a bus collision occurs, the Bus
Collision Interrupt Flag (BCLxIF) is set, the Start condition is aborted and the
I2C module is reset into its Idle state.
- 2.The Philips I2C
Specification states that a bus collision cannot occur on a Start.
Figure 1. First Start Bit Timing