I2C总线是一种常见的串行通信总线,具有以下特点:
-
以逻辑电平编码
-
仅有两根双向信号线组成,分别为时钟线 SCL、数据线 SDA,以半双工的方式通信
-
总线上可以挂载多个I2C设备,通过指定的设备地址访问目标设备(取决于总线的负载电容,要求不超过400pF)
-
标准模式下,通信速度达100kbit/s;快速模式下,通信速度达400kbit/s;高速模式下达3.4Mbit/s
(图)连接到总线的设备
1 通信状态约定
-
空闲状态(IDEL)
无数据传输,总线处于空闲状态,时钟线SCL和数据线SDA的电平为逻辑高电平。
-
开始条件(START)
通知各从设备,总线由空闲状态切换到数据传输状态。此时数据线SDA将由高电平切换为低电平,并维持一段时间。
-
停止条件(STOP)
数据传输结束,释放总线。此时先把时钟线SCL恢复为高电平,再把数据线恢复为高电平。
(图)开始条件和结束条件
-
数据有效性
数据线为高电平时,编码为1;为低电平时,编码为0。约定在时钟线SCL为高电平时,对数据线的电平状态进行采样;在时钟线SCL为低电平时,改变数据线SDA的电平状态。
(图)数据有效性
-
数据传输
总线上的数据按字节(1个字节8位)传输,从最高位(MSB)开始发送,每传完1个字节数据需要得到接收设备的应答信号,再得到有效信号后,接着传输下一个字节,否则结束本次传输,释放总线。
(图)应答
2 握手
主机发起通信后,首先往总线发送第1个字节数据,其中包含指定设备地址和读写请求标志。对应的设备接收到后会回复主机一个应答信号,此时主机和从机建立起了通信联系,主机与从机继续通信,直至本次通信结束。
(图)数据传输示例
-
首字节的格式
(图)首字节格式
3 数据传输
-
写数据
-
-
主机获得总线(起始条件)
-
发送首字节(从机地址 + 写请求)
-
获得从机应答
-
开始传输数据
-
主机释放总结(结束条件)
-
(图)写数据传输
-
读数据
-
-
主机获得总线(起始条件)
-
发送首字节(从机地址 + 读请求)
-
获得从机应答
-
开始传输数据
-
主机释放总结(结束条件)
-
(图)读数据传输
-
读、写数据
在同一次通信中,切换读、写状态需要重新发布开始条件。
(图)读、写数据传输
4 时序特性
I2C总线通信的时序特性如下:
(图)时序
(图)时序参数