您好!
在我们的设计中、可以为充电电路(基于 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 协议从主板移植到子板。
期待着听到人们的想法。
谢谢
杰西