IIC总线为两线制,SCL和SDA,SCL为时钟线,SDA为数据线,很明显,因为数据线只有1条,收发共用,所以IIC为半双工工作方式。
IIC总线上可以挂载很多设备,每个设备都会有自己独一无二的地址,其中一个为主设备,其余为从设备。设备地址有8位,一位为广播地址,所以有效设备地址共7位,可表示2e7=128个,但0X00不用,所以只表示127个设备,即一条IIC总线上最大可以存在1个主设备和126个从设备。
主设备要与某个从设备通信时,会在数据线上发送从设备地址,从设备检测总线上的设备地址是否与自身一致,若是,则给主设备返回应答信号,通信开始。
IIC硬件设计相当简单,只需要注意以下两点:
1、IIC总线上的SCL和SDA线在设计时往往需要加上拉电阻,其原因后文详细解释。
2、要保证通信双方的IIC总线电平一致,不一致的话要加电平转换电路,后文详解。
为什么要加上拉电阻,要回答这个问题,首先得了解什么是开漏输出
开漏输出,甭管各种花里胡哨的解释,就记住一句话:开漏输出只能输出低电平,无法直接输出高电平,要想输出高电平,就得依靠外部的上拉电阻才能实现。开漏输出具体的电路有兴趣的可以自行学习研究。
通信就是发送0和1的过程,也就是要有高低电平的输出,IIC设备或芯片的SCL和SDA引脚大多都为开漏输出,为了实现总线上逻辑1的发送,外部就得加上拉电阻。
研究完上一个问题,产生了新问题,上拉电阻用多大&#x