一:IIC总线
IIC总线是飞利浦公司推出的一种同步、串行、半双工总线,主要用于近距离、低速的芯片之间的通信;IIC总线有两条双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步;IIC总线硬件结构简单,成本较低,被广泛应用于各种电子设备、传感器等领域。
二:IIC总线结构图
- 由时钟线SCL和数据线SDA组成,并且都接上拉电阻,确保总线空闲状态时为高电平;
- IIC接口内部是OC/OD门结构,各器件的SDA、SCL都是线与关系;
- 总线支持多设备连接,允许多主机存在,每个连接到IIC总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机);
- 连接到总线的设备数目受到总线的最大电容400pF的限制。
三:IIC总线通信过程
IIC总线支持多主机总线,一条IIC允许多个主机的存在,当总线上有多个主机同时启用总线时,IIC也具备冲突检测和仲裁的功能来防止错误发生;连接在IIC总线上的器件分为主机和从机,主机有权发起和结束一次通信,而从机只能被主机呼叫,平时我们用单片机控制IIC器件时,单片机作为主机,接口器件作为从机。IIC总线在通信时总线上发送的数据的器件为发送器,接收数据的器件为接收器,主机和从机即可作为发送器,也可作为接收器,二者没有固定的关系。
通信过程如下:
- 主机(Master)发送起始信号启用总线;
- 主机(Master)发送一个字节数据指明从机地址和后续字节的传送方向;
- 被寻址的从机(Slave)发送应答信号回应主机(Master);
- 发送器发送一个字节数据;
- 接收器发送应答信号回应发送器;
- ……(循环步骤4、5);
通信完成后主机发送停止信号释放总线。
四:IIC总线寻址方式
主机在发送起始信号后,先发送7bit的从机设备地址,随后发送第8位表示后续地址的传送方向,‘0’表示主机发送数据,‘1’表示主机接收数据;总线上所有的器件接收到该字节数据后,都将该起始信号后的第一个字节前7位地址与自己的地址进行比较,如果相同,则认为自己被主机寻址,然后再根据第一个字节的第8位确定自己时发送数据还是接收数据。
五:IIC总线信号实现
(1)起始信号和停止信号
- SCL为高电平时,SDA由高电平变为低电平表示起始信号;
- SCL为高电平时,SDA由低电平变为高电平表示停止信号;
起始信号和停止信号都是由主机发出,起始信号产生后总线处于占用状态,停止信号产生后总线处于空闲状态。
(2)字节传送与应答
IIC总线通信时每个字节为8位长度,数据传送采用大端模式,先传送最高位,后传送低位,发送器发送完一个字节数据后接收器必须发出1位应答来回应发送器,即一帧共有9位。
(3)同步信号
IIC总线再进行数据传送时,时钟线SCL位低电平期间发送器向数据线上发送一位数据,在此期间数据上的信号允许发生变化,时钟线SCL为高电平期间接收器从数据线上读取一位数据,在此期间数据线上的信号不允许发生变化,必须保持稳定。
(4)典型IIC时序
主机向从机发送数据
S | 从机地址 | 0 | A | 数据 | A | 数据 | A/A' | P |
从机向主机发送数据
S | 从机地址 | 1 | A | 数据 | A | 数据 | A' | P |
阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送;A表示应答,A’表示非应答,S表示起始信号,P表示终止信号
六:上拉电阻的取值
(1)上拉电阻的最大取值
总线电容Cb是器件引脚、连接导线的总电容。在上升时间(tr)一定的情况下,此电容限制了上拉电阻Rp的最大值。电平从0到1的过程中,由于寄生电容和上拉电阻会形成RC电路,导致时间延迟,当该延迟大于电平0到电平1的有效时间时,芯片读取到的电平是错误的,可用电容充电公式推导出上拉电阻最大取值Rp(max):
(2)上拉电阻的最小取值
上拉电阻的最小值Rp(min)受到电源电压的影响,同时要考虑数字电路的静态协议:
注:VDD电源电压,单位V;Vol(max)为输出低电平时的电压,单位V,Iol为输出低电平时的灌电流,单位A,在IIC协议总线电气特征表中可查。
飞宇集团——光通信无源器件及有源设备研发制造企业。