This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] PCA9548A:在同一微处理器 SCL/SDA 线路上使用多个 MUX

Guru**** 1831610 points
Other Parts Discussed in Thread: PCA9548A
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1087223/pca9548a-using-multiple-mux-on-the-same-microprocessor-scl-sda-lines

部件号:PCA9548A

 请记住,我没有对这些芯片进行任何实验...只是查看数据表。 而且,我没有经验!2T:

我有一个微处理器,要将个以上的 I2T 传感器连接到其中。

到处都是数据表,显示 A0,A1和 A2始终连接到地面,给出 A0=A1=A2=0。 但描述中说,这些引脚也可以连接到 Vcc,这样连接的任何引脚的地址值都是=1。

从这一点看,我可以将多个 MUX '9548连接到“风扇输出”到8,16,24 (...等)传感器,这些传感器各自没有唯一的地址。

上图来自 TI 公告,了解 I2C 总线(https://www.ti.com/lit/pdf/SLVA704),该公告经过修改以显示第二个 MUX 的扇出。

我的这种安排是否在正确的轨道上?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    首先,您可以使用3个地址引脚为您的 MUX 提供8个不同的唯一地址。 数据表将覆盖所有可能的地址引脚组合:

    所以,就像你说的那样,你可以添加多达8个粘液,并单独控制每个粘液。 现在,为了读取每个传感器,如果它们都有相同的地址,那么这正是 mux 可以使用的地方。 您可以使用 mux 来决定连接到总线的传感器。 请记住,如果所有传感器的地址都相同,则它们不应同时连接到总线。 您可以在未连接到设备的每个 mux 上保持总线打开状态,当您希望 mux 不连接到您要选择该总线的任何设备时。 这将为您提供每 mux 7个传感器。

    这就是我建议您使用 I2C 拓扑的样子。 它将使您能够通过 I2C 写入控制所有内容。

    现在,如果您要每 mux 获取8个传感器,可以通过断开 VCC 与设备的连接来禁用设备。 这是禁用设备的最佳方法。 但是,这很可能需要其他组件。 您也可以通过将 nReset 引脚拉低来将设备置于重置状态。 但是,不建议这样做,特别是在切换重置时出现总线卡滞问题的旧设备上。

    如果您有任何其他问题,请告诉我。

    最佳

    克里斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,谢谢你的快速和有帮助的回应。 我只需要确保我明白这一点。 我目前的理解是:

    1. 是的,我可以通过总线从微控制器的 SCL/SDA 中抽走多个 PCA9548a 从属设备
    2. 每个从属设备都有一个硬接线(接地或 Vcc 到 A0,A1,A2)地址
    3. 如果我想通过个从属设备连接到特定传感器,我需要在从所需传感器读取数据之前,通过对所有其他从属设备上的通道0寻址,从本质上断开所有其他从属设备的输入
    4. 如果我将从属设备的通道0保持断开状态,则不必执行任何重置或断开操作。

    请参阅随附的图纸和下面的问题

    问题:

    通道0空连接:这是否应该绑定到接地? 我应该使用电容器或电阻器与地面连接吗? 或者让它“浮动”是安全的吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的,这就是我如何做的,你的设置看起来很好。 请记住,您需要将所有 SCL/SDA 线路上的电阻器拉至 VCC。 这包括您的开放式总线 SC0和 SD0。 只需使用上拉电阻器将其向上拉至 VCC。 由于此总线将无法通信,因此您可以在10公里时使用弱信号。 您无法将该总线连接到 GND,因为这将使您的 SCL 轨和 SDA 轨保持在地面上,并且您将无法通过 I2C 总线进行通信。 这是一个不变的概念。 您不希望有任何噪音导致这些引脚意外地过低,因为这可能会损坏 I2C 通信。

    最佳

    克里斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,下面是我现在根据你的建议所拥有的:

    关于复位销,它是否也应该通过拉至 Vcc 来保持在高位?

    这解决了我的问题,但是,如果有人能帮助我提供一个清晰的 Arduino IDE 代码示例,我可以使用它来解决单个传感器问题,那将非常好!

    谢谢!!!!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    EM,

    这看起来很好,只需确保为传感器正确评估您的上拉电阻器。 我们有一份很好的文档,介绍如何计算上拉阻力。  

    复位销应有一个到 VCC 的上拉电阻器。 我不确定您是否正在设计 PCB,但如果您是,我建议使用0欧姆电阻器来向上/向下拉地址引脚,这样您就可以通过简单填充来更改 MUX 的地址 电阻器或去电阻器。  

    请记住以下几点:

    • 确保传感器地址不会与您的 MUX 地址冲突。
      • 只需确保它们不是同一地址。
    • 在为 Arduino 编程时,请确保一次只启用一个通道。
    • 最后,确保 Arduino 的 VOL 与 I2C 传感器的 VIL 兼容。
      • 这是您可以改变向上拉阻力以使其变弱,从而降低您的 VOL。 我不太熟悉 Arduino 设备,但我认为它们没有一些静态偏移电压。 但是,如果您想确保它与您的设备 VIL 兼容,请务必确保它不会被人误认为是错误的。

    此外,此 E2E 网站还提供了有关 TI 产品的帮助。 我们有一个 MSP430论坛,可以帮助您使用该设备,但我们没有 Arduino 设备的论坛。 如果您想获得有关 I2C 总线上要发送哪些数据的通用帮助,我们可以提供帮助。

    最佳

    克里斯