如何连接 I2C 地址引脚 (A0, A1, A2, ...)?

当你想使用如 EEPROM 这样的 I2C 设备时,你可能会问自己如何连接地址引脚 (A0, A1 和 A2)

I2C EEPROM 引脚图带地址引脚 A0, A1, A2

首要规则:不要有未连接的地址引脚

你需要记住 I2C 寻址的首要规则:永远不要让地址引脚未连接,除非数据手册中明确允许!

虽然有一些设备如 MCP3472 允许浮空地址引脚,但大多数设备可能无法正常工作(特别是在嘈杂环境中)。

第二规则:避免地址冲突

你需要避免在同一 I2C 总线上有两个具有相同 I2C 地址的部件*(地址冲突)!* I2C 的 I2C 地址长 7 位,通常由部件特定前缀(例如 0101)加上地址引脚(例如 0101ABC,其中 A、B 和 C 是地址引脚 A0A1A2 的值)组成

首先你需要找出同一 I2C 总线上是否有其他设备,即连接到同一对 SDASCL 引脚的其他 IC。

在同一 I2C 总线上有多个设备时如何连接 I2C 地址引脚?

具有相同零件编号的多个 IC

如果 I2C 总线上有多个****具有相同零件编号的 IC示例:多个 I2C ADC、多个 I2C 端口扩展器),则很容易连接它们以避免地址冲突:只需将每个 IC 连接不同。这将为每个不同的 IC 产生不同的地址。

具有不同地址引脚连接的多个 I2C ADC

多个不同的 IC

如我们之前所写,你需要避免有多个具有相同地址的 IC。

最有可能的是,不同的 IC 首先会有不同的地址,无论你如何连接它们的引脚。但是,这不能保证!(如果你感觉幸运,只生产小批量原型板且不介意焊接,你也可以测试你的运气并假设它们是不同的!)。

按以下步骤操作:

地址详细信息将看起来像这样:

数据手册中的 I2C 地址字节结构示例 **在几乎所有 I2C 设备中,前几位是固定的!**其他位(在此示例中为 $A_2$、$A_1$ 和 $A_0$)以某种方式取决于地址引脚。 虽然在大多数设备中它们直接表示地址引脚,但一些设备尝试具有比地址引脚更多的可配置地址槽,因此使用浮空地址引脚。

**比较设备之间的这些固定位。**如果你能确保没有两个设备可以有相同的地址,你可以将地址引脚连接到 GND 或 VCC,因为这无关紧要。

I2C 地址比较显示不同设备之间无冲突 在此示例中,显然不能有冲突的地址,因为一些固定位不同(如红线所示)。

如果你不能确保没有冲突,你需要适当地分配地址引脚以使部件具有不同的 I2C 地址。

我们的建议是实际写下 I2C 地址并检查它们是否确实不同。这种方法避免了难以调试的错误。你可以使用老式的纸笔或在任何编辑器中执行此操作。

***注意:你应该始终在原理图上写下每个 IC 的 I2C 地址,特别是如果你有多个 I2C 部件!***不这样做通常会导致必须一遍又一遍地重新计算。

对我们如何制作此文章中的地址图感兴趣?请查看如何在 TikZ 中可视化 I2C 第一字节结构


Check out similar posts by category: Electronics