【问题标题】:How can we use SDA or SCL lines for I2C Addresses?我们如何将 SDA 或 SCL 线用于 I2C 地址?
【发布时间】:2020-02-18 01:26:22
【问题描述】:

TMP102 芯片(http://www.ti.com/lit/ds/symlink/tmp102.pdf)可以有多个 I2c 从地址。它有一个名为 ADD0(Section 5)的地址引脚,可用于选择多个地址(Section 7.3.4)。该引脚的逻辑电平可用于选择特定的 TMP102 从器件。根据表 4,可能有 4 个地址。我明白将引脚连接到高电压或低电压会产生两个不同的地址。但表中提到我们可以将 SDA 和 SCL 引脚用于两个不同的地址。我不确定这是如何工作的。谁能解释一下如何使用它以及我们如何使用基于 SDA 和 SCL 引脚的多个 TMP102 设备。

【问题讨论】:

标签: embedded hardware i2c


【解决方案1】:

该引脚的逻辑电平可用于选择特定的 TMP102 从设备

这不是 ADD0 的用途——它是配置引脚,而不是选择引脚。它不用于选择设备; I2C 地址是 SDA 上数据流的一部分,例如 SPI 上没有“select”引脚。

相反,ADD0 用于将每个设备的地址定义为表 4 中定义的四个地址之一。这些地址是 0x48、0x49、0x4A 或 0x4B 之一,具体取决于 ADD0 到 GND 的连接、V+、SDA 或 SDL 分别。像这样:

设备如何确定地址并没有在数据表中透露,您也不需要知道,但给出了:

来自 https://en.wikipedia.org/wiki/I%C2%B2C 的 Marcin Floryan 的公共领域图片

开始条件在 SDA 的下降沿发生以下情况:

ADDR ADD0 SDA SCL
0x48   0   v   1
0x49   1   v   1
0x4A   v   v   1   
0x4B   1   v   1

然后在下一个下降沿 SCL

ADDR ADD0 SDA SCL
0x48   0   0   v
0x49   1   0   v
0x4A   0   0   v   
0x4B   v   0   v

因此,可以使用适当的时序逻辑在 S 阶段结束时和 B1 之前锁存地址,这足够了,因为直到 B7 才会发生地址匹配,并且总线上的所有设备都必须侦听该地址。

【讨论】:

  • 什么时候考虑逻辑层?在 GND 和 V+ 的情况下,它们是固定的。在 SDA 和 SCL 的情况下,它们可以是 0 或 1(逻辑电平)。那么在查找该地址的 1bit 时会考虑 SDA 或 SCL 的级别吗?
  • @omkarkale :您不需要知道如何使用该部件,但我已经添加了我对如何完成的猜测。但是,这不是此问题的合适站点。我已请求迁移。
【解决方案2】:

您将 ADD0 连接到 SDA/SCL 以获取其他地址。该表显示了您根据 ADD0 所连接的地址获得的地址。

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多