第二篇. IIC
1.概述
1.IIC总线由数据线SDA和时钟线SCL两条线构成通信线路,既可发送数据,也可接收数据。在CPU与被控IC之间、IC与IC之间都可以进行双向传送,最高传送速率为400kbs,各种被控器件均并联在总线上,但每个器件都有唯一的地址。在信息传输过程中IIC总线上并联的每一个器件既是被控器(或主控器),又是发送器,这取决于他所要完成的功能。
2.CPU发出的控制信号分为地址码和数据码两部分:地址码用来选址,即接通需要控制的电路;数据码是通信的内容,这样各IC控制电路虽然挂在同一条总线上,但却彼此独立。
3.IIC总线有两条线,SCL是时钟线,SDA是数据线。总线上各器件都采用漏极开路结构与总线相连。因此SCL和SDA均需接上拉电阻,总线在空闲状态下均保持高电平,连接到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。
2.CPU发出的控制信号分为地址码和数据码两部分:地址码用来选址,即接通需要控制的电路;数据码是通信的内容,这样各IC控制电路虽然挂在同一条总线上,但却彼此独立。
3.IIC总线有两条线,SCL是时钟线,SDA是数据线。总线上各器件都采用漏极开路结构与总线相连。因此SCL和SDA均需接上拉电阻,总线在空闲状态下均保持高电平,连接到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。
4.IIC总线支持多主和主从两种工作方式,通常为主从工作方式。在主从工作方式中,系统中只有一个主器件(主控芯片),其他器件都是具有IIC总线外围从器件。在主从工作方式中,主从器件启动数据的发送(发送启动信号),产生时钟信号,发出停止信号。
5.数据位的有效性规定:IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟信号为低电平期间,数据线上的高电平或者低电平状态才允许变化。
2.信号
1、发送启动(起始)信号:
在利用IIC总线进行一次数据传输时,首先由主机发出启动信号,启动IIC总线。在SCL为高电平期间,SDA出现下降沿则为启动信号。此时具有IIC总线接口的从器件会检测到该信号。
2、发送寻址信号:
主机发送启动信号后,再发出寻址信号。器件地址有7位和10位两种,这里只介绍7位地址寻址方式。寻址字节由一个字节构成,高7位为地址位,最低位为方向位,用以表明主机与丛集的数据传送方向。方向位为0,表明主机接下来对从设备进行写操作;方向位为1,表明主机接下来对从器件进行读操作。
主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据R/W位将自己确定为发送器或接收器。
3、应答信号:
IIC总线协议规定,每传送一个字节数据(含地址和命令字)后,都要有一个应答信号,以确定数据传送是否被对方收到。应答信号由接收设备产生,在SCL信号为高电平期间,接收设备将SDA拉为低电平,表示数据传输正确,产生应答。
4、数据传输:
主机发送寻址信号并得到从器件应答后,便可进行数据传输,每次一个字节,但每次传输都应在得到应答信号后在进行下一字节传送。
5、非应答信号:
当主机为接受设备时,主机对最后一个字节不应答,以向发送设备表示数据传输结束。
6、发送停止信号:
在全部数据传送完毕后,主机发送停止信号,即在SCL为高电平期间,SDA上产生一个上升沿信号。
2、发送寻址信号:
主机发送启动信号后,再发出寻址信号。器件地址有7位和10位两种,这里只介绍7位地址寻址方式。寻址字节由一个字节构成,高7位为地址位,最低位为方向位,用以表明主机与丛集的数据传送方向。方向位为0,表明主机接下来对从设备进行写操作;方向位为1,表明主机接下来对从器件进行读操作。
主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据R/W位将自己确定为发送器或接收器。
3、应答信号:
IIC总线协议规定,每传送一个字节数据(含地址和命令字)后,都要有一个应答信号,以确定数据传送是否被对方收到。应答信号由接收设备产生,在SCL信号为高电平期间,接收设备将SDA拉为低电平,表示数据传输正确,产生应答。
4、数据传输:
主机发送寻址信号并得到从器件应答后,便可进行数据传输,每次一个字节,但每次传输都应在得到应答信号后在进行下一字节传送。
5、非应答信号:
当主机为接受设备时,主机对最后一个字节不应答,以向发送设备表示数据传输结束。
6、发送停止信号:
在全部数据传送完毕后,主机发送停止信号,即在SCL为高电平期间,SDA上产生一个上升沿信号。
IC仲裁
如果I2C总线上挂载多个主设备,可能会发生冲突。假设总线上有两个主设备(设备A和设备B),设备A准备发送10101010,设备B准备发送10000000,且几乎同时发送数据,两个设备每次发送一个数据位之后,都对SDA上的电平进行检测,如果检测结果与自己发送的数据相符,则继续占用总线。
冲裁时序
设备A和设备B在发送前两位数据之后,都继续占用总线,第3个时钟周期,A发送1,B发送0,I2C总线有“线与”特性,这时SDA上的电平为低电平,A检测到SDA上的低电平,与自己发送的数据不符,则自动放弃总线控制权,从而,只有设备B获得总线控制权。