iic总线的特点:1.IIC总线上只需要串行数据线SDA和串行时钟线SCL两根。

                2.总线通过上拉电阻连接到高电平,在总线为空闲时为高电平,当SDA和SCL任意一个输出低电平时候,总线变为低电平,SDA和SCL为线与关系。

              3.每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱, I2C总线要通过总线仲裁,以决定由哪一台主机控制总线。

iic总线数据有效位的规定:

wKioL1eUS3njr9RRAABlvacVveI319.png-wh_50

iic总线进行数据传输的时候,时钟信号为高电平的时候,数据信号必须保持稳定,当时钟信号为低电平时候,数据信号上的高低电平才可以发生改变。

起时和终止条件:

当SCL为高电平期间:SDA下降沿为起始信号,SDA上升沿为终止信号

wKioL1eUaSvj86k0AABhFXNo6xI289.png-wh_50

数据传输的格式:

1.字节传送与应答:当起始信号之后总线就处于被占用状态,开始传送数据,数据必须传送8位,即一个字节,然后有一个应答位,当从机对主机的寻址不进行应答时候,必须将数据线SDA拉高表示非应答,此时由主机产生一个终止信号表示数据传输结束。

wKiom1eUasiT3Cn4AACKyu70OIE551.png-wh_50

2.数据传输是在起始信号的后必须加上从机地址,然后加上一位数据传送方向位,0表示主机发送数据,1表示主机接收数据,有以下几种组合方式

阴影部分表示主机向从机发送数据,空白部分表示从机向主机发送数据,A表示应答。

512221233595846.jpg

主机向从机发送数据

512221233555320.jpg

主机接收数据

512221233566057.jpg

主机发送数据后立刻接收数据