我应该选择哪个I2C地址?


16

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

我正在寻求有关我应该为项目中的从属和主控MCU选择什么地址的建议。板上还将有一个EEPROM。因此,我将避免使用EEPROM的地址。我计划让主机连接到各种传感器,包括陀螺仪和加速度计,以及可能的其他存储设备。有没有我应该注意的地址栏?我在考虑只将0x00用作主服务器,将0x01用作从属服务器,因为这些似乎很少使用。

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


1
@ W5VO。是的,就在SD卡旁边,人们只想要3,000美元。
Thomas O 2010年

1
@ThomasO,您不需要为保留地址而付钱,就像标识符一样,您不必为制造设备而付钱,他们正在出售服务。SDcard他们正在执行其知识产权,他们可以告诉您这样做或选择其他技术。
Kortuk

1
@ThomasO,我要指出的是,在这种情况下,您需要付费。同样,在一个实际产品中,两千美元并不多。
Kortuk

1
@Thomas O $ 3,000对于产品实际上是非常合理的。对于任何制造产品的公司来说,这都是一笔钱。
Kellenjb 2010年

2
@reemrevnivek,但专利持有人选择了他们宁愿要求并导致开放硬件无法使用,并要求支付此费用。作为专利持有人,他们拥有这项权利。我是,直到法律改变,才能确保这一点是明确的。我希望对专利和版权进行大修,但是直到他们这样做之前,这就是保护和奖励有好主意的工程师的方式。
Kortuk

Answers:


13

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

从站地址读/写描述
 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引脚上,就可以完全控制硬件。


1
+1为可配置地址。我已经在从属设备上看到了这一点,这些设备将在同一总线上具有多个相同的事物。
Kellenjb 2010年

是的,我当时在考虑可配置的地址。可以通过更改菜单系统中的设置来更新。重要的一点是,需要添加保护措施以防止有人更改地址并且主MCU失去与从设备的通信,因此需要建立某种协议来重置地址(例如5秒钟后没有通信,因此重置地址) 。)
Thomas O 2010年


10

以下是截至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/

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


奇怪的推理:由于没有清单,他们确保清单保持最新...:-/
Federico Russo

简单的推理:他们想确保分配ID的任何人都将拥有真实的最新列表;列表的副本过时会破坏该目标。
supercat

1
@Federico他们有一个列表,只是不发布它,所以人们被迫仔细检查以确保列表是最新的。如果该列表已发布,那么会有大量人选择未使用的地址,那么当有人正确保留该地址时会发生什么?
Kellenjb 2011年

FWIW:SELGUIDE.PDF位于Internet存档链接中
HiTechHiTouch

1

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

但是,有几个保留的地址无法使用(例如,0x00是常规呼叫地址)。

清单在这里

只要7位从站遵守I2C标准并忽略10位地址,就可以混合使用10位和7位地址。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.