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.

[参考译文] TPS25751:在何处/如何读取 SPR PPS 合约的协商电流/电压?

Guru**** 2446030 points
Other Parts Discussed in Thread: TPS25751

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1538316/tps25751-where-how-to-read-negotiated-current-voltage-for-spr-pps-contract

器件型号:TPS25751

工具/软件:

我们提供了具有受电 PPS 曲线和 PPS 兼容壁式充电器 (3.3V - 11V、5A) 的 TPS25751。
合约协商后、我可以从活动 PDO 寄存器中读取最小/最大电压和最大电流。
但从何处读取协商的电压和电流? (在我本例中为 8.4V、因为它在 PD PPS 受电端配置文件中进行了设置)

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

    您好、Oleg、

    活动 RDO (0x35) 寄存器应具有最近协商的电压和电流。

    谢谢。此致、

    Chris

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

    您好、Chris。
    感谢您的回答。

    我尝试读取该 RDO 寄存器、后跟结果。

    协商供电方合约后此寄存器的内容:
    活动 RDO 寄存器:0x1304B12C 0x00000000 0x00000000 0x1304B12C <-最后 32 位是正确的源合约、如技术手册中所述、由我们的驱动程序良好解码和处理。

     受电方 PPS 合约协商时此寄存器的内容:
    活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000 <-最后 32 位为空(我认为应该是关于合约的信息)、前 32 位正在随着不同的 PPS 合约值进行更改(我尝试在 PD 配置中更改 PPS 的电压/电流)。
    但在技术手册中、这些位标记为“保留“、仅此而已。 我假设这些 位是正确的、其中包含有关协商 PPS 合约的电流/电压的信息、但请您提供有关 如何解码此值的信息吗?
    但是、如果我的假设错误、请告诉我从哪里可以读取受电方 PPS 合约的协商值。

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

    您好、Oleg、

    感谢您指出这一点。

    “RDO"(“(请求(请求数据对象)实际上由 USB-C PD 规范定义。

    TRM 仅显示固定合同的外观、因为这是最常用的。 PPS RDO 实际上看起来略有不同、并包含电压信息。

    表 6-25 中的 B0 至 B31 应与有效 RDO 寄存器中的 B0 至 B31 保持一致。

    还包括固定和可变 RDO 的屏幕截图、供您参考。

    如您所见、物体位置和许多其他位是相似的。 要正确解码、您可能需要先检查对象位置、然后检查源上限消息中的对象以确定 RDO 类型。

    然后、您可以最终解码 PPS 电压和电流。

    希望这可以澄清混淆。

    完整规格可在以下位置找到: https://www.usb.org/document-library/usb-power-delivery

    谢谢。此致、

    Chris

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

    正如我之前所写的、对于受电方 PPS 合约、位 31..0 为零。 这是主要问题。
    对于源合约、这些位包含正确的源合约(具有对象索引和工作电流,正如 PD 协议描述所规定的那样)、我们的驱动程序能够对它们进行完美解码。
    但是同样、对于受电方 PPS 合约、所有这些位都为零、因此我无法解析它们以在 PPS 模式下获得协商的电流。
    我的问题是如何解析 RDO 寄存器的 95..64 位,因为只有这些位不是零,但在手动描述为“保留“。 我尝试将它们解码为 PDO 对象、但似乎不可能...

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

    1.我使用 PD 分析仪,看到 PPS 合约已协商。
    2.我知道 ActiveRDO 不存储 PDO,它存储运行电流等 我在源代码模式(对于固定合约)下解析它以获取对象位置和工作电流、并且运行良好、因此我认为我 可以从正确的位置和偏移读取数据。
    3.当 PD 控制器生成“新合约作为消费者“(设置了中断事件寄存器的 12 位)事件时,我读取 ActiveRDO 寄存器,这是正确的吗?

    以下是日志的一部分:
    [1297.628510] tps25751 1-0020:集成:新的接收端协议
    [1297.630045] tps25751 1-0020:活动 PDO 合约寄存器:0xC0DC2164
    [1297.630060] tps25751 1-0020:PDO SPR PPS 合约、Vmin = 3300mV、Vmax = 110000mV、Imax = 5000mA
    [1297.632506] tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000 <-这些最后 32 位存储活动 RDO
    [1297.632515] tps25751 1-0020:有效 RDO 合同:0x00000000
    [ 1297.632522] tps25751 1-0020:请求 PDO:obj_pos=0、V=0mV、0mA

    因此、最后 32 位存储 Active RDO 在拉电流合约中非常有效、但在灌电流合约中为空。

    这是 PD 分析仪输出的屏幕截图。
    (请忽略底部,连接在屏幕截图时刻处于非活动状态)


    此外还尝试在循环中读取该寄存器、似乎它从未在低 32 位中具有正确的值:
    [67.751996]  tps25751 1-0020: Int: new sink contract
    [67.753301]  tps25751 1-0020:活动 PDO 合约寄存器:0xC0DC2164
    [67.753309]  tps25751 1-0020:PDO:0xC0DC2164
    [67.753320]  tps25751 1-0020:PDO SPR PPS 合约、Vmin = 3300mV、Vmax = 110000mV、Imax = 5000mA
    [67.755205]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [  67.755213] tps25751 1-0020:请求 PDO:obj_pos=0、V=0mV、0mA
    [67.809778]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [  67.865681] tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [67.873849]  tps25751 1-0021:活动 RDO reg: 0x00000000 0x00000000 0x00000000 0x00000000
    [67.921811]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [67.926199]  tps25751 1-0020:活动 PDO 合约寄存器:0xC0DC2164
    [67.926205]  tps25751 1-0020:PDO:0xC0DC2164
    [67.926209]  tps25751 1-0020:PDO SPR PPS 合约、Vmin = 3300mV、Vmax = 110000mV、Imax = 5000mA
    [67.981755]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [68.041700]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [68.101811]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [68.162788]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [68.225895]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [68.281834]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [68.338010]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [68.394149]  tps25751 1-0021:活动 RDO reg:0x00000000 0x00000000 0x00000000 0x00000000
    [68.411207]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [68.493789]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [68.551026]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [68.607776]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [68.665796]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [68.721741]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000
    [68.777879]  tps25751 1-0020:活动 RDO 寄存器:0x63838450 0x00000000 0x00000000 0x00000000

    相同的代码、但对于源合约:
    [45.570838]  tps25751 1-0020: Int: new source contract
    [45.575091]  tps25751 1-0020:活动 RDO 寄存器:0x1304B12C 0x00000000 0x00000000 0x1304B12C
    [  45.575101] tps25751 1-0020:PDO:0x2501912C
    [45.575104]  tps25751 1-0020:PDO 固定合约、V = 5000mV、Imax = 3000mA
    [45.575107]  tps25751 1-0020:请求 PDO:obj_pos=1、V=5000mV、3000mA
    [45.637713]  tps25751 1-0020:活动 RDO 寄存器:0x1304B12C 0x00000000 0x00000000 0x1304B12C
    [45.697692]  tps25751 1-0020:活动 RDO 寄存器:0x1304B12C 0x00000000 0x00000000 0x1304B12C
    [45.757698]  tps25751 1-0020:活动 RDO 寄存器:0x1304B12C 0x00000000 0x00000000 0x1304B12C
    [45.817778]  tps25751 1-0020:活动 RDO 寄存器:0x1304B12C 0x00000000 0x00000000 0x1304B12C
    [45.817783]  tps25751 1-0020:有效 RDO 合约:0x1304B12C

    相同的活动 RDO 寄存器由相同的代码读取、但最低 32 位(不是零)、但存储正确解码的正确数据。

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

    您好、Oleg、

    我不知道为什么有源 RDO 寄存器会将系统中的位 31:0 清零。

    如前所述、RDO 寄存器中的对象是  RDO、  不是 PDO、它们的格式略有不同。

    我已经在 EVM 上测试了 Sink PPS、但我这边似乎工作正常 通常、当没有有效的 PD 合约时、这些位将被置为零。 您是否确定已协商 PPS 合同?

    请参阅下面我的一些测试的屏幕截图。

    当我看到 TPS25751 在受电方 PPS 中请求 13.5V。

    然后、检查活动 RDO 寄存器的 b0:321、并读取 0x71854614

    首先检查 B31:28 以确定物体位置、我们可以看到它是 7、这对应于 PPS PDO。 这将告诉我们如何使用 PPS  RDO 用于解码有效 RDO 寄存器中的 RDO 的表

    为了找到电压、我们取 B20:9、这对应于值 0x2A3(12 月 675 日)并获得值 13.5V (675 * 20mV)。 对电流执行同样的操作可得出工作电流为 1A

    然后、如果我在自动协商灌电流中修改灌电流 PPS 电压以将电压更改为 9V、我会看到相应的活动 RDO 寄存器更新。

    0x35 读取:0x71838414。 电压字段现在显示为 9V

    如果有效的 RDO 寄存器为零、则可能是您不在 PD 合约中或读取得太快。

    谢谢。此致、

    Chris

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

    您好、Oleg、

    我来回顾一下中断的时序。

    我只是在看到最低 32 位时作为接收器进行测试。

    如果我理解正确、似乎最低 32 位支持受电、但不支持供电?

    谢谢。此致、

    Chris

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

    Oleg、

    我测试了几次接收端配置、并获得了上述日志、您是否确定正确地解释了 I2C 读取? TPS25751 将发送 LSB  首先、

    因此、根据上面的日志、B31:0 将为 0x71854614、其中 0x71 是 MSB、0x14 是 LSB。

    当协商受电方合约并从寄存器 0x35 读取 16 个字节时、我永远看不到 上部  已填充 32 位。

    在提供时、高 32 位会像您所注意的那样被填充。

    谢谢。此致、

    Chris