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: Some issues working with BQ25756

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

Hi,

As the previous posts indicate, TPS25751 and BQ25756 are controlled separately via I2C by MCU in our design as following:

Some issues happened during our debug, could you kindly help to analyze? Thanks.

1.

At first we implemented the Source process based on the flow chart of the file "EC_Controlled_Supply.pd" in the last post.

7608.EC_Controlled_Supply.pdf

The steps are as following:

    Step 1.Confirm PD's loading from EEPROM, initialize Charger's registers including setting REG0x0C to 5V;

    Step 2.When peripheral Sink such as mobile phone is plugging in, I2Ct_IRQ interrupt of PD is recognized by MCU;

    Step 3.MCU read PD's Status Register, and confirm the Bit_5 Port Role is Source;

    Step 4.Enable Charger's Reverse mode to enable CHG_INPUT 5V output for Implicit Contract;

    Step 5.Wait for the Sink Transition Completed interrupt;

    Step 6.Read PD's Active RDO Contract Register;

    Step 7.MCU set Charger's REG0x0C according to the voltage value of RDO in the Step 6;

Then,

(1) Use mobile phone 5V, it works normal;

(2) Use mobule phone 9V, the RDO voltage and current are both 0 in the Step 6(It is stable phenomenon if we keep REG0x0C setting as 5V in step 1);

(3) If REG0x0C was modified to 9V in Step 1, then use mobule phone 9V, we could get valid RDO 9V(sometimes all 0);

(4) Use laptop 20V, the RDO voltage and current are both 0 in the Step 6. Then modify REG0x0C to 20V, we could get valid RDO 20V. But after serval attempts, the PD seemed to break dowm and could not work as Source for the above equipment including mobile phone 5V, mobile phone 9V. i.e, PD could not charge these peripheral devices any more. It seemed some permanent demage occured on this PD.

The questions are:

(1)What's wrong with the above steps? Why does it not work when configuring REG0x0C to 5V?

(2)What happened in the above issue when conifguring 20V?

2.

In the past we used local USBCPD tool(version 0.5.10) to generate PD's EEPROM data, which was "USBCPD_BasedOnOldTool_20240518.json", and it worked normal on our PD.

Recently we found this tool was updated to v0.6.0, so we applied the same configuration online and generate "USBCPD_BasedOnNewTool_20240518.json". But it could not work normal. For example, PD could not generate I2Ct_IRQ interrupt when Type-C was plugged in or out.

