一、 I2C 简述
I2C(Inter-Integrated Circuit)字面上的意思是集成电路之间,它其实是 I2 Bus 简称,所以中文应该叫集成电路总线,它是一种简单、双向二线制串行通信总线,使用多主从架构,由飞利浦公司在 1980 年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。它只需要两根线 SDA 、SCL 即可在连接于总线上的器件之间传送信息,I2C 总线数据传输速率在标准模式下可达 100kbit/s,快速模式下可达 400kbit/s,高速模式下可达 3.4Mbit/s,在超高速模式下可达到 5Mbit/s。
- I2C 主要特点
- 简单的双向两线总线(漏极开路模式)
- 串行数据(SDA)串行时钟(SCL)
- 带仲裁功能的多主机的总线
- 总线上的每个设备都具有不同的识别地址
- 每次数据传输都是由主机发起,且时钟总是由主机提供
- I2C 硬件框图如图 1 所示
- I2C 支持带仲裁功能的多设备通信,在一条总线上可以挂载多个 I2C 外设
- I2C 两条总线为漏极开路结构,需要外接上拉电阻
图 1
二、 I2C 数据通讯
- I2C 总线协议
I2C 总线由起始信号、停止信号、应答信号、非应答信号组成,图 2 所示:
- 起始信号:当时钟线 SCL 为高期间,数据线 SDA 由高到低的跳变
- 停止信号:当时钟线 SCL 为高期间,数据线 SDA 由低到高的跳变
- 应答信号(ACK):应答位为低电平时,规定为有效应答位,表示接收器已经成功接收该字节;
- 非应答信号(NACK):应答位为高电平时,规定为非应答位,一般表示接收器接收该字节没有成功
- 数据有效性:SCL 在高电平期间,SDA 上的数据必须保持稳定,只有在 SCL 为低电平期间,SDA 状态才允许变化。
图 2
- I2C 总线的操作
对 I2C 总线的操作实际就是主从设备之间的读写操作。大致可分为以下二种操作情况:
- 主设备往从设备中写数据,如图 3 所示
图 3
- 主设备从从设备中读数据,如图 4 所示
图 4
三、 I2C 时钟同步
由于总线具有线“与”的逻辑功能,当多个节点同时发送时钟信号时,在总线上表现的是统一的时钟信号,只要有一个节点发送的是低电平,总线上表现为低电平,只有当所有节点都发送高电平时,总线才表现为高电平,由此可知总线时钟取决于低电平周期最长的节点时钟。这就是 SCL 的同步原理,如图 5 所示。
图 5
四、 实际测量 I2C 信号
图 6 是实测的一个 I2C 命令,包含了开始信号,数据,ACK 应答信号,等待状态,停止信号。
图 6
本篇文章介绍了图像传感器的 I2C 信号,如果有问题需要交流,请在博文下提问。
如果有喜欢小鱼干的,也请多多关注我的大大通账号:小鱼干。
【参考文献】
https://www.cnblogs.com/summer-xwq/p/4148107.html
评论