IIC(Inter-Integrated Circuit)协议,也被称为I2C协议,是一种由荷兰的PHILIPS公司(现为NXP半导体公司)开发的简单、高效的通信协议。以下是关于IIC协议的详细介绍:
一、IIC协议概述
- 定义:IIC协议是一种两线式串行总线协议,主要用于连接微控制器及其外围设备,实现数据的串行传输。
- 物理连接:IIC协议通过两条信号线进行通信,一条是数据线SDA(Serial Data Line),用于传输数据;另一条是时钟线SCL(Serial Clock Line),由主设备提供时钟信号,以确保所有连接到总线的设备同步进行数据交换。
二、IIC协议特点
- 双线制通信:IIC协议只使用两根信号线进行通信,简化了硬件连接,降低了互联成本。
- 半双工同步通信:IIC协议采用半双工通信方式,即在同一时间只能进行单向的数据传输。数据传输线只有一根,传输和接收要占用SDA线。
- 多主控支持:IIC总线支持多个主设备和多个从设备连接在同一总线上。每个从设备通过唯一的7位(或10位)地址来区分。
- 低速传输:IIC协议主要用于低速设备之间的通信,传输速率相对较低,但足以满足大多数微控制器及其外围设备之间的数据传输需求。
- 简单性和灵活性:IIC协议的设计简单,易于实现,并且具有良好的灵活性,支持任意两个设备之间的通信。
三、IIC协议流程
1. 主机发送数据到从机
- 起始信号:主机首先发送一个起始信号,通知总线上的所有设备开始通信。起始信号由SCL为高电平时,SDA由高电平向低电平跳变产生。
- 发送设备地址:主机接着发送从设备的7位地址,并在最低位添加读写位(0表示写操作,1表示读操作),组成一个8位的数据帧。
- 等待从机应答:从机接收到地址帧后,如果地址匹配且准备好进行通信,则发送一个应答信号(ACK)给主机。
- 发送数据:主机收到应答信号后,开始发送数据。每发送一个字节的数据后,都会等待从机的应答信号。
- 停止信号:数据传输完成后,主机发送一个停止信号,通知总线上的所有设备通信结束。停止信号由SCL为高电平时,SDA由低电平向高电平跳变产生。
2. 主机从从机读取数据
- 起始信号:主机首先发送一个起始信号。
- 发送设备地址:主机发送从设备的7位地址,并在最低位添加读写位(0表示写操作,1表示读操作),但此时为写操作,因为主机需要告诉从机它将要读取的数据地址。
- 发送数据地址:主机发送要读取的数据在从机内部的地址。
- 重新发送起始信号:主机再次发送起始信号,并重复发送从设备的7位地址,但此时读写位为1,表示读操作。
- 接收数据:从机接收到地址帧后,如果地址匹配且准备好发送数据,则开始发送数据。主机每接收一个字节的数据后,都会发送一个应答信号给从机。
- 发送非应答信号:当主机接收到最后一个数据字节后,发送一个非应答信号(NACK)给从机,表示不再接收更多数据。
- 停止信号:数据传输完成后,主机发送一个停止信号,通知总线上的所有设备通信结束。
四、总结
IIC协议是一种简单、高效、低成本的通信协议,广泛应用于微控制器、传感器、显示器、存储器等设备之间的短距离、低速数据传输。通过两根信号线(SDA和SCL)实现半双工同步通信,支持多个主设备和多个从设备连接在同一总线上。其通信流程包括起始信号、发送设备地址、等待从机应答、发送/接收数据以及停止信号等步骤。