IIC即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的一种简单、双向、二线制、高性能同步串行总线。具备多主机+多从机总线组网功能。
基本概念
IIC总线只有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL,IIC总线支持所有IIC工艺的制造的器件,所有连接IIC总线上的设备的串行数据都可以接到SDA数据线上。这些设备有存储器、LCD驱动器、AD转换器、DA转换器,也可以是计算机IIC总线通过上拉电阻(一般为4.7KΩ)接正电源,当总线空闲时,两根线均为高电平。
简单的说,IIC总线是一种半双工同步通信总线,其带有数据应答,支持总线挂载多设备(一主多从、多主多从)。在进行硬件连接时,所有I2C设备的SCL连在一起,SDA连在一起。SCL和SDA各添加一个上拉电阻,阻值一般为4.7KΩ左右。软件配置时,设备的SCL和SDA均要配置成开漏输出模式。由下图可以清晰的看出其硬件连接方式:
IIC总线通信规则
起始位和终止位规定
起始位:时钟线SCL为高电平期间,数据线SDA由高电平向低电平变化,即出现一个下降沿。
终止位:时钟线SCL为高电平期间,数据线SDA由低电平向高电平变化,即出现一个上升沿。
如图,左边为起始位,右边为终止位。
数据传输基本单元
发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节
接收一个字节:SCL低电平期间,从机将数据位依次放到SDA线上(高位先行),然后释放SCL,主机将在SC