持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情
一、I2C总线协议简介
I2C(Inter-Integrated Circuit)总线(也称IIC或I2C)是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。Exynos4412芯片包含8个通用I2C接口控制器。 I2C接口的主要特点如下:
- 全双工。
- 只要求两条总线线路:一条串行数据线SDA、一条串行时钟线SCL。
- 每个连接到总线的器件都可以通过唯一的地址。
- 真正的多主机总线,支持冲突检测和仲裁,防止数据被破坏。
- 串行的8位双向数据传输位。
- 速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可 3.4Mbit/s。
- 片上的滤波器可以滤去总线数据线上的毛刺波,保证数据完整。
- 连接到相同总线的IC数量只受到总线的最大电容400pF限制。
二、I2C总线协议内容
(1)I2C总线引脚定义 每个I2C设备有2个引脚供通信连接使用。I2C的两个引脚是:
- SDA (I2C数据引脚)。
- CLK(I2C时钟引脚)。
(2)I2C总线物理连接
SDA和SCL连接线上连有两个上拉电阻,所有的I2C设备并联在总线上。
(3)I2C总线信号类型
I2C总线在数据传输过程中有三种信号,它们分别为:开始信号(S)、结束信号(P)和答信号(ACK)。
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。 应答信号:接收设备在接收到8bit数据后,在第9个时钟周期,向发送设备发送低电平,表示成功收到数据。
(4)I2C总线时序
当I2C总线空闲时SDA和SCL线都是高电平。I2C数据通信由主机发送开始信号(S)起始,到主机发送结束信号(P)结束。在开始信号和结束信号之间以字节为单位传输数据,每个字节后必须跟一个响应位,每次传输可以发送的字节数量不受限制。数据是一位一位的进行传输,先传输高位(MSB),再传输低位(LSB)。 发送器作为数据的发送方,接收器作为数据的接收方。根据SCL上的时钟信号进行数据传输同步,保证数据有效传输。SCL时钟为低电平周期时发送器发送数据,SDA线上数据可以发生变化,SCL时钟为高电平周期时接收器接收数据,SDA线上数据必须保持稳定