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: TPS25751 and BQ25756 got PP1 and PP3 switch disabled due to fault

Part Number: TPS25751
Other Parts Discussed in Thread: BQ25756, BQ25756E, PMP41062, TPSM33615

Tool/software:

Hello, 

I've swapped the BQ25756E to a BQ25756 as suggested. 
I'm trying to source again at 5V3A and 9V3A.

When a contact has been established, the PD sink sends a HARDRESET due to the sink not being able to power up the VBUS. See picture below. 

I2C contact between TPS and BQ seems to be alright:

write to 0x6B ack data: 0x0C 0x04 0x04 
write to 0x6B ack data: 0x0A 0x4C 0x00 
write to 0x6B ack data: 0x02 0x00 0x00 
write to 0x6B ack data: 0x06 0x20 0x00 
write to 0x6B ack data: 0x08 0x48 0x03 
write to 0x6B ack data: 0x19 0x21 
write to 0x6B ack data: 0x17 0xC8 
write to 0x6B ack data: 0x19 0x21 
write to 0x6B ack data: 0x19 0x21 
write to 0x6B ack data: 0x17 0xC8 
write to 0x6B ack data: 0x19 0x21 
write to 0x6B ack data: 0x19 0x21 
write to 0x6B ack data: 0x19 0x21 
write to 0x6B ack data: 0x19 0x21 
write to 0x6B ack data: 0x0C 0xE0 0x03 
write to 0x6B ack data: 0x19 0x21 
write to 0x6B ack data: 0x19 0x21 
write to 0x6B ack data: 0x0A 0x18 0x01 
write to 0x6B ack data: 0x0C 0xE0 0x03 
write to 0x6B ack data: 0x19 0x21 
write to 0x6B ack data: 0x17 0xC8 
write to 0x6B ack data: 0x19 0x21 
write to 0x6B ack data: 0x19 0x21 
write to 0x6B ack data: 0x19 0x60 
write to 0x6B ack data: 0x19 0x60 
write to 0x6B ack data: 0x17 0xCC 
write to 0x6B ack data: 0x0C 0x04 0x04 
write to 0x6B ack data: 0x0A 0x4C 0x00 

But when reading out TPS register 0x26 (PD_Status), both PP1 and PP3 faults disable the switches.

.json I use is found below:

{
  "questionnaire": {
    "device": "TPS25751",
    "toolBuildVersion": "1.0.2",
    "answers": [
      null,
      2,
      4,
      4,
      0,
      0,
      3,
      0,
      1,
      1,
      1,
      3,
      0,
      3,
      1.536,
      6.75,
      0.25,
      0.25,
      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": [
            2,
            0,
            46,
            1,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            3
          ]
        },
        {
          "register": 41,
          "data": [
            194,
            80,
            128,
            0
          ]
        },
        {
          "register": 50,
          "data": [
            2,
            170,
            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": [
            0,
            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": 66,
          "data": [
            26,
            0,
            8,
            0
          ]
        },
        {
          "register": 92,
          "data": [
            13,
            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,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            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": 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,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ]
        },
        {
          "register": 152,
          "data": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ]
        }
      ]
    }
  }
}

However I am able to use this combination of controllers as a sink upto 100W. 
That is only possible when I control the BQ with a MCU. When using the TPS as a controller for the BQ the same problem occurs.

