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.

[参考译文] PCA9545A:控制开关下游的 I2C/SMBus

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1392797/pca9545a-mastering-i2c-smbus-from-downstream-of-switch

器件型号:PCA9545A

工具与软件:

您好!

我试图通过使用 Aardvark I2C 控制器、通过测试引脚控制 SMBus 并与 RT3674AE 稳压器通信、从主板获得一些外部遥测。 通过反复试错、我认为总线拓扑看起来是这样的:

[CPU] ---- [ i2c controller ] ---- [  PCA9545A 3] ---- [RT3674AE] ------[other devices]
                                   [           2] ---- [Test pins] ---- [Aardvark]
                                   [(disabled) 1] ----
                                   [           0] ----

当我使用 Linux shell 与 RT3674AE (从开关的上游)通信时、我得到了需要的值。 当我使用 Aardvark (开关的下游)时、可以读写一些寄存器、例如 chip id 和 page、但每当我尝试读取电压时、得到的值都没有意义、并且与使用 Linux shell 时获得的值不同。 我已经使用 i2cdetect 探测总线、但我不认为存在地址冲突、尽管我无法确定。  

我在这里就堆栈交换提出了相同的问题(https://electronics.stackexchange.com/questions/720343/i2c-regulator-returns-different-values-upstream-and-downstream-of-switch?noredirect=1#comment1916321_720343)、一个响应者说从开关的下游控制总线是不正确的。

如果我正在控制来自 PCA9545A 下游的总线、是否确实不应该期望有效的值?

谢谢。

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

    嗨、Andrew、

    如果我理解您的预期用途、此处的堆栈交换用户是正确的。 PCA9545A SCLx/SDAx 引脚只用于下游器件、不能用作控制器输入。 如果控制器位于目标侧、则启用/禁用将遇到问题、并且可能存在其他一些通信干扰。 因此、如果您选择 aardvark (图中的通道2)、aardvark 和 i2c 控制器可以正常通信、但如果您希望通过 aardvark 进行实际控制、则也无法实现。

    如果您有 GPIO 的实现、您可以尝试使用无源多路复用器并使用 GPIO 作为简单的解决方案来切换路径。 可以使用 SN74LVC4052A 之类的简单器件。  

    谢谢!
    Rami

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

    感谢您的答复、Rami。 导致这些通信干扰的原因是什么? PCA9545A 数据表中的方框图表明、当启用多个通道时、全是一条总线、一个控制器可以位于树中的任何位置。 干扰似乎只是 RT3674A 上的特定寄存器;我可以可靠地获取一些其他寄存器、甚至可以控制开关、但我不需要针对我的应用进行此操作。

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

    某些寄存器出现干扰听起来像是地址冲突。 确认这一点的唯一方法是禁用通道3并测试地址。

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

    嗨、Andrew、

    我在这里同意克莱门斯的观点、这听起来有点地址冲突。
    话虽如此、只是为了在我之前的评论和堆栈交换对用户的评论的基础上再进一步、您应该能够进行上游通信、但真正的问题是主 SDA/SCL 连接到 PCA 器件的内部状态机。 因此、如果您尝试使用上游设备作为控制器并选择切换 PCA 配置、您可能会锁定自己。 这就是我可能建议改用 GPIO 控制的多路复用器的原因。

    谢谢!
    Rami