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.

[参考译文] TUSB546A-DCI:带 TUSB546A、MCU、TPS65988 I2C 的多路复用器

Guru**** 2589245 points
Other Parts Discussed in Thread: TPS65988, TUSB546A-DCI

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1218350/tusb546a-dci-mux-with-tusb546a-mcu-tps65988-i2c

器件型号:TUSB546A-DCI
主题中讨论的其他器件:TPS65988

大家好、我想使用 MCU 对 TUSB546A 进行编程。 MCU 将是 TPS65988 PD 控制器、TUSB546A 之间的桥接器。 我不完全了解我必须从 PD 控制器读取哪个寄存器。

我的理解是、我可以在 TPS546A 侧多路复用器来配置 CTLSEL1、CTLSEL0和 FLIPSEL 寄存器。

我不明白 CTLSEL1、CTLSEL0、FLIPSEL 在 PD 控制器端代表什么。

我想在处理设备中使用2个 DP 通道和 USB3.1、而在另一个设备中、我只想使用 USB3.1。

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

    您好!

    CTL0、CTL1和 FLIP 将连接到 PD 控制器上的 GPIO。

    映射到电缆方向事件的 GPIO 将连接到翻转。

    映射到 USB3事件的 GPIO 将连接到 CTL0。

    映射到 DP 模式选择事件的 GPIO 将连接到 CTL1。

    您可以参阅 本文中的图2 、了解如何设置 GPIO

    此致

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

    我不想使用 PD 控制器的 GPIO、因为 PD 控制器位于其他模块上。 我想使用 I2C、使用 MCU 控制 tusb546a。 请不要分享不相关的解决方案

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

    您好!

    如果是这种情况、您可以读取寄存器0x5F 并查找 DPConnection、 USB3Connection 和 DataOrientation 位。 这些信息可在 TPS65988技术参考手册中找到。

    请注意、USB3总线受电设备有一个枚举计时器、使用 MCU 读取 PD 控制器数据状态、然后配置 TUSB546A-DCI 可能会超过计时器并将速度降级至 USB2。 如果您对此有任何疑问、可以将其转交给转接驱动器团队。

    此致

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

    有一个表是3-79。 它显示、需要读取 dpsourcesink 寄存器。  

    该表显示了什么内容? 我有点困惑。

    我创建 VESA 引脚连接 E、F、C、D、A。

    数据方向或电缆方向哪一个适合配置?

    uint8_t tps65988_mux_data (tps65988_t * tps65988){uint8_t PlugOrientation = tps65988_GET_PlugOrientation (tps65988);uint8_t DPConnection = tps65988 否则、如果(DPConnection ==1){switch (DPPinAssignment){情形0:if (USB3Connection ==0){if (PlugOrientation ==0){return DFP_D_PIN_ASSIGNMENT _E_NORMAL;break;}else if (PlugOrientation ==1){return DFP_D_PIN_ASSIGN_E_翻转;};} }else if (USB3Connection == 1){if (DPSourceSink == 0){if (PlugOrientation == 0){return DFP_D_PIN_PROVISION_F_NORMAL;break;}else if (PlugOrientation == 1){return DFP_D_PIN_PROVISION_F_SOURCE;break;中断;}return if (DFP_PIN_PROVISION= 0){PLUGIN= 1;}返回(DPSource= 0);} else if (PlugOrientation ==1){返回 INVALID_VALUE; break;}}情形1:if (PlugOrientation ==0){返回 DFP_D_PIN_PROVISION_C_NORMAL;break;} else if (PlugOrientation ==1){返回 DFP_D_PIN_ASSIGNATION_C_PROVISION; break;情形2:if (PlugOriention_D_POLITIN_D_FIP_D_RETURN);{RETURN; else if (PlugOrientation ==1){返回 DFP_D_PIN_ASSIGN_A_fliped; break;}情形3:if (PlugOrientation ==0){返回 INVALID_VALUE; break;} else if (PlugOrientation ==1){返回 INVALID_VALUE; break;}}}}

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

    您好!

    TRM 中似乎有一个拼写错误。 位1应该是您需要读取的电缆方向。

    表3-79是 DPPinAssignment、USB3Connection、DPSourceSink 的真值表。

    配置转接驱动器所需的信息位于寄存器0x5F 中。 如果您有任何关于  TUSB546A-DCI 的其他问题、可以将其转移到转接驱动器团队。

    此致

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

    如果添加电缆方向、我的代码对于转接驱动器是否足够? 我读取 DPSourceSink、USB3Connection、 DPPinAssignment 和方向、并为转接驱动器创建模式。

    uint8_t tps65988_mux_data (tps65988_t * tps65988){uint8_t PlugOrientation = tps65988_GET_PlugOrientation (tps65988);uint8_t DPConnection = tps65988 否则、如果(DPConnection ==1){switch (DPPinAssignment){情形0:if (USB3Connection ==0){if (PlugOrientation ==0){return DFP_D_PIN_ASSIGNMENT _E_NORMAL;break;}else if (PlugOrientation ==1){return DFP_D_PIN_ASSIGN_E_翻转;};} }else if (USB3Connection == 1){if (DPSourceSink == 0){if (PlugOrientation == 0){return DFP_D_PIN_PROVISION_F_NORMAL;break;}else if (PlugOrientation == 1){return DFP_D_PIN_PROVISION_F_SOURCE;break;中断;}return if (DFP_PIN_PROVISION= 0){PLUGIN= 1;}返回(DPSource= 0);} else if (PlugOrientation ==1){返回 INVALID_VALUE; break;}}情形1:if (PlugOrientation ==0){返回 DFP_D_PIN_PROVISION_C_NORMAL;break;} else if (PlugOrientation ==1){返回 DFP_D_PIN_ASSIGNATION_C_PROVISION; break;情形2:if (PlugOriention_D_POLITIN_D_FIP_D_RETURN);{RETURN; else if (PlugOrientation ==1){返回 DFP_D_PIN_ASSIGN_A_fliped; break;}情形3:if (PlugOrientation ==0){返回 INVALID_VALUE; break;} else if (PlugOrientation ==1){返回 INVALID_VALUE; break;}}}}

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

    您好!

    我会将其转移到转接驱动器团队、以便他们可以对您的代码进行评论。

    此致。

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

    谢谢

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

    您好!

    除了  DPSourceSink、USB3Connection、 DPPinAssignment 和方向以及为转接驱动器创建模式外、您还需要设置以下 TUSB546寄存器/位

    1.寄存器0x0A、位4 ->根据每个 EQ 寄存器的编程值启用 EQ 设置

    2.为 DP 通道设置寄存器0x10和0x11 -> EQ

    寄存器0x20和0x21 -。 USB 发送和 接收的 EQ 设置

    如果您不关心 TUSB546的功耗、也可以向寄存器0x13写入0x80值以禁用 AUX 侦听。

    谢谢

    大卫

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

    您误解了我的代码在 PD 控制器中用于创建要发送到 TUSB546的模式数据。 你们所有人都是在 TUSB546一侧说过的。 我的问题是如何在 PD 控制器端创建数据。

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

    您好!

    我们不允许用户将自己的代码插入我们的 PD 控制器。 您可以在 MCU 中运行代码并读取数据状态寄存器。

    我不明白您说的"如何在 PD 控制器端创建数据"是什么意思。  

    此致

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

    我的 PD 控制器位于 其他模块上。 我想使用 MCU 读取数据状态寄存器并将数据传输到其他模块(我的 USB 多路复用器模块)。 我知道在 TUSB546A 的多路复用器侧应该怎么做。 我问了您、我必须从 PD 控制器读取哪些位、必须传输到 USB 多路复用器模块。   我不明白  CTLSEL1、CTLSEL0、FLIPSEL 在 PD 控制器端代表什么。

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

    您好!

    请参阅下面的 TUSB 数据表、了解位定义。 您可以看到、FLIPSEL 等效于 PD 控制器寄存器0x5F 中的 FLIP 引脚连接、它对应于电缆方向、CTLSEL0等效于 CTL0引脚连接、它对应于  PD 控制器寄存器0x5F 中的 USB3Connection、 CTLSEL1 等效于 CTL1引脚连接、它对应于   PD 控制器寄存器0x5F 中的 DPConnection。

    此致