主题中讨论的其他器件: TCA9548A
大家好、我在两个级别上使用类似树的架构、使用 I2C 开关 TCA9546和 TCA9548。 在定义 I2C 命令序列(来自控制器的 SCL/SDA 信号序列)以在最后一层设置从器件配置方面、我能获得帮助吗? 谢谢、Shalaka
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.
嗨、Shalaka、
在这种情况下、您似乎不需要实施动态寻址设置、但如果您有兴趣、可以在以下网址阅读: http://www.ti.com/lit/pdf/scaa137
因此、为了确保控制器不会遇到地址冲突、我们必须:
1) 1)从不启用 TCA9546A 的通道0和通道3
2) 2)切勿启用任何 TCA9548A 的多个通道(一次只能启用一个通道
我们要在其中与 TCA9548A 0x72的通道6通信的事务示例如下所示:
1) START condition->0x70h (我们需要将9546A 通道0设置为 ON)+ WRITE 位{这看起来像8位字节格式的0xE0h}->9546A 应该会进行 ACK 应答
2)发送数据包:0x01h (这只启用通道0)->停止条件
3) START condition->0x72h (我们需要设置9548A 通道6为 ON)+ WRITE 位{这看起来像8位字节格式的0xE4h}-> 9548A 应该会进行 ACK 应答
4)发送数据包:0x40h (这仅启用通道6)->停止条件
现在、您可以在通道6上与从站通信
--------------------------------------------
我还注意到您正在级联开关。 因此、您不仅要摆脱 TCA9546A、还要并联三个9548A。 然后、您可以将交换机的其中一个地址设置为0x70h、0x71h 和0x72h、这将允许在三个交换机之间使用唯一的地址。
谢谢、
-Bobby
嗨、Shalaka、
"在这方面、我还有一个问题、在与最终从属方通信后、我如何回到 TCA9546之前的水平或达到初始水平? 我是否需要禁用所有通道或其他功能?"
因此、有两种方法可以处理这种情况。 (是禁用步骤1中的所有通道)
1) 1)如果您已完成所需的上述相关通道上的所有事务(让我们像上一个示例一样使用0x72h 的通道6)、则您将写入0x72h 交换机的从器件并写入0x00h (这是将禁用该开关的所有通道的字节)。 之后、您将写入9546地址0x70h 并写入0x00h、以同时禁用该开关上的所有通道。 这将使您恢复到与上电时类似的状态、因为 I2C 开关通道状态全部被禁用。
2) 2)只需切换9546和9548器件的 RESET 引脚。 复位切换会将器件置于禁用所有通道的默认状态。
谢谢、
-Bobby
[引用用户="Shalaka Shinde"]
但我不能仅仅退一步?
假设我完成了与0x72通道6上的从器件的通信、只需返回一步即可开始与0x72通道7进行通信。
是否可以在不达到初始电平0x70的情况下实现该目的?
是的、您也可以执行此操作。 我假设您想要关闭所有 I2C 开关通道。 您可以继续使用0x70h 的通道0、只需将954.0 0x72h 地址的通道更改为通道7而不是6。
此外、即使 多个 TCA9548器件上的从器件地址相同、我也可以使用常规调用地址广播数据。
德州仪器(TI)的 I2C 从设备不支持通用调用地址(我无论如何都不知道任何地址)。 因此、您无法同时快速写入所有开关。
谢谢、
Shalaka
[/报价]
[Bobbi]上面的评论用粗体显示