器件型号:TPS65986
您好!
我们一直在使用 TPS65986、在插入集线器/充电器时遇到一些奇怪的角色交换问题。
我们一直致力于使 UFP / DFP 模式与 SOC 的 USB 设备/模式切换配合使用。 我们希望我们的器件在主机模式下处于 DFP/灌电流/SOC 正常状态。 我们希望允许出于调试和开发目的在器件模式下转换到 UFP/灌电流/SOC。
到目前为止、我们有两个问题:
1)将 https://www.anker.com/products/A8302041连接 到我们的 DUT、有时 TPS65986寄存器0x1A 会根据需要将字节0报告为0x5d (DR = DFP、PR = Sink)。 但是、有时它报告0x6d (DR = DFP、PR = Source)。 不知道我们最终如何成为一个来源。 我没有在 FW 中启用"处理交换到源"或"启动交换到源"。 为什么 TPS65986会将我们报告为来源? 调试这种情况的最佳方法是什么?
2) 2)在内核驱动程序处理中断时、PD 协商仍出现问题。 基本上、当我插入电缆(远端有其他 TPS65986 EVM 或 Anker 等器件)时、我们会收到中断、内核驱动程序会检查0x1a 寄存器、该寄存器报告0x1d (DR = UFP、PR = SINK)。 由于这是一个开发构建、我们允许 UFP 模式、因此我们通知 SOC USB 驱动程序启动切换到器件模式。 开关是异步的、因为它需要通过它们的状态机进行各种转换。
当这个转换发生时、由于0x1A 寄存器的值更新为0x5d (DR = DFP、PR = SINK)、所以会触发另一个中断。 此时、我们将通知 SOC 驱动程序转换到主机模式。 此请求将被忽略、因为它仍在转换到器件模式。
想知道:
--为什么在连接电缆后,我们会看到状态从0x1a 变为0x5a? 这是否仅仅是由于 PD 协商所需的时间?
--是否有一个中断可以用来知道何时完全检测到电缆状态(无论使用的是 BC1.2还是 PD)?
如果状态变化是由于 PD 协商,我们是否有办法知道连接了一个支持 PD 的设备,而且谈判仍在进行中?