I2C - 集成电路间总线

有关 I2C 的一切 标题图片

I2C总线在嵌入式领域非常常用。我们用一个例子解释它是如何工作的,以及如何在Raspberry Pi上设置它。

I2C特性

集成电路总线是一种同步的串行通信总线。飞利浦半导体公司在1982年负责这项发明,但该接口很快就得到了普及。

I2C特性
I2C特性

常用的同义词有:I2C、I2C或IIC。该接口采用了控制器-目标架构,允许控制器仅用两根线就能与多达112个设备进行通信。

控制器可以调整比特率以适应特定目标的需要。因此,I2C适用于很多设备,如传感器、EEPROM设备、时钟、电机驱动器等。

接线

I2C总线的布线真的再简单不过了,因为你只需要两根线。将控制器的串行时钟(SCL)引脚连接到目标设备的串行时钟引脚上,同时连接它们的串行数据(SDA)引脚。I2C软件将完成其余的工作。

I2C 接线
接线

如果你需要为你的I2C设备提供电源,你可以使用Raspberry Pi的3V3、5V和GROUND针脚。

一些设备,如我们的 BME688分线板 有一个I2C接头,所以你不需要任何电线来连接它们。

I2C通信

互联电路总线仅用两根线就可以连接128个设备。这是由于巧妙的通信原理而实现的。

这些线(SDA和SCL)从不主动驱动高电平。如果一个设备想发送一个逻辑1,它就会让这根线浮空。要发送一个逻辑零,就把线拉到地。

控制器发起通信。网络上的任何设备都可以充当控制器和目标。

下面的图形显示了独立的位。

I2C通信
I2C通信

为了开始通信,控制器发送一个开始位,然后是目标的I2C地址和期望的操作模式(R-读或W-写)。

在I2C通信中,目标必须每隔8位(在每个字节之后)返回一个ACK位。由于地址空间通常是7位,所以有128个(0到127)地址。其中16个是保留的。这就为设备留下了112个可能的地址。

目标地址和操作模式是一个字节,所以目标必须返回一个ACK位。然后控制器发送(8位)寄存器地址,目标机再次确认。从那以后,读写通信就不同了。

对于写入,控制器只是以8位块的形式发送数据。目标会确认每个块。一旦控制器完成了写入,它就会发送停止位。

对于读取,控制器再次发送开始位,然后是目标地址。目标确认并开始以8位块发送数据。这一次,控制器必须确认每个字节。为了停止读取,控制器发送NACK位,最后发送Stop位。

优势、劣势和应用

优势

I2C总线的优势是相当明显的。你可以用两根线和每个线的两个引脚连接128个设备。这真是太强大了。此外,你还有灵活的速度。硬件设置几乎不可能再简单了。与SPI不同,控制器知道目标是否正确接收了数据。

优势
优势

劣势

集成电路间总线需要更多的空间和功率,因为它使用了上拉电阻。与SPI相比,它的速度较慢。如果两个设备使用相同的I2C地址,你会遇到麻烦。该地址直接存储在设备上。有些设备让你在两个可能的地址中选择,方法是在设备上的特定位置焊接一个跳线。

劣势
劣势

应用

如果你搜索的是 传感器 在我们的商店里,你会注意到几乎所有非模拟的传感器都使用I2C接口。它在嵌入式领域非常普遍。有像I2C存储器这样的东西。很多时候,微控制器使用该总线进行通信。除此之外,许多DAC (D数字 A卤素 C转换器)和ADC(A卤素 D数字 Converter)与该接口兼容。

Raspberry Pi上的I2C

我们的 视频 展示了如何在你的Raspberry Pi上设置互连电路总线。

6评论

  1. [...]此外,如果您有兴趣了解有关 I2C 的更多信息,请查看这篇文章。[...]

  2. [...] 想进一步了解 I2C?点击此处查看我们的相关文章。[...]

  3. [...] I2C - 集成电路总线 [...]

  4. [......]正如 Naveen 解释的那样,Nano 和 TFT 显示屏之间的连接基于串行外设接口 (SPI)。同时,操纵杆和按钮通过集成电路总线 (I2C) 连接。[...]

发表评论