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.

[参考译文] TPS25750:多 USBC 控制器至 BQ25792实现

Guru**** 2595800 points
Other Parts Discussed in Thread: TPS25750

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1292339/tps25750-multi-usbc-controller-to-bq25792-implimentation

器件型号:TPS25750

您好!

在我们的设计中、可以为充电电路(基于 BQ25792RQMR)供电多个 USB C 通道。

有一个标准的板载 USB C 端口与 TPS25750DRJKR 进行连接。 此外、该板可以插入同样具有 USB C 的主板。只会使用一个 USB C 端口、这由机械接口保证。  

理想情况下、BQ 充电器电路可通过任一 USB C 连接充电。  TPS25750将会在两个接口上协商 USB C 连接。

我正在就如何最有效地实现这一目标的几个备选方案进行辩论,我希望就最有力的方面得到一些反馈。 我有足够的连接来将 TPS I2C 连接到电路板上。 一般来说、系统看起来应该是这样的:  

其中 C1-C5是将子板连接到主板的金属触点。 这里明显的问题是、似乎无法立即在同一 I2C 总线上让两个 TPS 器件同时运行。 在这种情况下,这似乎是工作的,一次只能运行一个 TPS 模块。

下面是我看到的一些选项、这正是我想要反馈的地方:

选项1: 如上所示、无需进行任何修改即可实施系统。 子卡上的 TPS 模块未检测到 USB C 连接、因此允许主板上的 TPS 模块控制和操作总线。

我怀疑实施方式不会如此简单。 我可以看到两个 I2C 主器件在 I2C 时钟线上争用进行控制时出现的问题、即使只有一个检测到 USB C 连接也是如此。 在这种情况下,我还提出备选案文2:

选项2: 实现选项1、但需要子卡的 TPS 模块从 VBUS 上生成自己的3V3数字线路。 因此、当没有 USB C 插入子卡时、该 TPS 模块实际上关闭。 这使得主板 TPS 模块能够控制 I2C 线路。

我喜欢这个选项、但需要反馈。 3V3的内部 LDO 生成似乎仅在"独立电池"状态下实现。 作为模块的标准操作、这是否是有效的解决方案? 是否可以预见到其他问题? 如果在未上电的 I2C 引脚上出现3V3、是否有任何 ESD 二极管导通问题?

选项3: 使用子卡 TPS 模块上的 GPIO 检测子卡是否已插入主板。 如果已插入,请禁用子卡上的 TPS 模块(或至少禁用芯片上的 I2C 端口)。  

这个选项看起来很可靠、但是我不希望为 TPS 模块编写任何自定义固件。 GPIO 是否可轻松配置、从而实现上述方案?

如果有其他选项可用,我都是耳朵。 我通常无法大范围地修改子卡上的触点数量、因此无法添加足够的内容以将整个 USB C 协议从主板移植到子板。

期待着听到人们的想法。

谢谢

杰西

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

    您好、Jesse:

    我们针对您的场景提供了一些建议。

    1.) 此建议是避免不具有多主机支持(TPS25750)的器件出现多主机 I2C 问题的最简单方法。 该操作还假设两个 PD 端口都仅受电方、这意味着主板和子板都不会通过 PD 端口提供任何电源。

    您可以在电池电量耗尽模式下运行两个 PD 控制器、这将保证不会为具有未连接端口的 PD 控制器供电。 电池无电模式意味着 PD 控制器没有 VIN_3V3输入、因此它将从 VBUS 引导。 PD 启动后、将从外部 EEPROM 加载配置、然后根据配置运行。 当 PD 以电池电量耗尽模式运行时、唯一的限制是 PD 控制器无法供电。 在您的应用场景中、我建议始终像这样运行两个 PD 控制器、根本不连接 VIN_3V3。 由于您指示系统在机械上限制为一次一个连接的端口、因此只会对连接的端口上的 PD 控制器供电、从而保证一次只使用 BQ 器件的 I2C 线路来控制一个 I2C 主器件。 在电池电量耗尽模式下、I2C 数据仍将发送到 BQ 器件。 因为 VIN_3V3可能不存在、  

    该解决方案的限制是可能很难调试 PD 控制器、因为如果没有连接到端口的远端源、就无法为 PD 供电。 此外、也无法从这些端口进行供电。

    2.) 上面的选项1将不起作用、因为除了在端口连接时、PD 还需要在上电时向 BQ 器件发送 I2C 配置。

    3.) 以上选项2可能有效。 我认为您建议的选项2与我上面建议的简单解决方案相似。  电池无电意味着不存在为 PD 控制器供电和为 LDO_3V3供电的 VIN_3V3。 相反、VBUS 却用于为两者供电。 我在上面第1点的建议是建议的解决方案。 无需从 LDO_3V3或 VBUS 生成 VIN_3V3信号。

    4.) 这里的巧妙解决方案是使用 MCU 或 EC 来配置 BQ 器件、而不是让 PD 执行此操作。 在该解决方案中、不会连接 PD I2Cm 线路。 相反、系统中的 MCU 或 EC 将通过 I2C 线路接收来自 PD 的中断、并向 BQ 部分发送必要的 I2C 数据、以便在来自 PD 的不同中断时对其进行配置。 这将确保只有一个主器件使用 I2C 线路、但需要在您的 MCU 或 EC 上实现一些自定义代码。

    如果您对以上建议的解决方案有任何疑问、敬请告知。

    此致!

    亚历克斯