我应该选择什么 I2C 地址?

电器工程 i2c
2022-01-12 03:34:26

现在我知道要为自己保留一个 I2C 地址,您必须向 I2C 人员支付一些钱。但我不想这样做。

我正在就我应该为我的项目中的从属和主控 MCU 选择什么地址征求意见。板上还将有一个 EEPROM。所以我会避免使用 EEPROM 的地址。我计划让主设备连接到各种传感器,包括陀螺仪和加速度计,也许还有额外的存储设备。有没有我应该远离的地址块?我正在考虑只将 0x00 用作主设备,将 0x01 用作从设备,因为这些似乎很少使用。

另一个问题:在同一总线上混合 10 位设备和 7 位设备是不是一个坏主意?我正在考虑让我的 MCU 使用 10 位地址进行通信的可能性,但传感器只使用 7 位地址。

4个回答

选择一个您肯定不会在您的设计中使用的设备并使用它的 I2C 地址。例如,如果您不需要 RTC,则可以使用 NXP PCF8563(可能还有其他 RTC)使用的 0xA2 和 0xA3。

首先,不要使用 0x00 和 0x01,它们是保留的!I2C 总线规范的表 3列出了保留地址(以及原因):

从机地址 R/W 说明
 0000 000 0 广播地址
 0000 000 1 个起始字节
 0000 001 X CBUS 地址
 0000 010 X 为不同的总线格式保留
 0000 011 X 保留供将来使用
 0000 1XX X Hs 模式主码
 1111 1XX 1 设备 ID
 1111 0XX X 10 位从机寻址

您还应该避开 0x00,因为它没有边缘转换,并且可能是错误条件(并且很难调试)。

除此之外,我会说“让它可配置”。如果您希望能够插入各种各样的传感器,那么您可以向 NXP 支付地址,或者为其提供可调整的地址。如果您想分发源代码,软件修改应该是显而易见的。切换所选地址的一位或两位(数字引脚上的焊接跳线)的硬件选项既便宜又简单,或者带有连接到 A/D 引脚的跳线的电阻梯形网络可以让您完全控制硬件。

以下是截至 1999 年的已分配地址列表:http ://www.nxp.com/acrobat_download2/selectionguides/SELGUIDE.PDF

他们没有发布完整的列表,理由如下:

问:是否可以收到迄今为止使用的所有 I²C 从地址的列表?

答:不会。恩智浦半导体不会发布所有先前分配的从地址的列表,因为这是我们可以保证列表保持最新并且每个分配的地址都是唯一的唯一方法。如果此列表可用,I²C 总线被许可方将开始自己选择从地址,并且中央列表很快就会变得不完整,这可能导致地址冲突。已建立并证明行之有效的原则是,每个被许可人向 NXP Semiconductors 内的单个联系人发送从地址请求,然后该联系人根据单个主列表分配从地址。

来自http://www.nxp.com/products/interface_control/i2c/faq/

现在,如果一切都将在您的项目内部,那么您没有理由不能选择您想要的任何地址,只要它不与您计划连接的任何内容冲突。

正如 Kellenjb 所说,您不会获得从设备地址的完整列表。

但是,有几个保留地址是您不能使用的(例如,0x00 是广播地址)。

清单在这里

只要 7 位从机遵循 I2C 标准并忽略 10 位地址,混合 10 位和 7 位地址就可以了。