电路简单,只需要两根线,时钟线SCL和数据线SDA,主设备依靠从设备地址进行寻址,实际使用中IIC总线上的设备大部分为一主多从。IIC主设备提供时钟,SDA可以双向传输数据,IIC标准的传输速率一般≤100Kbit/s。下图是IIC常见的一种使用模式。
下面我们讲I2C硬件电路的几个硬件设计case:
i)IIC硬件是开漏输出(open drain),因此我们IIC必须加上拉电阻才能输出高电平,当多个OD共享一个上拉电阻时,只要有任意一个输出为0,其他所有的输出也都会被拉到地。
ii)上拉电阻的具体计算(一般4.7K-10K)
a)Rmin计算。
由于是线于关系,当某个slave器件的输出为0时,所有负载电流全部流入该MOS开关管。因此 (VCC-Vol)/ Rmin≤Iol-Ileak,其中VCC为上拉电压,Vol为CMOS电平的最小输出电平,Iol为该MOS管允许通过的最大饱和电流,Ileak为slave器件IO的漏电流。
b)Rmax计算
当所有slave的MOS开关管都截止,输出高电平,所有电流灌入master端口。因此
(VCC-Vih)/Rmax≥Ioh+Ileak, 其中VCC为上拉电压,Vih为CMOS电平的最小输入电平,Ioh为该master io高电平的输入电流,Ileak为slave器件IO的漏电流。
iii)总线的挂载数量
通常每个IIC器件都会有自己的电容值,slave器件挂多会导致总线传输延迟,信号畸变。一般IIC器件挂的slave器件都小于20个。