IIC总线协议介绍

1 IIC介绍
I2C总线用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高,系统的更改和扩充极为容易。
I2C总线只有2根双向信号线,1根SDA(数据线),1根SLA(时钟线)。

2 IIC结构图
IIC总线协议介绍
I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各设备的SDA及SCL都是线“与”关系。(就是只要有一个设备对应的SDA和SCL变为低电平那么整根总线的都是低电平)

每个连接到I2C总线的设备都有唯一的地址,主机与设备之间之间进行数据传送(可以相互传送)
例如:主机向设备之间进行数据传送,这时主机就是发送器,设备就是接收器。
发送器:发送数据到总线。
接收器:从总线接受数据。

如果主机出现多个,此时主机又同时想通过总线发出数据给设备,为了避免混乱,IIC总线要通过总线制裁来控制那一台主机来控制总线。

3 IIC总线协议


IIC协议规定了在IIC总线进行数据传送的时候,SCL(时钟信号)必须为高电平,并且数据线上的数据需要保持稳定,当SCL为低电平时,数据线(SDA)上的电平高低才可以允许变化。


在总线数据进行传输的时候必须有一个起始条件作为开始,有一个终止信号表示结束,起始信号和终止信号都是由主机发出的,起始信号表示总线被占用,终止信号表示总线处于空闲状态。

起始信号是SCL为高电平,SDA为高电平变为低电平,终止信号是SCL为高电平 终止信号从低电平向高电平转变。

如图所示
IIC总线协议介绍

4数据传送

4.1数据的传送的开始
在起始信号后必须传送一个设备的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据,“1”表示主机接收数据。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。每一个设备的地址都是唯一的,也就是说一个7位的地址如果每一位都是可变的话,可以有2^7个设备。
4.2正式传送数据
每一个字节必须保证是8位长度。数据传送时,先传送最高位,每一个被传送的字节后面都必须跟随一位应答位一共9位。
IIC总线协议介绍


5工作方式


5.1 主机向设备写数据
IIC总线协议介绍
S表示起始条件 A表示应答位 P表示终止条件 橙色表示主机发送的数据 白色表示设备发送的数据


5.2 主机向设备读数据
当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。
IIC总线协议介绍
5.3 主机先写后读
IIC总线协议介绍
主机先读后写也类似