When does a fault on the PP1 and PP3 switches occur? Due to overcurrent?

  • Hi, 

    TI U.S. is on Holiday today. Please expect some delay in responses. 

    Best Regards, 

    Aya Khedr 

  • Hello,

    Type-c state machine is selected as DRP however there are no sink PDOs defined, have you tried to change the state-machine to source only does this match what you are configuring in the GUI?

    I will also review the i2c transactions to confirm the operation.  You mentioned that it works with an MCU, have you compared the I2C traffic?

    The fault may be overcurrent resulting in an under voltage event.  

    Regards,

    Chris

  • Hi Chris,
    Thanks for your response. 
    I've also tried the Application Customization tool with both sink and source PDO's. The sink works then, source shows the same problems.
    Setting the state machine to source doesn't seem to make a difference.
    Sourcing only works when the 5V PP1 is the only source, but it cant deliver enough power for the application I use it with.

    I've captured the I2C communication between the TPS and BQ below after startup:

    write to 0x6B ack data: 0x19 0x20 
    write to 0x6B ack data: 0x19 0x20 
    write to 0x6B ack data: 0x17 0xCC 
    write to 0x6B ack data: 0x15 0x0D 
    write to 0x6B ack data: 0x00 0x10 0x00 
    write to 0x6B ack data: 0x02 0x90 0x01 
    write to 0x6B ack data: 0x12 0x14 0x00 
    write to 0x6B ack data: 0x10 0x14 0x00 
    write to 0x6B ack data: 0x0C 0x04 0x04 
    write to 0x6B ack data: 0x0A 0x4C 0x00 
    write to 0x6B ack data: 0x2C 0xE6 
    write to 0x6B ack data: 0x2B 0xE8 
    write to 0x6B ack data: 0x19 0x60 
    write to 0x6B ack data: 0x17 0xCC 
    write to 0x6B ack data: 0x0C 0x04 0x04 
    write to 0x6B ack data: 0x0A 0x4C 0x00 
    write to 0x6B ack data: 0x02 0x00 0x00 
    write to 0x6B ack data: 0x06 0x20 0x00 
    write to 0x6B ack data: 0x08 0x48 0x03 
    write to 0x6B ack data: 0x19 0x21 
    write to 0x6B ack data: 0x17 0xC8 
    write to 0x6B ack data: 0x19 0x21 
    write to 0x6B ack data: 0x19 0x21 
    write to 0x6B ack data: 0x17 0xC8 
    write to 0x6B ack data: 0x19 0x21 
    write to 0x6B ack data: 0x19 0x21 
    write to 0x6B ack data: 0x19 0x21 
    write to 0x6B ack data: 0x19 0x21 
    write to 0x6B ack data: 0x0C 0xE0 0x03 
    write to 0x6B ack data: 0x19 0x21 
    write to 0x6B ack data: 0x0C 0xE0 0x03 
    write to 0x6B ack data: 0x19 0x21 
    write to 0x6B ack data: 0x0A 0x18 0x01 
    write to 0x6B ack data: 0x19 0x21 
    write to 0x6B ack data: 0x17 0xC8 
    write to 0x6B ack data: 0x19 0x21 
    write to 0x6B ack data: 0x19 0x21 
    write to 0x6B ack data: 0x0A 0x18 0x01 
    write to 0x6B ack data: 0x0C 0xE0 0x03 
    write to 0x6B ack data: 0x19 0x21 
    write to 0x6B ack data: 0x19 0x60 
    write to 0x6B ack data: 0x19 0x60 

    Some values seem strange, for example the Reverse mode input current is set to 8750mA, while the sink requests 3A. (0x0A 18 01)
    While sometimes it seems more normal 2.375A (0x0A 00 4C), but still no 3A.
    I've replaced the TPS a few times, thinking it was faulty. But the same problem occurs.

    When manually programming the BQ (with MCU) it only works as sink. As source the TPS seem to short the PP1 and PP3 paths, see previous post:

    https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1461093/tps25751-charge-usb-c-device-with-bq25756e/5609108?tisearch=e2e-sitesearch&keymatch=%2520user%253A627038#5609108

    Could there be something wrong with my design? Is seems strange to me that sink mode works but sourcing is creating problems. My design looks a lot like the PMP41062 reference design.

  • Noah,

    In the advanced settings I can see that PP3 is selected as the source for PDO1.  However in the questionnaire the description shows PP1 being used as the 5V power path. 

     

    Are you using the TPS25751D or the TPS25751S?  Do you intend to use the 5V path to source 5V and the external path to source the 9V (the external path will also sink 5 and 9V?)

    Regards,
    Chris

  • Hi Chris,

    I use the TPS25751S, with the TPSM33615 as 5V power source connected to PP5V.
    Since the TPSM cant deliver much current (1,5A max), I will use the BQ (PP3) for 5V power to the VBUS for a 5V@3A power profile. PP3 is also used for higher voltages. (9V3A, 12V3A, 15V3A and 20V5A)
    When using the TPSxS variant, PP3 is seen as PPEXT right?

    I've also tried using PP1 for PDO1, than the 5V PDO will work but a higher voltage PDO wont work.
    Also do the settings in the questionary overrule the advanced settings (or vice versa)? Or do they need to have the same configuration?

  • Hello,

    When using the TPSxS variant, PP3 is seen as PPEXT right?

    You are correct.

    Also do the settings in the questionary overrule the advanced settings (or vice versa)? Or do they need to have the same configuration?

    The advanced settings will overrule the questionarre.

    Regards,

    Chris

  • Hello Noah,

    I am still looking at the i2c traffic.  (1) I need to confirm with the larger team why 0x21 is sent so many times to register 0x19.  (2) there is a write to register 0x02 with data 0x00 0x00 which i do not believe is correct.

    Some values seem strange, for example the Reverse mode input current is set to 8750mA, while the sink requests 3A. (0x0A 18 01)

    Please double confirm the math: 0x18 is written to register 0x0A and 0x01 is written to 0x0B so the word is 0x0118.  The first two bits are reserved resulting in 0x46 in bits 10:2.  3.5A.

    Regards,

    Chris

  • Hi Chris, 

    You are correct with the math. I used BQ studio to quickly calculate the reverse mode current, but I think I am using it wrong.


    Writing 0x0000 to register 0x02 should be out of range (400mA to 20000mA), but it seems logical to have the current limit set to 0A at startup.
    I've looked if this value is written multiple times, but I only saw this behavior at startup.

    0x19 21 is written multiple times to the BQ, the BQ seems to ACK the data, while the PPHV plane stays at low voltage (<5V).

  • Hi Chris,

    I found a rather strange way to make the PD controller work, this lets me to believe something goes wrong with programming the MCU that patches the TPS.
    Ill keep you updated. 

  • The MCU was looking at INTEVENT1.Patchloaded to check if a patch already was loaded. If a patch was loaded it wont upload a new one.
    Since my design has large electrolytic capacitors  on the VBAT side the circuit would provide itself for quite some time with power.
    I presume the patch of the TPS got corrupt at low voltages, but still keeps patchloaded at one.

    Could this be possible?

  • Hello,

    I believe you are referring to the step 11 (link), please confirm.

    Can you also see that the PD has entered the APP mode?  If the patch has successfully loaded then the Data read after the PBMc command is '0', the Patchloaded interrupt is true, and the device will enter APP mode.

    From the APP mode you can reload the patch by sending the GO2P command, link.

    It is possible that the patch was corrupted but I would have expected that the device would indicate an issue.  Maybe with a checksum or other mechanism (I2C nack).

    Regards,
    Chris

  • Hi Chris,

    The TPS is in app mode.
    Im uploading the patchfile via PBMx commands.

    I'm indeed refering to step 11.
    I used the flowchart in chapter 4 ( Common user cases setting up EC) as reference design to upload the patchfile to the TPS.

  • Hi Chris,
    I found the orgin of the problem.
    I dont use the temperature sensor of the BQ, since the device is used for swappable batteries in my application.

    In the sink firmware, I disabled JEITA and the TS pin.
    But in the DRP firmware I didnt. I didnt check the TS registers for problems, and the faultflag register seemed empty. My TS pin is connected to ground.
    But after disabling the TS pin and JEITA, the device started working. 

    With temperature checks disabled, the PD device works correctly.

    I would like to thank you for your help. 

    Kind regards,

    Noah

  • Thank you for the follow up and closure.

    Regards,
    Chris