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: Charging DRP device like laptop/MacBook vol2

Part Number: TPS25751

Tool/software:

Dear TI support,

I would like to ask Christopher Lim1 if USBCPD_Application_Customization_Tool 1.0.2 already implements Updating Active RDO register patch as discussed in this thread:

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1414755/tps25751-development-with-external-mcu-and-bq25731

Now I write to continue previously closed thread:

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1446885/tps25751-charging-drp-device-like-laptop-macbook

I debuged our application and found out, that after PR_Swap initiation, there is only one Sink transition completed interrupt triggered in our application, but this IRQ requests faulty new contract object position 0. Which is faulty state.

Do I have to follow different procedure in order to implement PR_Swap functionality? Or standard handling of Sink transition completed interrupt should work fine here?

Thank you

  • TI US was closed today, sorry about delays.

  • Hi Jan,

    Sorry about the delays due to holidays.

    No, that fix is not in version 1.0.2, it is planned for the next release.

    Can you explain a more about the issue you are seeing?

    You are doing a power roles swap from source to sink?

    When you see the sink transition complete irq, you check the register and see nothing?

    Can you share the register data before and after the irq in the case you are describing?

    Thanks and Regards,

    Chris

  • Hi Chris,

    ok, we will wait for the next release.

    We are doing automatically issued "Initiate Swap to Source" power role swap as discussed in the thread mentioned above. So the swap from Sink to Source is the case.

    Yes, when we see the Sink transition completed interrupt we get 0 at the place where newly requested profile number should be (e.g. #5 in our case). 

    We readout all 0 both prior and also after the Sink transition completed interrupt from TPS25751_REG_ACTIVE_CONTRACT_RDO 0x35 register.

    thank you

  • Hi Jan,

    Let me review the thread and I will get back to you early this week.

    Thanks and Regards,

    Chris

  • Jan,

    Can you share I2C logs of the failure happening? And indicate when the PR_Swap happens?

    Also, please share your latest json.

    I can't think of any reason to expect the swap to source power swap to act any differently, but may need to check with the FW experts depending on the results of the log.

    Thanks and Regards,

    Chris

  • Hi Chris,

    we don't have I2C logger, what do you suspect, some error in I2C communication? That should be working allright as TPS25751 is working in our application right in both source and sink roles. What I can do is to capture I2C line on oscilloscope, but I guess that would be very poorly readable.

    Attached is our latest json for USBCPD_Application_Customization_Tool 0.6.0.

    {
      "questionnaire": {
        "device": "TPS25751",
        "answers": [
          null,
          1,
          4,
          4,
          0,
          0,
          0,
          3,
          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": [
                10,
                48,
                0,
                76,
                0,
                4,
                0,
                0,
                0,
                0,
                3
              ]
            },
            {
              "register": 40,
              "data": [
                2,
                0,
                63,
                7,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 41,
              "data": [
                210,
                80,
                152,
                90
              ]
            },
            {
              "register": 50,
              "data": [
                5,
                170,
                42,
                44,
                145,
                1,
                32,
                44,
                209,
                2,
                0,
                44,
                193,
                3,
                0,
                44,
                177,
                4,
                0,
                244,
                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
              ]
            },
            {
              "register": 51,
              "data": [
                5,
                44,
                145,
                1,
                16,
                44,
                209,
                2,
                0,
                44,
                193,
                3,
                0,
                44,
                177,
                4,
                0,
                69,
                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
              ]
            },
            {
              "register": 55,
              "data": [
                63,
                64,
                31,
                65,
                144,
                145,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 92,
              "data": [
                11,
                4,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                5,
                0,
                0,
                0,
                48,
                4,
                0,
                0,
                0,
                0,
                0,
                0,
                5,
                12,
                0,
                0,
                48,
                0,
                0,
                0,
                5,
                8,
                0,
                0,
                73,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 112,
              "data": [
                3
              ]
            },
            {
              "register": 152,
              "data": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            }
          ]
        }
      }
    }

    There is our log from EZ-PD Protocol Analyzer Utility in the thread mentioned above.

    As there is profile number requested 0 in TPS25751_REG_ACTIVE_CONTRACT_RDO 0x35 register I suspect that will be some other error in TPS25751 as our previous multiple threads regarding TPS25751_REG_ACTIVE_CONTRACT_RDO 0x35 register not updated correctly.

    thank you

  • Hi Jan,

    I'm not necessarily expecting a error in communication, more interested in seeing the flow and what is being written/triggered.

    My understanding is you are doing something like:

    • Start as sink
    • SWSr I2C command
    • See the sink transition interrupt
    • read active RDO
      • active RDO is empty?? or is it just the PDO number points to the wrong PDO
      • I'm interested in seeing the register value when you read it here

    Can you confirm if my understanding is correct?

    Thanks and Regards,

    Chris

  • Hi Chris,

    we are basically waiting for automatically issued "Initiate Swap to Source" power role swap as discussed in the thread mentioned above.

    1) yes we start as sink
    2) automatically issued "Initiate Swap to Source" power role swap is issued
    3) See the sink transition interrupt
    4) read active RDO and it is empty, all bit fields are 0

    Thank you

  • Thanks for the information Jan. If possible and reasonable, it may still help to get the I2C logs.

    I will share this information with the team and see what feedback I can get, I'll need to reach out internally to the FW team again.

    Thanks and Regards,

    Chris

  • Hi Chris,

    sorry to bother you with such a question, but could you recommend us then some cheap and reliable I2C logger that can save and load I2C logs that would be OK for sharing with you, please? I would like to avoid buying logger that will not allow us to share logs easily with you.

    Thank you a lot

  • Hi Jan,

    Let's wait a little to see if the FW team can resolve the issues without the logs. I'm also seeing if I can get a setup up to replicate your issue. I tried a simple recreation using manual reading and writing using an I2C interface tool, but did not see the issue you mentioned, potentially due to how much slower manual I2C reads and writes are. If we still at the end of the week, i'll let you know, but don't want to force you to get a logger.

    For something like this, a generic I2C logger that can get time and I2C traffic should be fine.

    It is probably not a "cheap" option, but we typically use Saleae Logic analyzers.

    Thanks and Regards,

    Chris 

  • Hi Chris,

    could the FW team resolve the issue, please?

    Thank you,

  • Hi Jan,

    I have not heard back from the team yet, let me ping them and see the current status.

    Thanks and Regards,

    Chris

  • Hi Chris,

    do you have any good news for me, please?

    thank you

  • Hi Jan,

    I will push the team again for a response, sorry for the delays here.

    Thanks and Regards,

    Chris

  • Hi Chris,

    are there any news please?

    thank you

  • Hi Jan,

    We are working on testing the power role swap on our end. I will keep you updated.

    When you read the active sink rdo register, is the entire register empty?

    Thanks and Regards,

    Chris

  • Hi Chris,

    yes, the entire rdo register is all zeros.

    thank you

  • Thanks, will update you soon.

    Thanks and Regards,

    Chris

  • Hi Jan,

    Sorry for the delays here, I was finally able to create and test the PR Swap you mentioned.

    I don't see any issues with the interrupt and register when a power role swap occurs.

    The TPS25751 is configured to be a 5-V sink, with initiate swap to Source set.

    The interrupt triggers, and the data does appear to be valid, allowing time to program a DC-DC to the correct voltage.

    In your implementation, can you read back and report the entire 0x35 register when the interrupt happens after the PR swap?

    This file can be viewed in the Logic2 software provided by Saleae.

    https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/196/Initiate-Swap-Register-reads.sal

    Thanks and Regards,

    Chris