PIC18F6390/6490/8390/8490
15.4.17.2
总线冲突在重复
启动条件
在重复起始条件,总线冲突
如果出现:
a)
b)
低级别在SDA上采样时, SCL变
从低电平到高电平。
SCL为低电平之前SDA为低电平时,
这表明另一个主器件正试图
发送一个数据“1” 。
如果SDA为低电平,则发生总线冲突(即,另一
主机正试图发送一个数据“0” ,如图15-29 ) 。
如果SDA采样为高电平, BRG重新装入,并开始
计数。如果SDA由高电平到低电平的BRG前
超时,不会发生总线冲突,因为两个
主人可以精确地在同一时刻将SDA拉低。
如果SCL从高至低的BRG超时之前
和SDA尚未被拉低,总线冲突
发生。在这种情况下,另一个主器件正试图
在重复启动条件期间发送一个数据“1”
(见图15-30 ) 。
如果在BRG超时结束时SCL和SDA
仍然很高,则SDA引脚被拉低, BRG是
重载并开始计数。在计数结束时,
不管SCL引脚的状态如何,SCL引脚
被拉低,重复启动条件
完整的。
当用户拉高SDA和销被允许
悬空时, BRG装入SSPADD<6 : 0>和
计数下降到0, SCL引脚被拉高,
当采样到高电平时, SDA引脚进行采样。
图15-29 :
SDA
期间重复启动条件的总线冲突(情形1)
SCL
采样SDA在SCL为高电平。
如果SDA =
0,
BCLIF置并释放SDA和SCL 。
RSEN
BCLIF
软件清零
‘0’
‘0’
S
SSPIF
图15-30 :
总线冲突在重复启动条件( CASE 2 )
T
BRG
T
BRG
SDA
SCL
SCL为低电平拉低之前,
BCLIF置。释放SDA和SCL 。
中断清零
软件
RSEN
S
SSPIF
‘0’
BCLIF
DS39629C第194页
©
2007 Microchip的技术公司