在多主的通讯体系中。总线上有多个节点,它们都有自己的寻址地址,能够作为从节点被其他节点拜访,一起它们都能够作为主节点向其他的节点发送操控字节和传送数据。可是如果有两个或两个以上的节点都向总线上发送发动信号并开端传送数据,这样就形成了抵触。要处理这种抵触,就要进行裁定的判定,这便是I 2C总线上的裁定。
I2C总线上的裁定分两部分:SCL线的同步和SDA线的裁定。
1
SCL同步是因为总线具有线“与”的逻辑功用,即只需有一个节点发送低电平时,总线上就体现为低电平。当一切的节点都发送高电平时,总线才干体现为高电平。正是因为线“与”逻辑功用的原理,当多个节点一起发送时钟信号时,在总线上体现的是共同的时钟信号。这便是SCL的同步原理
时钟的同步
2 SDA裁定
SDA线的裁定也是建立在总线具有线“与”逻辑功用的原理上的。节点在发送1位数据后,比较总线上所出现的数据与自己发送的是否共同。是,持续发送;不然,退出竞赛。SDA线的裁定能够确保I2C总线体系在多个主节点一起妄图操控总线时通讯正常进行并且数据不丢掉。总线体系经过裁定只允许一个主节点能够持续占有总线
3裁定进程
两个主节点的裁定进程
上图是以两个节点为例的裁定进程。DATA1和DATA2分别是主节点向总线所发送的数据信号,SDA为总线上所出现的数据信号,SCL是总线上所出现的时钟信号。当主节点1、2一起发送起始信号时,两个主节点都发送了高电平信号。这时总线上出现的信号为高电平,两个主节点都检测到总线上的信号与自己发送的信号相同,持续发送数据。第2个时钟周期,2个主节点都发送低电平信号,在总线上出现的信号为低电平,仍持续发送数据。在第3个时钟周期,主节点1发送高电平信号,而主节点2发送低电平信号。依据总线的线“与”的逻辑功用,总线上的信号为低电平,这时主节点1检测到总线上的数据和自己所发送的数据不相同,就断开数据的输出级,转为从机接纳状况。这样主节点2就赢得了总线,并且数据没有丢掉,即总线的数据与主节点2所发送的数据相同,而主节点1在转为从节点后持续接纳数据,相同也没有丢掉SDA线上的数据。因此在裁定进程中数据没有丢掉。
总结:SDA裁定和SCL时钟同步处理进程没有先后联系,而是一起进行的。