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: development problems

Part Number: TPS25751
Other Parts Discussed in Thread: BQ25731, , TPS25750, BQ25756

Dear TI,

I would like to continue the thread

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1300538/tps25751-tps25751-development-problems

we waited months for new production active TPS25751 to be released and now as we test it we realize the problem seems to be still there.

1) we wait for Sink Transition Completed interrupt event - 42
2) RDO contract Register (0x35) is pointing to 5V 3A profile even when SINK requests e.g. 9V 3A or some higher voltage profile

In detail the problem is this:

When we request power profile #1 (5V 3A), Active RDO Contract Register reads one of these variants:

a) 0x0c / 0x2c / 0xb1 / 0x04 / 0x10 which equals to 3000mA and object position #1
b) all zeroes sometimes

When we request power profile #2 (9V 3A), Active RDO Contract Register reads one of these variants:
a) 0x0c / 0x2c / 0xb1 / 0x04 / 0x10 which equals to 3000mA and object position #1
b) all zeroes sometimes

We are now extremely frustrated as this was promised to us to be corrected in new/active version of TPS25751 and now it seems to behaves incorectly again.
Could you help us to solve this please?
  • Hi Jan,

    I read through the previous thread, and am aware that you will want answers and a solution urgently. I will prioritize this issue and begin by doing the following:

    1. Reviewing the firmware implementation for the active RDO.
    2. Reviewing the feature requests for this device.

    I will update you on Monday with my findings and next steps.

    Kind regards,

    Conner Gillette

  • Hi Conner,

    I made an error on Friday, I forget to cycle the power after new patch data generated from USBCPD Application Customization Tool, so I was evaluating the system with patch data from previous version of USBCPD Application Customization Tool.

    So when I do the power cycle now in order to patch the TPS25751 with correct data, the system is not working neither.

    In Sink mode, it is working correctly, but in Source mode, connected device (sink - e.g. mobile phone or our development board from STM) is not able to establish stable PD contract with the source.

    Could you help please with this? It was working better with PTPS25751...

    Thank you

  • Hi Conner,

    I attach json configuration file.

    To describe better our device, it will be 4s smart battery charger with USBC PD input and output, like smart power bank with replaceable battery. It will be possible to charge battery from PD source connected with 20V 3,25A power supply (or weaker if not available this powerful one) and if battery is charged, it will be possible to power external system with our device with one of the following profiles - 5V/3A, 9V/3A, 12V/3A, 15V/3A or 20V/5A.

    What was functional with previous version of USBCPD Application Customization Tool and PTPS25751 is:

    1) When battery is not connected and PD power source supporting 5V/3A, 9V/3A, 12V/3A, 15V/3A or 20V/3,25A is connected, then TPS25751 correctly establish PD contract using highest power profile available - 20V/3,25A, this is correct.

    2) When battery is connected (system is powered up including TPS25751) and PD power source supporting 5V/3A, 9V/3A, 12V/3A, 15V/3A or 20V/3,25A is connected, then TPS25751 surprisingly choose 5V/3A profile and uses it for battery charging. This is incorrect, we want the TPS25751 to chose also highest power profile available - 20V/3,25A.

    3) Battery is connected (system is powered up including TPS25751) and external device (PD sink) is connected no PD contract is reached, this was partly working with previous version of USBCPD Application Customization Tool and PTPS25751, usually lowest power profile was established using STM P-NUCLEO-USB002 device.

    could you help us with this please?

    Thank you

    3005.TPS25751_config.json.txt
    {
      "questionnaire": {
        "device": "TPS25751",
        "answers": [
          null,
          0,
          4,
          4,
          0,
          0,
          0,
          0,
          1,
          1,
          1,
          1,
          2,
          1,
          16.8,
          4,
          0,
          0,
          2.88
        ],
        "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,
                56,
                0,
                140,
                0,
                4,
                0,
                12,
                0,
                0,
                3
              ]
            },
            {
              "register": 40,
              "data": [
                2,
                0,
                47,
                4,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 41,
              "data": [
                82,
                80,
                128,
                0
              ]
            },
            {
              "register": 50,
              "data": [
                5,
                168,
                42,
                44,
                145,
                1,
                16,
                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,
                129,
                0,
                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,
                6,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 92,
              "data": [
                13,
                12,
                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,
                0,
                0,
                0,
                0,
                5,
                8,
                0,
                0,
                73,
                0,
                76,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                0
              ]
            },
            {
              "register": 112,
              "data": [
                0
              ]
            },
            {
              "register": 152,
              "data": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            }
          ]
        }
      }
    }

  • Thank you for the additional detail and the json file. I will review it and root cause your issues and provide an update tomorrow.

    Kind regards,

    Conner

  • Hello Conner,

    do you have any updates please? We would really like to make it work quickly.

    thank you

  • My apologies Jan. I need at least one more day to investigate and I will get back to you with a meaningful update.

    Regards,

    Conner

  • Hello Conner,

    I just wanted to let you know our design is derived from TPS25751EVM and we use BQ25731 battery charge controller with USB type-C PD support and external microcontroller for communication over I2Ct interface with TPS25751 and we control BQ25731 from mcu too.

    Thank you for any news

  • My apologies for not having a meaningful update yet Jan. I am actively consulting with my peers to help find the root cause of your issue.

    Regards,

    Conner

  • Hello Conner,

    thank you very much for your replies, but could you give us at least some more details please? Do you thing it will work in the end as desired in dual role power applications, please?

    We are couple of engineers here waiting for it and would very much prefer to wait for successful end than to have to start again from scratch with different solution.

    We have cross fingers that you will be able to figure it out how to get it working.

    Thank you

  • Hello Conner,

    I tried to be polite and not to push too hard, but it seems this is not the right approach. We have had serious problems with your products over the past 6 months. Firstly, with the active product TPS25750, where the declared functions are not working correctly and you admitted that. (No solution came from your support.) You forwarded us to your new TPS25751, which at that time was in the preview state PTPS25751, and it was supposed to finally work fine. Our development team waited a few months for this chip, which cost us a fortune. PTPS25751 maybe solved some of the previous bugs of TPS25750, but it had new bugs, which we reported. You (TI) wrote that you knew about these bugs we reported, but we were assured that these bugs would be solved in the final version of TPS25751, which was supposed to be on the market in the next 3 months. Our team waited again, and the opportunity cost we spent on that cannot be easily described. After COVID-19 times, it is very hard for smaller manufacturers like us to wait such a long time. When the final version of TPS25751 came (with about a 3-week delay), it still had the same bugs, which you confirmed as known bugs and bugs that would be solved in the final version. To be exact, these bugs are making this part useless in the way you describe on the web and in datasheets. When we reported that to you, we got an understanding response, but no solution for almost 3 weeks. This product we are working on is very important to us, and we are in the very final stage of development, just waiting for a solution from you that would make this part work as declared in your datasheets and on the web.

    We really need to be more involved in the steps you are taking right now. We need to know if there is an issue with the current batch of TPS25751 or if you are going to discontinue the part because of this behavior, which makes this part useless for everyone (because it cannot offer sourcing power role). Or if you found the issue and are working on some workaround that would make the functionality of the part right.

    We are very frustrated from waiting and waiting and we need to be informed accordingly.

    Since there is no other support channel than this forum, we are forced to write it here.

    Thank you.

    Jan

  • Hi Jan,

    I am not a member of TI group, just a user to use TPS25751 and BQ25756. In our design, TPS25751 and BQ25756 are also controlled separately by MCU.

    The same issue of TPS25751 in PREVIEW stage which mentioned in your last post also occured on our desgin, and it seemed to be solved on the new TPS25751 in ACTIVE stage(It was not confirmed by official TI, so I used ‘seemed to be solved’ here).

    The key was thay we found that there's Reverse Mode in the charger BQ25756, and this mode had to be enabled when the TPS25751 worked as Source, and you had to set REG0x0C to a wider limit(The default limit of this register is 5V).

    You could see my last post for reference, hope it could solve your problem.

    Thanks,

    Alex

  • Hello Alex,

    thank you a lot for your message, unfortunately this did not resolve our issue, as we have more serious issues with TPS25751, not only original issue as described at the beginning. Could you email me at "pa.vavra (at) volny.cz" I would like to ask you some additional information, but I don't want to write it here as I would like to keep the thread clear and empty for direct TI support.

    We are still waiting for TI support, please, Conner, could you give us some information?

  • 2) When battery is connected (system is powered up including TPS25751) and PD power source supporting 5V/3A, 9V/3A, 12V/3A, 15V/3A or 20V/3,25A is connected, then TPS25751 surprisingly choose 5V/3A profile and uses it for battery charging. This is incorrect, we want the TPS25751 to chose also highest power profile available - 20V/3,25A.

    Are you able to provide the USB-PD logs of this behavior? There is a possibility that a 20V contract is being requested, and this will help clarify the behavior.

    3) Battery is connected (system is powered up including TPS25751) and external device (PD sink) is connected no PD contract is reached, this was partly working with previous version of USBCPD Application Customization Tool and PTPS25751, usually lowest power profile was established using STM P-NUCLEO-USB002 device.

    Do you have the USB-PD logs for this situation as well?

    ---

    I feel like the above two issues are related to communication to the BQ25731 device, and that voltage transitions are not occuring (circled in figure below) after tSrcTransition but before the PD controller sends the PS_RDY message, causing a hard reset in question 3 and a default to an implicit Type-C contract in question 2 above.

    What values are you reading in the Active RDO register right after the SinkTransitionCompleted interrupt?

    Can you provide logs that elucidate the values communicated and timing of the communication, as well as whether or not the voltage transition is occuring?

  • Hello Conner,

    thank you for getting back to us,

    add 2) There are two scenarios of TPS25751 SINK,
    - case1 - not fully charged battery is inserted, then current draw occurs right after connection to SOURCE and in fact, no contract is reached. See picture bellow:

    - case2 - fully charged battery is inserted, then after connection to SOURCE also no contract is reached. See picture bellow:

    add 3) Here are USB-PD logs of TPS25751 SOURCE,
    - case3 - contract is not reached. So no SinkTransitionCompleted interrupt is never triggeres, this was working in TPS25750 and also with PTPS25751 and TPS25751 with patch generated from older USBCPD_Application_Customization_Tool. Please see picture bellow:
    new info: - case4 - When I connect smart phone to TPS25751, smart phone gives 5V to VBUS, but now PD contract is reached again, with previous versions of TPS25750, PTPS25751 smart phone connected as SINK and established PD contract without any problem. Please see picture bellow:
    What values are you reading in the Active RDO register right after the SinkTransitionCompleted interrupt?

    - As I stated above, this interrupt is never triggered as PD contract is not reached.

    Can you provide logs that elucidate the values communicated and timing of the communication, as well as whether or not the voltage transition is occuring?

    - again I think I cannot do it as no PD contract is reached.

    From all above, I suspect some issue in configuration of USBCPD_Application_Customization_Tool. I cannot understand why previous versions of TPS25750 and also with PTPS25751 and TPS25751 with patch generated from older USBCPD_Application_Customization_Tool were working better, than latest TPS25751 and USBCPD_Application_Customization_Tool 0.6.0 combination,
    The case when TPS25751 is not powered on - no battery connected - works fine, when we connect PD SOURCE, it establish PD contract (TPS25751 as SINK) with highest power available. Please see picture bellow:
    thank you for any thoughts
  • Do you have one of the functioning configurations from the previous application tool? I'd like to compare it to what you're using now.

    I'll also provide you an updated binary, as I have some idea as to what could be the cause here.

    Regards,

    Conner

  • Hello Conner,

    I'm sorry, but as I didn't expect any problems with newer USBCPD_Application_Customization_Tool I didn't save the *.json file of the previous versions.

    But I posted one configuration in thread bellow, I just don't know, if that was the last one best working.

    e2e.ti.com/.../tps25751-tps25751-development-problems

    Just to be sure, we perform patching with low region binary in *.C

    Don't you have 0.5.10 version of USBCPD_Application_Customization_Tool for download, please?

    thank you

  • I believe I've found the root cause of the issue with your implementation not working with your existing config. I've attached a new config that maintains your GPIO settings, your IRQ settings, PDOs, etc.

    Please let me know if you run into any issues with this configuration.

    Regards,

    Conner

    jan_fixed-20240606.json
    {
      "questionnaire": {
        "device": "TPS25751",
        "answers": [
          null,
          1,
          4,
          4,
          0,
          0,
          0,
          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": [
                10,
                48,
                0,
                76,
                0,
                4,
                0,
                0,
                0,
                0,
                3
              ]
            },
            {
              "register": 40,
              "data": [
                2,
                0,
                47,
                4,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 41,
              "data": [
                82,
                80,
                152,
                2
              ]
            },
            {
              "register": 50,
              "data": [
                5,
                168,
                42,
                44,
                145,
                1,
                32,
                44,
                209,
                2,
                0,
                44,
                193,
                3,
                0,
                244,
                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": [
                61,
                12,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                5,
                4,
                0,
                0,
                48,
                4,
                0,
                0,
                0,
                0,
                0,
                0,
                5,
                12,
                0,
                0,
                0,
                0,
                0,
                0,
                5,
                8,
                0,
                0,
                73,
                0,
                76,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                0
              ]
            },
            {
              "register": 112,
              "data": [
                3
              ]
            },
            {
              "register": 152,
              "data": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            }
          ]
        }
      }
    }

    jan_fixed-20240606.bin

  • Hello Conner,

    thank you very much for sent config file, I imported it to USBCPD_Application_Customization_Tool 0.6.0 and exported  low region binary in *.c and things started to work.

    I'm confused about the changed selection in step 1 questionnaire, as from your settings it appears that there is no power output to USB-C connector from HV power path, that is why we had the first option with BQ circuit selected.

    I still have the problem with reading RDO contract Register (0x35) after Sink Transition Completed interrupt. This register gives me all zeros, or if I implement 50ms delay, it always points to PDO #1 even if I request higher PDO profile e.g. #2,3,4 or 5.

    Thank you

  • Hello Conner,

    would you have any clue on this issue, please?

    Thank you

  • The configurations with the red BQ block imply that we are communicating with the selected BQ device using I2C communication. And when we attempt to communicate with the BQ device via I2C and receive a NACK, we assume there is a problem and therefore don't negotiate PDOs. Removing the BQ block config means that we no longer stop functionality when we receive a NACK on the I2C bus.

    As far as the other issue: To make sure I am understanding correctly, in the problem scenario you are a source going from a 5V PDO to a higher PDO, such as 9V.

    Can you send me the raw data from the register (all 96 bits)? I reviewed the firmware and this value should be updated right before that interrupt is triggered. Can you also read out the values in 0x34 PDO after receiving the interrupt?

    Regards,

    Conner

  • Hello Conner,

    thank you for explanation

    As far as the other issue: To make sure I am understanding correctly, in the problem scenario you are a source going from a 5V PDO to a higher PDO, such as 9V.

    Yes, exactly, TPS25751 is SOURCE with established contract 5V/3000mA, when I request on SINK 9V/3000mA described problem occurs.

    Can you send me the raw data from the register (all 96 bits)? I reviewed the firmware and this value should be updated right before that interrupt is triggered. Can you also read out the values in 0x34 PDO after receiving the interrupt?

    After requesting 9V/3000mA on SINK, then after Sink Transition Completed interrupt I read these values:

    TPS25751_REG_ACTIVE_CONTRACT_RDO reg 0x35

    byte 0: 44 / 0x2c / 00101100
    byte 1: 177 / 0xb1 / 10110001
    byte 2: 4 / 0x04 / 00000100
    byte 3: 16 / 0x10 / 00010000
    byte 4 - 11: 0 / 0x00 / 00000000

    TPS25751_REG_ACTIVE_CONTRACT_PDO reg 0x34

    byte 0: 44 / 0x2c / 00101100
    byte 1: 145 / 0x91 / 10010001
    byte 2: 1 / 0x01 / 00000001
    byte 3: 43 / 0x2b / 00101011
    byte 4: 0 / 0x00 / 00000000
    byte 5: 2 / 0x02 / 00000010

  • What is the timing from receiving the interrupt to reading these registers?

  • Hello Conner,

    we did replace IC for new one and behavior is still the same - very strange as described bellow. 

    Isn't it possible we got PTPS25751D again as this strange behavior we were facing on the PREVIEW part before? On the chip there is "25751D" mark.

    What I figured out is this behavior (TPS25751 all time as SOURCE):

    Scenario A)
    - When I statically set BQ25731 to output 9V 3000mA OTG Voltage/Current (This equals to PD profile #2), no changes to this settings are done after Sink transition completed interrupt, so there is all the time 9V from BQ25731
    - Then while there is 9V output from BQ25731
    - When I request profile #2 on SINK, the successful PD contract is reached with 9V 3000mA result
    - When I read ACTIVE_CONTRACT_RDO reg 0x35 with 0ms delay after Sink transition completed interrupt I get wrong result - pointing to PD object #1 - 5V profile
    - but When I read ACTIVE_CONTRACT_RDO reg 0x35 with 100ms delay after Sink transition completed interrupt I get correct result - pointing to PD object #2 - 9V profile
    - Then when I request profile #1 on SINK, the successful PD contract is reached with 5V 3000mA result
    - When I read ACTIVE_CONTRACT_RDO reg 0x35 with 0ms delay after Sink transition completed interrupt I get wrong result - pointing to PD object #2 - 9V profile
    - but When I read ACTIVE_CONTRACT_RDO reg 0x35 with 100ms delay after Sink transition completed interrupt I get correct result - pointing to PD object #1 - 5V profile
    - now when I request profile #3 on SINK (12V 3000mA) HARD_RESET is generated and PD contract #1 is reached at 5V around 1 sec after request
    - at the point of requesting #3 profile if I read ACTIVE_CONTRACT_RDO reg 0x35 with 0ms delay after Sink transition completed interrupt I get wrong result - pointing to PD object #1 - 5V profile
    - same happens at this point if I request profile #3 on SINK (12V 3000mA) and I read ACTIVE_CONTRACT_RDO reg 0x35 with 100ms delay after Sink transition completed interrupt I get wrong result - pointing to PD object #1 - 5V profile

    observation 1 - from above it is clear, that there has to be delay before reading ACTIVE_CONTRACT_RDO after Sink transition completed interrupt, otherwise I get wrong result
    observation 2 - from above it seems that reading ACTIVE_CONTRACT_RDO reg 0x35 object position gives correct result only if there is already correct voltage on the BQ25731 OTG output (TPS25751 PPHV path input)

    now it gets even more weird:

    Scenario B)
    - I set BQ25731 to output OTG Voltage/Current depending on the ACTIVE_CONTRACT_RDO reg 0x35 readout after Sink transition completed interrupt, so there is no output voltage at the beginning and I try to setup requested voltage (which should be advertised through ACTIVE_CONTRACT_RDO reg 0x35)
    - I request profile #2 on SINK, but HARD_RESET is generated and new PD contract #1 is reached at 5V after around 1 sec after request
    - When I read ACTIVE_CONTRACT_RDO reg 0x35 with 0ms delay after Sink transition completed interrupt I get wrong result - pointing to PD object #1 - 5V profile or sometimes all zeroes
    - When I read ACTIVE_CONTRACT_RDO reg 0x35 with 100ms delay after Sink transition completed interrupt I get wrong result - pointing to PD object #1 - 5V
    - Same happens if I request profile #3 on SINK - HARD_RESET is generated and new PD contract #1 is reached at 5V after around 1 sec after request
    - When I read ACTIVE_CONTRACT_RDO reg 0x35 with 0ms delay after Sink transition completed interrupt I get wrong result - pointing to PD object #1 - 5V profile or sometimes all zeroes
    - When I read ACTIVE_CONTRACT_RDO reg 0x35 with 100ms delay after Sink transition completed interrupt I get wrong result - pointing to PD object #1 - 5V

    observation 1 - from above it seems that reading ACTIVE_CONTRACT_RDO reg 0x35 object position gives all the time wrong result as there is no voltage on the BQ25731 OTG output (TPS25751 PPHV path input)
    Should we order new samples as it could be the HW problem?
    I would like to repeat we perform patching with low region binary in *.c is that allright?
    thank you
  • Hello Conner,

    we realized the way how it started to work. TPS25751D in SOURCE mode

    1) When Sink transition completed interrupt is triggered then following steps have to be done:
    2) Set BQ25731 OTG output to 5V 3000mA for 50ms
    3) Set BQ25731 OTG output to 20V for 1ms
    4) Set BQ25731 OTG output to 5V for 120ms
    5) Read ACTIVE_CONTRACT_RDO reg 0x35 which give us correct requested profile number
    6) Adjust BQ25731 OTG output according to profile # requested

    - if done in this way, we can be without any problem switching through profiles e.g. 20V - 9V - 15V - 5V - 12V and so on

    - if step 2 is skipped, we can be only changing in ascending order e.g. 5V - 9V - 12V - 15V - 20V but then we cannot switch to lower profile again (Read ACTIVE_CONTRACT_RDO reg 0x35 gives incorrect profile # requested in that case)

    - if step 3 is skipped, Read ACTIVE_CONTRACT_RDO reg 0x35 gives incorrect profile # requested, it seems TPS25751 needs to measure 20V on HVPP in order to work correctly at this moment

    - step 4 - lower 5V voltage is there to prevent high power dissipation on internal HVPP switching elements, and 120ms delay must be there to allow ACTIVE_CONTRACT_RDO reg 0x35 update with correct requested profile #

    Maybe this helps somebody

    We would still be very grateful for some better workaround, as this solution means, there is fixed 5V on VBUS for the 120ms period of time in which SOURCE is already sending PS_READY message to the SINK

    Thank you

  • Hi Jan,

    I'm glad to hear you found a working solution. I've created an issue request with our firmware team to review the behavior and provide another solution or potentially update the firmware.

    Kind regards,

    Conner