Microchip Technology DM183037 数据表

下载
页码 696
 2012 Microchip Technology Inc.
DS30575A-page 409
PIC18F97J94 FAMILY
20.5.20.3
Bus Collision During a Stop 
Condition
Bus collision occurs during a Stop condition if:
a)
After the SDAx pin has been deasserted and
allowed to float high, SDAx is sampled low after
the BRG has timed out.
b)
After the SCLx pin is deasserted, SCLx is
sampled low before SDAx goes high.
The Stop condition begins with SDAx asserted low.
When SDAx is sampled low, the SCLx pin is allowed to
float. When the pin is sampled high (clock arbitration),
the Baud Rate Generator is loaded with
SSPxADD<6:0> and counts down to 0. After the BRG
times out, SDAx is sampled. If SDAx is sampled low, a
bus collision has occurred. This is due to another mas-
ter attempting to drive a data ‘0’ (
). If the
SCLx pin is sampled low before SDAx is allowed to
float high, a bus collision occurs. This is another case
of another master attempting to drive a data ‘0’
(
FIGURE 20-33:
BUS COLLISION DURING A STOP CONDITION (CASE 1)      
FIGURE 20-34:
BUS COLLISION DURING A STOP CONDITION (CASE 2)      
SDAx
SCLx
BCLxIF
PEN
P
SSPxIF
T
BRG
T
BRG
T
BRG
SDAx Asserted Low
SDAx Sampled
Low After T
BRG
,
Set BCLxIF
‘0’
‘0’
SDAx
SCLx
BCLxIF
PEN
P
SSPxIF
T
BRG
T
BRG
T
BRG
Assert SDAx
SCLx goes Low Before SDAx goes High,
Set BCLxIF
‘0’
‘0’