USBCPD_Config.zip

  • Hi Alex,

    (4) Use laptop 20V, the RDO voltage and current are both 0 in the Step 6. Then modify REG0x0C to 20V, we could get valid RDO 20V. But after serval attempts, the PD seemed to break dowm and could not work as Source for the above equipment including mobile phone 5V, mobile phone 9V. i.e, PD could not charge these peripheral devices any more. It seemed some permanent demage occured on this PD.

    How are you determining the PD is damaged? If you replace the PD controller, does the system begin working again?

    (1)What's wrong with the above steps? Why does it not work when configuring REG0x0C to 5V?

    Is 5V not working? You make it sound like 5V is fine, but 9V fails.

    (2)What happened in the above issue when conifguring 20V?

    The PD controller should be 20-V tolerant at PPHV, so unless a higher voltage is being programmed to the BQ, I'm surprised this is causing permanent damage. Did anything specific happen between the working attempt and the failing attempts?

    Recently we found this tool was updated to v0.6.0, so we applied the same configuration online and generate "USBCPD_BasedOnNewTool_20240518.json". But it could not work normal. For example, PD could not generate I2Ct_IRQ interrupt when Type-C was plugged in or out.

    You may need to make a new .json from scratch. There was a big update going from 0.5.X to 0.6.X and the .json file may not be fully compatible. I would recommend generating a new json and match the settings from the earlier version.

    Thanks and Regards,

    Chris

  • Hi Chris,

    Happy to see you again.

    How are you determining the PD is damaged? If you replace the PD controller, does the system begin working again?

    We re-powered our product and connected peripheral Sinks such as mobile phone, PD could not charge these peripheral Sinks as Source. Then read PD's Status register, Bit 5_Port Role is the default 0(PD Controller is in the Sink role).

    We replaced one PD controller today, and the system worked normal again.

    s 5V not working? You make it sound like 5V is fine, but 9V fails.

    Yes, the operation setting REG0x0C to 5V worked fine for the mobile phone whose charging voltage was 5V, but failed for the mobile phone 9V, it could NOT recognize the expected 9V/3A RDO and establish valid 9V connection.

    Did anything specific happen between the working attempt and the failing attempts?

    The main difference between them should be the Charger's REG0x0C configuration in the Step 1(One is 5V, the other is 20V), and I attached laptop 20V serveral times when configuring Charger's REG0x0C to 20V. Could you kindly ask your colleague of Charger to help analyze together? 

    You may need to make a new .json from scratch. There was a big update going from 0.5.X to 0.6.X and the .json file may not be fully compatible. I would recommend generating a new json and match the settings from the earlier version.

    Did not get it. How to make a new .json from scratch? The "USBCPD_BasedOnNewTool_20240518.json" was exported from the following website by manual(did NOT import my old .json file):

    https://dev.ti.com/gallery/view/USBPD/USBCPD_Application_Customization_Tool/ver/0.6.0/

    Thanks and Regards,

    Alex

  • Hi Alex,

    We re-powered our product and connected peripheral Sinks such as mobile phone, PD could not charge these peripheral Sinks as Source. Then read PD's Status register, Bit 5_Port Role is the default 0(PD Controller is in the Sink role).

    We replaced one PD controller today, and the system worked normal again.

    So it does seem very likely the PD was damaged.

    The main difference between them should be the Charger's REG0x0C configuration in the Step 1(One is 5V, the other is 20V), and I attached laptop 20V serveral times when configuring Charger's REG0x0C to 20V. Could you kindly ask your colleague of Charger to help analyze together? 

    What values did you write to the BQ and were you able to confirm the voltages were correct? Was there any chance the voltage exceeded the abs max of the connected pins?

    Making a fresh json from the 0.6.0 GUI is fine, I was worried you imported a .json form the 0.5.x GUI.

    Thanks and Regards,

    Chris

  • Hi Chris,

    What values did you write to the BQ and were you able to confirm the voltages were correct? Was there any chance the voltage exceeded the abs max of the connected pins?

    For BQ REG0x0C, 

        -5V: REG0x0C value 0xFA

        -20V: REG0x0C value 0x3E8

    The voltages should be correct. We measured the CHG2_INPUT voltages enabling the Reverse Mode of Charger(we did not attached the mobile phone, laptop), and the voltages were the expected values.

    Making a fresh json from the 0.6.0 GUI is fine, I was worried you imported a .json form the 0.5.x GUI.

    So why do the "USBCPD_BasedOnNewTool_20240518.json" and its corresponding EEPROM data not work on our PD? For example, PD could not generate I2Ct_IRQ interrupt when Type-C was plugged in or out. But the old one generated by v0.5.10 was OK.

    Thanks and Regards,

    Alex

  • Hi Alex,

    The voltages should be correct. We measured the CHG2_INPUT voltages enabling the Reverse Mode of Charger(we did not attached the mobile phone, laptop), and the voltages were the expected values.

    Got it, I'll need to do some testing on my end to check the RDO's. Please allow a bit of time as it may take a bit to set up.

    So why do the "USBCPD_BasedOnNewTool_20240518.json" and its corresponding EEPROM data not work on our PD? For example, PD could not generate I2Ct_IRQ interrupt when Type-C was plugged in or out. But the old one generated by v0.5.10 was OK.

    Which GPIO/I2C line are you using for the I2Ct port? What pin is the IRQ connected to. You may need to check your GPIO settings in the Advanced config tab.

    Thanks and Regards,

    Chris

  • Hi Chris,

    Got it, I'll need to do some testing on my end to check the RDO's. Please allow a bit of time as it may take a bit to set up.

    OK.

    Which GPIO/I2C line are you using for the I2Ct port? What pin is the IRQ connected to. You may need to check your GPIO settings in the Advanced config tab

    You could see the following picture mentioned in the above. We used I2Ct_IRQ to generate interrupt, where to configure its GPIO setting?

    And is there any problem for you to apply "USBCPD_BasedOnNewTool_20240518.json" on your site? If there's no, you could just apply it and help to check directly, thanks.

    Thanks and Regards,

    Alex

  • Hi Chris,

    In addition, we used TPS25751DREFR which was in PREVIEW stage(we got around 2024.02). And we asked our FAE for 10PCS TPS25751DREFR in ACTIVE stage.

    For Question 1, we replaced new PDs directly instead of the old ones and tested on these new PDs.

    And some description in the post was not accurate:

    (1)

    (3) If REG0x0C was modified to 9V in Step 1, then use mobule phone 9V, we could get valid RDO 9V(sometimes all 0);

    This issue was for old ones in PREVIEW stage. For new PDs in ACTIVE stage, we could always get valid RDO 9V, and it was stable.

    (2)

    (4) Use laptop 20V, the RDO voltage and current are both 0 in the Step 6. Then modify REG0x0C to 20V, we could get valid RDO 20V. But after serval attempts, the PD seemed to break dowm and could not work as Source for the above equipment including mobile phone 5V, mobile phone 9V. i.e, PD could not charge these peripheral devices any more. It seemed some permanent demage occured on this PD.

    We only implemented it on new PDs in ACTIVE stage. Due to lack of old PDs, we did not do this test on old ones.

    So is there any difference between the new PDs and the old ones? Need we to change the PD circuit for new PDs?

    For Question 2, this issue happened on both old PDs and new ones. 

    Thanks and Regards,

    Alex

  • Hello Alex, 

    TI Dallas in on holiday today. We will get back to you shortly. 

    Regards,
    Deepak  

  • Hi Chris,

    Is there any update?

    Thanks and Regards,

    Alex

  • Hi Chris,

    It is about 2 weeks from your last post.. We are eagerly waiting for your update.

    Thanks and Regards,

    Alex

  • Hi Alex,

    Sorry for the delays. I'll provide more feedback by the end of the week.

    Thanks and Regards,

    Chris

  • Hi Chris,

    Is there any update?

    Thanks,

    Alex

  • Hi Alex,

    Apologies for delays in response.

    Could you highlight the open issues again so I can take a look?

    Thanks and Regards,

    Chris

  • Hi Chris,

    Glad to have you back.

    I don't know how to highlight the previous posts. Yes, the description in this thread is a bit of confusion.. In order for your quick look, re-arrange this 2 issues as the following:

    Issue-1.PD could NOT get valid RDO if the charger's specific register(Here is 0x0C) was not set to higher value

    As the flowhart indicates, after checking 0x1A status and confirming PD as Source, we should “Enabled DC/DC at 5V for Implicit Contract”.

    The steps are as following:

        Step 1.Confirm PD's loading from EEPROM, initialize Charger's registers including setting REG0x0C to 5V;

        Step 2.When peripheral Sink such as mobile phone is plugging in, I2Ct_IRQ interrupt of PD is recognized by MCU;

        Step 3.MCU read PD's Status Register, and confirm the Bit_5 Port Role is Source;

        Step 4.Enable Charger's Reverse mode to enable CHG_INPUT 5V output for Implicit Contract;

        Step 5.Wait for the Sink Transition Completed interrupt;

        Step 6.Read PD's Active RDO Contract Register;

        Step 7.MCU set Charger's REG0x0C according to the voltage value of RDO in the Step 6;

    That's the job done in Step 4.

    But the 0x0C configuration of Charger seemed to have an effect for getting the valid RDO.

     

    Charger Config(0x0C) in Step 1

    PD RDO

    5V Mobile

    5V

    normal

    9V Mobile

    5V

    all 0, always could NOT get valid RDO

    5V Mobile

    9V

    normal

    9V Mobile

    9V

    could get valid RDO

    Issue 2.Different actions for different stages of the same PD, permanent demage when attaching 20V Source

    We got the same PD chips on different stages:

         PREVIEW stage: got around 2024.02

         ACTIVE stage: got around 2024.05

    and it seemed that they were different on some aspects.

     

    Charger Config(0x0C) in Step 1

    PREVIEW Stage

    ACTIVE Stage

    5V mobile

    9V

    Normal

    Normal

    9V mobile

    9V

    Sometimes Normal(1)

    Normal

    20V laptop

    20V

    /(2)

    Could get valid RDO, but permanent damage after serveral times(3)

    (1)Sometimes we could get valid RDO 9V, but all 0 in most cases;

    (2)We did not do this test due to the lack of PREVIEW Stag PDs;

    (3)We could gey valid RDO 20V, but after serval attempts, the PD seemed to break dowm and could not work as Source for the above equipment including mobile phone 5V, mobile phone 9V. i.e, PD could not charge these peripheral devices any more. It seemed some permanent demage occured on this PD.

    We re-powered our product and connected peripheral Sinks such as mobile phone, PD could not charge these peripheral Sinks as Source. Then read PD's Status register, Bit 5_Port Role is the default 0(PD Controller is in the Sink role).

    We replaced one PD controller today, and the system worked normal again.

    Issue 3.The configuration generated by New USBCPD tool could not work normal

     

    local USBCPD tool(version 0.5.10)

    online v0.6.0

    json file name

    USBCPD_BasedOnOldTool_20240518.json

    USBCPD_BasedOnNewTool_20240518.json

    result

    normal

    PD could not generate I2Ct_IRQ interrupt when Type-C was plugged in or out

    USBCPD_BasedOnOldTool_20240518.json:

    {
      "questionnaire": {
        "device": "TPS25751",
        "answers": [
          null,
          1,
          4,
          4,
          0,
          0,
          3,
          0,
          0,
          1,
          1,
          null,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "vendorId": "0000",
        "productId": "0000",
        "version": "1.0.0.2"
      },
      "configuration": {
        "data": {
          "selected_ace": [
            {
              "register": 22,
              "data": [
                8,
                24,
                0,
                128,
                0,
                4,
                0,
                31,
                0,
                0,
                0
              ]
            },
            {
              "register": 41,
              "data": [
                210,
                80,
                193,
                3
              ]
            },
            {
              "register": 50,
              "data": [
                4,
                168,
                42,
                44,
                145,
                1,
                38,
                44,
                209,
                2,
                0,
                44,
                177,
                4,
                0,
                244,
                65,
                6,
                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": [
                4,
                44,
                145,
                1,
                16,
                44,
                209,
                2,
                0,
                44,
                177,
                4,
                0,
                244,
                65,
                6,
                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": [
                62,
                64,
                31,
                65,
                144,
                145,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 60,
              "data": [
                10,
                0,
                1,
                0,
                1,
                54,
                0
              ]
            },
            {
              "register": 92,
              "data": [
                207,
                28,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                16,
                0,
                0,
                0,
                12,
                0,
                0,
                2,
                12,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                12,
                0,
                0,
                48,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                23,
                0,
                11,
                12,
                0,
                0,
                155,
                156,
                0,
                0,
                0,
                0,
                157
              ]
            },
            {
              "register": 112,
              "data": [
                1
              ]
            },
            {
              "register": 152,
              "data": [
                26,
                10,
                16,
                21,
                1,
                5,
                170,
                0
              ]
            }
          ]
        }
      }
    }

    USBCPD_BasedOnNewTool_20240518.json:

    {
      "questionnaire": {
        "device": "TPS25751",
        "answers": [
          null,
          1,
          4,
          4,
          0,
          0,
          3,
          0,
          0,
          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": [
                8,
                16,
                0,
                0,
                0,
                0,
                0,
                16,
                0,
                0,
                0
              ]
            },
            {
              "register": 40,
              "data": [
                2,
                0,
                47,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 41,
              "data": [
                210,
                80,
                144,
                3
              ]
            },
            {
              "register": 50,
              "data": [
                4,
                168,
                42,
                44,
                145,
                1,
                32,
                44,
                209,
                2,
                0,
                44,
                177,
                4,
                0,
                244,
                65,
                6,
                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": [
                4,
                44,
                145,
                1,
                16,
                44,
                209,
                2,
                0,
                44,
                177,
                4,
                0,
                244,
                65,
                6,
                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": [
                62,
                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": [
                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,
                4,
                0,
                0,
                48,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                157,
                0,
                0,
                0,
                0,
                156,
                155,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 112,
              "data": [
                3
              ]
            },
            {
              "register": 152,
              "data": [
                1,
                0,
                1,
                0,
                2,
                36,
                143,
                36,
                143,
                170,
                6
              ]
            }
          ]
        }
      }
    }

    Thanks,

    Alex

  • Thanks Alex,

    I'll review the info and get back to you more tomorrow or early next week.

    Are VIN3V3 and LDO3V3 up and stable during the different test cases? It seems weird that the Charger voltage register would effect obtaining an RDO. 

    When this was tested, is there a voltage on PPHV? I would expect that changing the reverse voltage does nothing unless reverse mode is enabled, which happens after the RDO should be set.

    Do you have a PD analyzer? 

    Do you know what might be getting damaged on the PD controller? Is it specifically at 20-V and is this with load?

    Thanks and Regards,

    Chris

  • Hi Chris,

    Are VIN3V3 and LDO3V3 up and stable during the different test cases?

    Sorry, our PCBA boards are all packed into the product demo, and we could not do the hardware test at present. We would communicate with other departments and ask for more PCBA boards, which might take serveral weeks.

    It seems weird that the Charger voltage register would effect obtaining an RDO. 

    Yes.. Would you kindly confirm this issue with your Charger colleague?

    When this was tested, is there a voltage on PPHV? I would expect that changing the reverse voltage does nothing unless reverse mode is enabled, which happens after the RDO should be set.

    In Step 1, thee reverse mode was not enabled. Then in Step 4, we would enable this reverse mode, and there would be a voltage, which was set on Step 1 as 5V, 9V, 20V,  on PPHV.

    Do you have a PD analyzer? 

    I have a logical analyzer which is Kingst, it is not specialized equipment used for PD analysis.

    Do you know what might be getting damaged on the PD controller? Is it specifically at 20-V and is this with load?

    NO, I have no idea for what might happened on PD. And Yes, it is specifically at 20-V load.

    Thanks,

    Alex

     

  • Hi Alex,

    Understood. Yeah, I might reach out to the Battery Charger team after I take a look. It seems very unlikely that these affect one another, so I want to make sure first.

    Thanks for the info,

    Chris

  • Hi Chris,

    Yeah, I might reach out to the Battery Charger team after I take a look. It seems very unlikely that these affect one another, so I want to make sure first.

    OK, Chris, get it. Look forward to your reply.

    Thanks,

    Alex

  • Hi Alex,

    I confirmed that the battery charger should not affect the RDO, the PD negotiation happens as long as the PD controller is powered properly (VIN3V3 or VBUS powered). 0x0C is for the output voltage of the BQ, so unless hte 3.3V rail comes off of that, it should not affect operation.

    Thanks and Regards,

    Chris

  • Hi Chris,

    Could you kindly explain how you tested and verified to obtain that conclusion? This conclusion seems to conflict with our phenomenon, and could you explain the reason of our issue mentioned in the above?

    BTW, Jan also had the same issue:

    TPS25751: development problems - Power management forum - Power management - TI E2E support forums

    Thanks,

    Alex

  • Hi Alex,

    It was not tested, but the PD negotiation (offering, requesting and accepting a contract, which results in and RDO) should happen provided there is board power (mainly PP5V and VIN3V3/VBUS in dead battery). Unless those voltages are derived from the output voltage of the TPS25756 (that is set by writing to register 0x0C), it should not affect the PD negotiation.

    The RDO should be a result of the negotiation.

    Thanks and Regards,

    Chris

  • Hi Chris,

    I knew what you meant, but it was only the theoretical thing, and was not correspond with the actual phenomena what we met.

    What we want is the explanation for the actual phenomena we mentioned above.

    Got it, I'll need to do some testing on my end to check the RDO's. Please allow a bit of time as it may take a bit to set up.

    It's been 3 months now, and no actual test on EVB?

    Thanks,

    Alex

  • Hi Chris,

    Is there any update?

    Thanks,

    Alex

  • Hi Alex,

    I will provide an update tomorrow.

    Thanks and Regards,

    Chris