1. 概述
IIC = Inter Integrated-Circuit 总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL,如下图:
2. 硬件结构
I2C总线通过上拉电阻(大小由速度和容性负载决定一般在3.3K-10K之间)接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。如下图:
每个连接到总线的设备都有唯一的地址,地址为7位,前四位鉴定器件类别,一般是固定的;后三位由器件本身管脚A0、A1、A2可以编程,故同类器件一般最多挂8个。
工作速率如下:
常见的有标准模式100Kbit/s和快速模式400Kbit/s两种,增强快速模式1Mbit/s和高速模式3.4Mbit/s,极速模式单向数据传输速率可达5Mbit/s。
可以实现半双工通信。基于I2C衍生出来的标准有SMBus、PMBus、IPMI、DDC和ATCA等。
3. 总线寻址
总线明确规定,采用7位寻址字节,D7~D1位组成从机的地址。
D0位是数据传送方向位,为“0”时表示写数据,为“1”时表示读数据。
主机发送地址时,总线上的每个从机都将这7位地址码和自己的地址码比较,如果相同则认为自己被主机寻址,根据读写位确认为发送器或者接收器。
部分规格书中说明地址是8位则分读地址和写地址,即增加了读写位在里面:
极少数情况下有10位寻址的情况;
IIC总线保留地址表如下:
0000 0000 为通用广播地址。
4. 数据传输
数据位有效性规定
I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有时钟信号为低电平时,数据线上的电平才允许变化。如下图:
起始信号和终止信号
SCL线为高电平时,SDA线由高变低表示起始信号;
SCL线为高电平时,SDA线由低变高表示终止信号。
起始信号和终止信号均是主机发出;
起始信号产生后,总线处于被占用状态;
终止信号产生后,总线处于空闲状态;