IIC协议
1. 概述
IIC(Inter-Integrated Circuit),集成电路总线。
(1)工作特点:
1)同步串行;
2)半双工;
3)主/从模式(支持一主多从);
4)应答通信机制;
5)传输速率:标准模式(100 kbps)、快速模式(400 kbps)和高速模式(3.4 Mbps)。
PS:通过调整时钟频率,可更改IIC传输速率;传输速率还跟IIC引脚所接的上拉电阻的阻值有关。
(2)应用场景:
IIC适用于近距离、低速器件间的通信;主要应用于字节设备,譬如触摸屏、一些传感器芯片等。
(3)标准硬件接口:
1)SCL:时钟信号线,由主设备产生;
2)SDA:数据信号线。
2. 通信时序
(1)IIC总线物理拓扑结构
(2)空闲状态:SDA和SCL同时处于高电平状态。
(3)起始信号、停止信号
1)起始信号(START):当SCL为高期间,SDA由高到低的跳变;
2)停止信号(STOP):当SCL为高期间,SDA由低到高的跳变。
PS:起始信号和停止信号是一种电平跳变时序信号,而不是一个电平信号。
(4)应答信号、非应答信号
发送方每发送一个字节,在第9个时钟脉冲期间释放总线,由接收方反馈一个应答信号。若发送方接收应答信号超时,则表明此次数据传输无效。
1)应答信号(ACK):接收方在第9个时钟脉冲之前的低电平期间,将SDA拉低,并确保其在该时钟脉冲的高电平期间处于稳定的低电平状态;
2)非应答信号(NACK):接收方在第9个时钟脉冲期间,SDA保持稳定的高电平状态。
PS:当主设备作为接收方,在其接收完最后一个字节后,主设备应当发送一个NACK信号,以通知从设备停止发送数据,最后主设备再发送STOP信号至从设备。
(5)数据传输
IIC总线上传输的数据的每一个Bit都与一个时钟脉冲相对应。在时钟信号SCL的配合下,SDA串行传送每一个Bit。
IIC总线的数据传输,需满足以下两个条件:
1)IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定;只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化;
2)SDA上数据位的传输是边沿触发的,即数据位在SCL的上升沿被打入设备;所以SDA必须在SCL的上升沿之前,保持稳定。
3. IIC总线操作
(1)字节写 | |
(2)字节读 | |
(3)页写 | |
(4)页读 |
4. 调试技巧
(1)IIC协议的数据传输在低速率下较稳定,在低速率模式下调试成功后,再提高其通信速率;
(2)在从设备地址不可知情况下,可从0至地址最高值遍历地写入从设备,直至收到从设备发送的ACK信号,即可确定从设备的地址;
(3)IIC的SCL、SDA信号引脚必须接上拉电阻,芯片内置上拉电阻可能无效;
(4)不同的从设备的IIC总线特性存在差别,如通信速率、高电平保持时间等;调试时需根据从设备的特性调整IIC时序。