每一个IIC总线器材内部的SDA、SCL引脚电路结构都是相同的,引脚的输出驱动与输入缓冲连在一起。其间输出为漏极开路的场效应管、输入缓冲为一只高输入阻抗的同相器[1]。这种电路具有两个特色:
①因为SDA、SCL为漏极开路结构,借助于外部的上拉电阻完结了信号的“线与”逻辑;
②引脚在输出信号的一起还将引脚上的电平进行检测,检测是否与方才输出共同。为 “时钟同步”和“总线裁定”供给硬件根底。
I2C总线接口内部结构
IIC设备对总线的操作仅有“把线路接地”——输出逻辑0。依据I%&&&&&%总线的规划,线路上不可能呈现电平抵触现象。假如一设备发送逻辑0,其他发送逻辑1,那么线路看到的只需逻辑0。也便是说,假如呈现电平抵触,发送逻辑0的始终是“赢家”。总线的物理接法答应主设备往总线写数据的搭档读取数据。这样两主设备争总线的时分“赢家”并不知道竞赛的产生,只需“输家”发现了抵触——当写一个逻辑1,却读到了0——而退出竞赛。
时钟同步
假如被控器期望主控器下降传送速度能够经过将SCL自动拉低延伸其低电平常刻的方法来告诉主控器,当主控器在预备下一次传送发现SCL的电平被拉低时就进行等候,直至被控器完结操作并开释SCL线的操控操控权。这样以来,主控器实际上遭到被控器的时钟同步操控。可见SCL线上的低电平是由时钟低电平最长的器材决议;高电平的时刻由高电平常刻最短的器材决议。这便是时钟同步,它处理了I2C总线的速度同步。
总线裁定
假定主控器1要发送的数据DATA1为“101 ……”;主控器2要发送的数据DATA2为“1001 ……”总线被发动后两个主控器在每发送一个数据位时都要对自己的输出电平进行检测,只需检测的电平与自己宣布的电平共同,他们就会持续占用总线。在这种情况下总线仍是得不到裁定。当主控器1发送第3位数据“1”时(主控器2发送“0” ),因为“线与”的成果SDA上的电平为“0”,这样当主控器1检测自己的输出电平常,就会测到一个与本身不相符的“0”电平。这时主控器1只好抛弃对总线的操控权;因而主控器2就成为总线的仅有主宰者。
不难看出:
- ① 关于整个裁定进程主控器1和主控器2都不会丢掉数据;
- ② 各个主控器没有对总线施行操控的优先等级;
- ③总线操控随即而定,他们遵从“低电平优先”的准则,即谁先发送低电平谁就会把握对总线的操控权。
依据上面的描绘,“时钟同步”与“总线裁定”能够总结如下规则:
- ①主控器经过检测SCL上的电平来调理与从器材的速度同步问题——时钟同步;
- ②主控器经过检测SDA上本身发送的电平来判别是否产生总线“抵触”——总线裁定。因而,I2C总线的“时钟同步”与“总线裁定”是靠器材本身接口的特别结构得以完结的。
[1]同相器:当输入高电平常输出也是高电平,输入低电平常输出也是低电平。首要要于需求缓冲的场合,便是只需输入很小的电流,可输出较大的电流,增加带载才能。