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: Need working example of Sink-only PPS configuration

Part Number: TPS25751

Tool/software:

The supply's SRC_CAP message contains 6 PDO's, Number 6 is SPR PPS APDO, 3.3-21V, 5A max.

I haven't been able to get the PD to accept a PPS contract, it always ends up at the default 5V.

Here is the config file as .txt.  Dragging the json file over gets a "file type is not allowed red" box in the upper right.

Can you straighten out the config file or provide a working PPS Sink config example?

{
  "questionnaire": {
    "device": "TPS25751",
    "toolBuildVersion": "1.1.1",
    "answers": [
      null,
      5,
      4,
      1,
      1,
      0,
      3,
      0,
      1,
      1,
      1,
      null,
      0,
      0,
      0,
      0,
      0,
      0,
      0
    ],
    "vendorId": "0000",
    "productId": "0000",
    "version": "1.0.0.2"
  },
  "configuration": {
    "data": {
      "selected_ace": [
        {
          "register": 6,
          "data": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ]
        },
        {
          "register": 22,
          "data": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            3
          ]
        },
        {
          "register": 40,
          "data": [
            0,
            0,
            46,
            1,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            1
          ]
        },
        {
          "register": 41,
          "data": [
            50,
            80,
            128,
            0
          ]
        },
        {
          "register": 50,
          "data": [
            0,
            168,
            42,
            44,
            145,
            1,
            32,
            44,
            209,
            2,
            0,
            44,
            177,
            4,
            0,
            44,
            65,
            6,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ]
        },
        {
          "register": 51,
          "data": [
            2,
            100,
            144,
            1,
            16,
            20,
            90,
            240,
            192,
            44,
            177,
            4,
            0,
            44,
            65,
            6,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ]
        },
        {
          "register": 55,
          "data": [
            55,
            64,
            6,
            12,
            240,
            208,
            34,
            0,
            1,
            0,
            0,
            0,
            20,
            132,
            3,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ]
        },
        {
          "register": 66,
          "data": [
            26,
            0,
            24,
            0
          ]
        },
        {
          "register": 92,
          "data": [
            207,
            12,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            4,
            0,
            0,
            0,
            4,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            64,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            65,
            0,
            0,
            0,
            0,
            0,
            0
          ]
        },
        {
          "register": 112,
          "data": [
            3
          ]
        },
        {
          "register": 119,
          "data": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            15,
            0
          ]
        },
        {
          "register": 120,
          "data": [
            0,
            0,
            0,
            128
          ]
        },
        {
          "register": 122,
          "data": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "register": 123,
          "data": [
            0,
            2,
            255,
            255,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ]
        },
        {
          "register": 125,
          "data": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ]
        },
        {
          "register": 126,
          "data": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            2,
            0,
            0,
            0,
            0,
            0,
            0
          ]
        },
        {
          "register": 152,
          "data": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ]
        }
      ]
    }
  }
}

  • Hello,

     Do you have a means to record the PD logs (https://www.ti.com/tool/TI-PD-ANALYZER)?  I have tried on my side and not seeing an issue.

    Regards,
    Chris

  • Here's the output from Cypress CY4500. The PD always asks for PDO 1

    And of course when I retried the binary from the PPS4_config, the PD asked for PDO6 and got 9V 1A .

  • Hello,

    Can you attach the log file?

    Thanks,
    Chris

  • Of course, as soon as I posted that, I tried the binary from PPS4_config again, and the PD asked for PDO 6 and got 9V 1A.

    Log file?  The CY4500 can save it's capture as a CSV...

  • Hello,

    If it is too much trouble, then do not worry about it.  I was going to look at the SOPP messages to see what the cable was advertising.  I will close this but feel free to reply or start a new post if you have additional questions.

    Regards,
    Chris

  • Here's the Cable part of the session that worked:

    and the CY4500 export;

    CY4500_export.zip

  • Hello,

     Yes.  The working log makes sense.  I do not see anything strange with the cable.  I will close this.

    Regards,

    Chris

  • I wanted to see if I could get 10V since that isn't one of the fixed offerings.

    I changed Transmit Sink Capabilities PDO2 Minimum Voltage to 10.0, and regenerated the full binary and flashed the eeprom.

    The PD still asked for 9V.

    Is there something in the json that is overriding the Transmit Sink Capabilities?

  • Hello,

    Did you update the Sink_PPS_Controls?

    Regards,

    Chris

  • Yep, that was it.  If Sink_PPS_Controls governs, why have a PPS_SInk PDO at all?

    I tried finding something in the json saying 9v or 10V, decimal or hex, and didn't find anything.

    It looks like the register numbers are decimals of the hex numbers in the GUI, but I didn't get much beyond that.

    Is there a description somewhere of how to interpret the json?

  • Hello,

    I tried finding something in the json saying 9v or 10V, decimal or hex, and didn't find anything.

    The values in the json are all decimal but the registers are byte-wise in ordering.  In the screen shot above the PPS output voltage is 9V, this is 450 (0x1c2) because the LSB of this field is 20mV.  The bitfield location is 105-115 which is in bytes 13 and 14: 0000 0011 1000 0100 . 

    Is there a description somewhere of how to interpret the json?

    Not really.  The intent of the GUI is not to read the json.  You can correlate with the TRM.

    https://www.ti.com/lit/ug/slvucr8a/slvucr8a.pdf#page=43

    Regards,

    Chris

  • So do I need to fill in both Sink_PPS_Controls AND the PPS_SInk PDO, or is one or the other sufficient?

  • Hello,

    Yes.  You would need to fill in both.  The idea of PPS is that the sink is will send periodic updates within a particular PDO range - sweep the voltage up or down as the battery is charging.  Even if you only need one voltage within the range you would still need both.  

    Regards,
    Chris

  • Now that we've decided what we want is 12V 0.5A, I can't get the PD to request those.

    It keeps requesting 10V 1A, which was the last working config.

    I deleted the previous binary files, so it's not getting old content.

    If I erase the eeprom the PD doesn't start, so it's reading the eeprom.

    Is there something in the attached config that still says 10V 1A?

    {
      "questionnaire": {
        "device": "TPS25751",
        "toolBuildVersion": "1.1.1",
        "answers": [
          null,
          5,
          4,
          1,
          1,
          0,
          3,
          0,
          1,
          1,
          1,
          null,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "vendorId": "0000",
        "productId": "0000",
        "version": "1.0.0.2"
      },
      "configuration": {
        "data": {
          "selected_ace": [
            {
              "register": 6,
              "data": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 22,
              "data": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                3
              ]
            },
            {
              "register": 40,
              "data": [
                0,
                0,
                46,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                1
              ]
            },
            {
              "register": 41,
              "data": [
                50,
                80,
                128,
                0
              ]
            },
            {
              "register": 50,
              "data": [
                0,
                168,
                42,
                44,
                145,
                1,
                32,
                44,
                209,
                2,
                0,
                44,
                177,
                4,
                0,
                44,
                65,
                6,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 51,
              "data": [
                2,
                100,
                144,
                1,
                16,
                10,
                120,
                240,
                192,
                44,
                177,
                4,
                0,
                44,
                65,
                6,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 55,
              "data": [
                55,
                32,
                3,
                6,
                240,
                192,
                35,
                0,
                1,
                0,
                0,
                0,
                20,
                232,
                3,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 66,
              "data": [
                26,
                0,
                24,
                0
              ]
            },
            {
              "register": 92,
              "data": [
                207,
                12,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                4,
                0,
                0,
                0,
                4,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                64,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                65,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 112,
              "data": [
                3
              ]
            },
            {
              "register": 119,
              "data": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                15,
                0
              ]
            },
            {
              "register": 120,
              "data": [
                0,
                0,
                0,
                128
              ]
            },
            {
              "register": 122,
              "data": [
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 123,
              "data": [
                0,
                2,
                255,
                255,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 125,
              "data": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 126,
              "data": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                2,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 152,
              "data": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            }
          ]
        }
      }
    }

  • Hi, 

    Chris is currently out of office today. Please allow some delay in responses. 

    Best Regards, 

    Aya Khedr

  • Hello,

    Yes.  It appears that 10V and 1A is still selected in the initial PPS request message.

    Regards,

    Chris

  • So there are four settings involved in requesting the PPS voltage and current.

    Sink_PDOn

    Autonegotiate_Control

    Autonegotiate_Max_or_MinValues

    Sink_PPS_Controls

    Or are there more?

  • Hello,

    Or are there more?

    Not directly related to PPS.  There are others which are indirectly, for example the registers above have no meaning if you are source only.  Most of the registers align with the USBC-PD specification, so you can use that as a guide.  I will provide feedback to the larger team that a more detailed recipe would be helpful in developing applications using PPS.

    Regards,
    Chris