I2C 是一种广泛使用的双线同步串行通信协议。它通常用于将微控制器与各种传感器和集成电路(IC)连接,包括其他微控制器。由于它使用双线,I2C 协议也被称为双线接口(TWI)。
顾名思义,它旨在用于短距离互连,通常在设备的 PCB 内部。所有 Nordic SoC 都配备了至少一个 I2C 控制器,可以担任两种角色:发起事务并控制时钟的“控制器”,或响应事务命令的“目标设备”。
Nordic 芯片上的大多数 I2C 控制器支持多种速率:100 (I2C_BITRATE_STANDARD)、400 (I2C_BITRATE_FAST) 和 1000 (I2C_BITRATE_FAST_PLUS) kbps。默认速率为 100 kbps。
两条 I2C 连线被称为串行时钟 (SCL) 和串行数据 (SDA)。总线上的所有设备都连接到这两条线上,如下图所示。

SCL 由 I2C 控制器生成,用于将总线上的所有设备同步到一个时钟,而 SDA 线是双向的,因此数据可以双向传输(从控制器到目标设备,或从目标设备到控制器)。
每个 I2C 目标设备都有一个唯一的地址,用于将其与同一总线上的其他 I2C 目标设备区分开来。地址通常是一个 7 位值,但某些 I2C 目标设备也使用 10 位值。