2、IIC
(1)基本概念
- IIC总线是一种串行、半双工总线,同步通信、主要用于近距离、低速的芯片之间的通信。
- IIC串行总线一般有两根信号线,一根是双向的数据线SDA收发数据,另一根是时钟线SCL双方时钟同步。所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。
- IIC是真正的多主机总线,(IIC可以在通讯过程中,改变主机)。如果两个或更多的主机同时请求总线,可以通过冲突检测和仲裁防止总线数据被破坏。
- 多个IIC器件可以并联在IIC总线上,每个器件有特定的地址,分时共享IIC总线。连接到IIC总线上的设备既可以用作主设备,也可以用作从设备。
- 主设备负责控制通信,通过对数据传输进行初始化/终止化,来发送数据并产生所需的同步时钟脉冲。从设备则是等待来自主设备的命令,并响应命令接收。主设备和从设备都可以作为发送设备或接收设备。无论主设备是作为发送设备还是接收设备,同步时钟信号都只能由主设备产生。
- 串行的8位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s ,高速模式下可达3.4Mbit/s。
(2)硬件连接
IIC 总线由两根信号线和一根地线组成。两根信号线都是双向传输的。IIC协议标准规定发起通信的设备称为主设备,主设备发起一次通信后,其它设备均为从设备。
注意:实际使用中,一般是单片机作为主机,其它器件作为从机,单片机先向器件发送信息表示要读取数据,之后转变传输方向,器件发送数据到单片机。
(3)通信过程
当总线空闲时,SDA 和SCL 都处于高电平状态,当主机要和某个从机通讯时,会先发送一个开始条件,然后发送从机地址和读写控制位,接下来传输数据(主机发送或者接收数据),数据传输结束时主机会发送停止条件。传输的每个字节为8 位,高位在前,低位在后。
- 开始条件(启用总线):SCL 为高电平时,主机将SDA 拉低,表示数据传输即将开始。
- 从机地址:主机发送的第一个字节为从机地址,高7 位为地址,最低位为R/W 读写控制位,1 表示读操作,0 表示写操作。
一般从机地址有7 位地址模式和10 位地址模式两种,如果是10 位地址模式,第一个字节的头7 位是11110XX 的组合,其中最后两位(XX)是10 位地址的两个最高位,第二个字节为10 位从机地址的剩下8 位,如下图所示:
Start | A6 | A5 | A4 | A3 | A2 | A1 | A0 | R/W | ACK |
---|
Start | 1 | 1 | 1 | 1 | 0 | A9 | A8 | R/W | ACK | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | ACK |
---|
- 应答信号:每传输完成一个字节的数据,接收方就需要回复一个ACK(acknowledge)。写数据时由从机发送ACK,读数据时由主机发送ACK。当主机读到最后一个字节数据时,可发送NACK(Notacknowledge)然后跟停止条件。
- 数据:从机地址发送完后可能会发送一些指令,依从机而定,然后开始传输数据,由主机或者从机发送,每个数据为8 位,数据的字节数没有限制。
- 重复开始条件:在一次通信过程中,主机可能需要和不同的从机传输数据或者需要切换读写操作时,主机可以再发送一个开始条件。
- 停止条件(释放总线):在SDA 为低电平时,主机将SCL 拉高并保持高电平,然后在将SDA 拉高,表示传输结束。
(4)IIC总线优点
- 简单的两线串行 IIC 总线,节省 PCB 布板走线空间。
- 完全集成的 IIC总线协议消除了地址解码器。
- 标准支持广泛,大量无铅封装 I2C 总线兼容集成芯片进一步降低了空间需求。
- 控制方式简单、器件封装形式小、通信速率较高。
**温馨提示:**下一章节将讲述SPI通信协议。