跳转至

04 I2C

作者:沈园园

一、I2C 概述

I2C(Inter-Integrated Circuit)是一种广泛应用于嵌入式系统的通信协议,尤其适用于主从架构下的短距离通信。它最早由飞利浦(现在的NXP)公司开发,主要用于在集成电路内部以及设备之间的低速通信。以下是I2C协议的一些关键特性和工作原理:

物理层

  • I2C使用两根线进行数据传输:SCL(时钟线)和SDA(数据线)。
  • 两根线通过上拉电阻接到高电平,这样通信可以使用“线与”(Wired-AND)方式,方便多主多从架构。
  • SCL和SDA线分别传输时钟和数据,因此I2C通信是同步的。

架构

  • I2C采用主从(Master-Slave)结构。每次通信时只有一个主设 备,但可以有多个从设备。
  • 主设备负责生成时钟信号和启动/停止信号。
  • 从设备根据地址识别是否是目标通信对象。

通信流程

  • 起始条件(Start Condition):主设备将SDA线从高拉到低,而SCL保持高电平,表示通信的开始。
  • 地址传输:主设备发送从设备地址(7位或10位),并在末尾加入一个读/写位(0表示写,1表示读)。
  • 应答(ACK):从设备接收到地址后,如果地址匹配,就会拉低SDA线应答。
  • 数据传输:在数据传输过程中,每发送一个字节(8位)后,从设备都需要发送应答位。
  • 停止条件(Stop Condition):主设备将SDA线从低拉到高,而SCL保持高电平,表示通信结束。

二、使用教程

I2C 使用案例是挂载 I2C 接口的 AirGPIO_1000配件板实现I2C转16路GPIO功能,AirSHT30_1000配件板读取温湿度功能 和 AirVOC_1000配件板读取空气质量数据功能。

1.挂载 AirGPIO_1000

详细功能演示、软件环境、硬件环境、以及示例代码和功能展示请参考

AirGPIO_1000

2.挂载 AirSHT30_1000

详细功能演示、软件环境、硬件环境、以及示例代码和功能展示请参考

AirSHT30_1000

3.挂载 AirVOC_1000

详细功能演示、软件环境、硬件环境、以及示例代码和功能展示请参考

AirVOC_1000

4.参考 API

i2c-API