Bus collision occurs during a Stop condition if:
The Stop condition begins with SDA asserted low. When SDA is sampled
low, the SCL pin is allowed to float. When the pin is sampled high (clock arbitration), the
Baud Rate Generator is loaded with SSPxADD and counts down to zero. After the BRG times out, SDA is
sampled. If SDA is sampled low, a bus collision has occurred. This is due to another host
attempting to drive a data ‘0
’ (see Figure 1). If the SCL pin is sampled low before SDA
is allowed to float high, a bus collision occurs. This is another case of another host
attempting to drive a data ‘0
’ (Figure 2).