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.

BQ25730: Non-zero charge current with ChargeCurrent() set to 0 or CHRG_INHIBIT set to 1

Part Number: BQ25730
Other Parts Discussed in Thread: TPS25750

Tool/software:

I am working on a design with a BQ25730 handling the charge and discharge of a Li-Ion 5S battery pack. It's in tandem with a TPS25750 PD interface. The BQ is configured and managed through a discrete microcontroller. The system is powered off of the Vbus node through either the BQ's OTG output or the PD bus. We have logic in place to enable/disable OTG depending on the presence of a suitable adapter.

This configuration is working well with two exceptions. The first is that the actual charge current is exactly half of that set by the ChargeCurrent() register when ChargeCurrent > 0. We've confirmed that we're using 10mΩ shunts, and we've set RSNS_RAC and RSNS_RSR appropriately. Setting them to 5mΩ does not change the behavior. We can and are working around this in our software config but I wanted to provide this info in case it's a clue to our second, larger problem. Our second problem is the fact that when ChargeCurrent() is set to 0 or CHRG_INHIBIT is set to 1, we get a large, unregulated current into our battery pack. Monitoring the Vsys node while this overcurrent condition is occurring shows the voltage bouncing off the ChargeVoltage() limit of 21V every 13us or so. Lowering the ChargeVoltage() setting changes the voltage that the Vsys node bounces up to. Additionally, we have a hardware current limit set on the ILIM_HIZ pin which is not being respected in this condition, even if EN_EXTILIM is set to 1.

In all of the documentation I can find the ChargeCurrent() and CHRG_INHIBIT registers are hard controls, so can you point me towards why they wouldn't be terminating charging in my design? If needed I can share my register map.

  • Does anyone have any info on this?

  • Hi Noah,

    1. The current reading will be doubled with 5 mohm. Set RSNS_RAC and RSNS_RSR=5mohm is good for the PSYS calculation, but it does not affect the current reading scale up.  More details, see below. 

    https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1253903/faq-bq24800-i-am-using-sense-resistor-values-other-than-10m-to-extend-the-input-current-range-but-the-gui-does-not-display-this-extended-range?tisearch=e2e-sitesearch&keymatch=current%20sense%20alek#

    2. I think the second issue may be related to the I2C communication. I would suggest you isolating the charger I2C and trying it again standalone. 

    Regards,

    Tiger

  • Hi Tiger,

    I configured the ChargeCurrent() register at 0400, which yields a current of 1A. I then powered off our system to de-energize the 3.3V bus so that I could desolder the pull-ups on the BQ25730's I2C lines. Afterwards I unplugged the adapter so that ChargeCurrent() would reset to 0. Plugging the adapter back in in this state yields the same results as before, an uncontrolled overcurrent dictated by the instantaneous charge state of the 5S stack. I've since reinstalled the resistors so I can communicate with the part again.

    One clue that may help is that when the chip is fully unconfigured, the charge current is 0A. This behavior does not start until we load our register map.

    Best,

    Noah

  • For the sake of completeness this is our reg map:

    Charge Option 0 034C
    Charge Current 0400
    Max Charge Voltage 5208
    OTG Voltage 2710
    OTG Current 1E00
    Input Voltage 3FC0
    Min System Voltage 9A00
    IIN_HOST 0800
    Charger Status 0000
    Prochot Status B800
    IIN_DPM 0000
    ADC VBUS and PSYS CF13
    ADC IBAT 0001
    ADC IIN and CMPIN 0204
    ADC VSYS and VBAT 9E9D
    Manufacture ID 0040
    Device ID 00D5
    Charge Option 1 0200
    Charge Option 2 0037
    Charge Option 3 3131
    Prochot Option 0 00FC
    Prochot Option 1 0800
    ADC Option C2FF
    Charge Option 4 F858
    Vmin Active Protection 006D

  • As a final update for today, I've found that if I do a POR to return the registers to default and then only change ChargeCurrent(), the device will begin pulling current. After powering off, removing the adapter, and reinstalling the adapter, I found that the device does not draw current. It looks like something else in the reg map may be contributing to the issue but I haven't been able to find anything that would override ChargeCurrent().

  • Hi Noah,

    Yeah, the register map looks mess up. You don't need to set them unless it is intended. Always start with default values and make small changes. 

    Try this. 

    Charge Option 0 034E
    Charge Current 0400
    Max Charge Voltage 5208
    OTG Voltage 2710
    OTG Current 1E00
    Input Voltage 3A80
    Min System Voltage 9A00
    IIN_HOST 2000
    Charger Status 00
    Prochot Status B800
    IIN_DPM 00
    ADC VBUS and PSYS CF13
    ADC IBAT 0001
    ADC IIN and CMPIN 0204
    ADC VSYS and VBAT 9E9D
    Manufacture ID 00
    Device ID 00
    Charge Option 1 0300
    Charge Option 2 00B7
    Charge Option 3 0434
    Prochot Option 0 00FC
    Prochot Option 1 0800
    ADC Option C2FF
    Charge Option 4 F858
    Vmin Active Protection 006D

    Regards,

    Tiger

  • Thank you Tiger. My principle issue ended up being the EN_PORT_CTRL flag. Enabling that cleared up my problems. It makes sense that if the BATFET was freely conducting I'd see current into the battery. I am still confused as to why the buck/boost stage would be trying to pump current into the battery without a valid ChargeCurrent() setting, but I'll take the win.