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时序。

原文地址:https://www.cnblogs.com/linfeng-learning/p/11985662.html