IIC(Inter-Integrated Circuit,集成电路总线)是由Philips(飞利浦)公司开发的一种通用数据总线,常简称为I²C,是一种串行、半双工、同步、单端、多对多的通信协议,其协议基本原理如下
起始信号:SCL高电平期间,SDA由高到低
停止信号:SCL高电平期间,SDA由低到高
主设备给从设备发送/写入数据:
- 主设备发送起始信号
- 主设备发送设备地址到从设备,写标志,等待从设备响应
- 主设备发送寄存器地址到从设备,等待从设备响应
- 主设备发送数据到从设备,等待从设备响应(不断重复,都是8位数据1位应答)
- 数据发送完毕,主设备发送停止信号
主设备从从设备接收/读取数据:先写(改寄存器地址)再读
- 主设备发送起始信号
- 主设备发送设备地址到从设备,写标志,等待从设备响应
- 主设备发送寄存器地址到从设备,等待从设备响应
- 主设备发送起始信号
- 主设备发送设备地址到从设备,读标志,等待从设备响应
- 从设备发送数据,等待主设备响应
- 主设备不响应,发送停止

传输速率:标准模式100kbit/s;快速模式:400kbit/s;高速模式下可达3.4Mbit/s
优缺点:IIC需要高电平能力,但开漏输出无法输出高电平,需要在漏极接上拉电阻,才能实现“线与”。由于IIC设备开漏输出和上拉电阻这种设计,导致抗干扰能力较弱,只适合电路板之间的通信,小于30cm

硬件接线图
上拉电阻取值:
取值太大:每一个从设备的IO口对地有一个寄生电容,电阻太大电路电流太小,会导致给寄生电容充电的时间太长,导致电平不能短时间内达到高电平,上升沿下降沿不够陡峭,所以一般从设备越多,上拉电阻取值越小。
取值太小:总线低电平时会导致连着下面的mos管的这条通路电流太大,可能烧毁mos管,且mos管存在电阻,如果上拉电阻取值太小无法把总线电压拉低到低电平

皖公网安备34152502000174号