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.

TPS65721: Can't get more than 120 mA combined charger+operation

Part Number: TPS65721

In implementing the circuit as shown in the development kit, when charging only (DC/DC and LDO are off), I can only get 120 mA going into the battery. (5V, 2.5A wall-mount power supply)

When operating, I can get some current going into the battery (roughly 120mA - active circuit power), but if my active circuit power exceeds 120 mA, the charger shuts down, but it still runs from battery.

  • Hi Rod,

    The expert for this device is out office today and is expected back in office tomorrow, 08/25. Please expect a response from him tomorrow.

    Best regards,

    Layne J

  • What value resistor (RISET) do you have connected to the ISET pin of the TPS65721 PMIC device?

    Page 8 of the datasheet says that RISET minimum = 700 Ω.

    Page 12 says that ICHG = KISET / RISET (Amps), where the default value for KISET is determined by ICH_SCL[1..0] bits with a default value of 11b for the TPS65721. As a result, the nominal value of KISET = 450 AΩ.

    If you use the minimum RISET,  ICHG = KISET / RISET = 450 AΩ / 700 Ω = 643 mA which is larger than the recommended maximum charging current (300 mA).

    It is best to refer to Page 22, which states:

    ICHG = KISET / Riset (1) The charge current limit is adjustable up to 300 mA. The valid resistor range is 1500 Ω to 11.25 kΩ. Note that if ICHG is programmed as greater than the input current limit, the battery does not charge at the rate of ICHG, but at the slower rate of IACmax.


    Using RISET = 1500 Ω, ICHG = KISET / RISET = 450 AΩ / 1500 Ω = 300 mA which is the ideal fast-charging current. Please confirm this is the RISET value used in your design.

    If you are still having issues, you might want to check if the charger is operating in pre-charge mode, where IPRECHG = 0.2 * ICHG = 60mA which would happen when the battery voltage, VBAT< VLOWV = 3.0V typical.

  • RISET = 1.5K (measured in-situ)

    KISET = ICH_SCL[1,0] = 11 (specifically 0x03<<4 in CHGCONFIG1)

    IACMAX = AC Input Current[1,0] = 01 (specifically 0x02<<4 in CHGCONFIG0)

    CHGSTATUS = 0x0E  (CH_ACTIVE, CH_PGOOD, CH_THLOOP) since DPPM is set not active, must be Thermal loop

    CHGSTATE = 0x08  (CH_CC_CV)

    CHGCONFIG0 = 0x67

         VSYS=reg. to 5V, AC input current=500mA

         DPPM disabled,

         TH_loop=0 DISABLED,

         Dyn_TMR=1 Reduced,

         TERM_EN=1, Enabled,

         CH_EN=1 Enabled

    CHGCONFIG1 = 0xF4

        I_PRE=11, 20% of ICH_SCL

       ICH_SCL= 11, 100% of ISET resistor

       ITERM=01, 15% of ICH_SCCL

  • Rod,

    Your above reply says:

    Rod Corder said:
    IACMAX = AC Input Current[1,0] = 01 (specifically 0x02<<4 in CHGCONFIG0)

    The TPS65721 datasheet says:

    "Bit 5..4 AC input current1..AC input current0:

    • 00 = 100 mA, input voltage DPPM enabled
    • 01 = 500 mA, input voltage DPPM enabled
    • 10 = 500 mA, input voltage DPPM disabled
    • 11 = USB suspend mode; standby"

    Therefore, the result of your charger status data:

    Rod Corder said:
    CHGSTATUS = 0x0E  (CH_ACTIVE, CH_PGOOD, CH_THLOOP) since DPPM is set not active, must be Thermal loop

    Implies that:

    "CH_THLOOP:

    • 0 = thermal loop or DPPM not active
    • 1 = thermal loop or DPPM active, charge current is reduced due to thermal loop, low input voltage or system load."


    The DPPM is enabled and active. 

    VDPM = VO(REG) - 100mV, is the output voltage threshold when charging current is reduced.

    Section 8.3.2 Power-Path Management says that "If the sum of the charging and system load currents exceeds the preset maximum input current (programmed internally by I 2C), the charging current is reduced automatically."

    Therefore, ISYS + ICHG = IAC > 500mA, so ISYS which supplies power to DCDC1 and LDO1 must be higher than expected (ISYS = IAC - ICHG = 500mA - 120mA = 380mA).

    Since I have not reviewed your schematic, it is possible you have a load on the SYS pin other than DCDC1 which is consuming current and causing the DPPM to be activated. 

  • Brian,

    Attached is the power portion of the schematicTPS65721 Charger.pdf

    I have made changes so that IACMAX=0b10 and get the same results

    I have a load on VSYS that ranges from 0.1mA to 80mA with about 23uF additional capacitance.  Whether I'm drawing from VSYS or not doesn't change the charge current.

    Even at peak operation, I am pulling less than 90mA from the battery.

  • The value of CHGSTATUS = 0x0E, indicating that CH_THLOOP = 1b and the "charge current is reduced due to thermal loop, low input voltage or system load."

    This is the description of these three events: "During the fast-charge phase, several events increase the timer durations.

    • The system load current activates the DPM loop, which reduces the available charging current
    • The input current is reduced because the input voltage has fallen to VIN(LOW)
    • The device has entered thermal regulation because the IC junction temperature has exceeded TJ(REG)"

    Unless you tell me that something on the board is very hot, I will assume that the device has not entered Thermal regulation. 

    Because CHGSTATUS = 0x0E, it also indicates that CH_PGOOD = 1b and the "power source is present and in the range valid for charging".

    Therefore, the only item left on the list is System Load Current. The schematic you shared does not show VSYS except where it connects to the SYS1/2 pins and the pull-up resistor for the PBINz pin. As a result, it leads me to believe that (a) the load applied at VSYS is higher than expected, (b) the current consumed by DCDC1 and LDO1 is also high, or (c) a combination of (a) and (b).

    But, let's assume that the load on VSYS and DCDC1 are negligible.

    CHGSTATE = 0x08  (CH_CC_CV), which means charger is in constant current mode or constant voltage mode. This is good.

    Let's break down what could be happening based on this info:

    • Charger is in CC (Constant Current) Mode: VBAT < VO(REG)/Vo(BATREG) which is 4.2V by default in CHGCONFIG3 register
      • The charger is charging at the defined fast-charge current. If this is the case, then decreasing RISET should increase the fast-charge current in your design. RISET = 1000Ω will increase your charging current by 50%, while RISET = 750Ω will double your fast-charge current
    • Charger is in CV (Constant Voltage) Mode: VBAT = VO(REG)/Vo(BATREG) =4.2V 
      • The charger is tapering the current in Constant Voltage mode (as shown in Figure 11 on page 22 in the TPS65721 datasheet). If VBAT = 4.2V, then you would not expect to see the full 300mA because the battery is nearly at full charge

    Based on this analysis, I would be interested to know what the measured battery voltage is and, if VBAT<4.2V, what happens when you modify RISET.

  • VAC = 5.06V

    IAC = 108 mA

    VBatt = 3.84V

    IBatt= -94 mA (charging)

    Isys = ~14 mA total (~10 mA direct, ~4 mA to DCDC/LDO)

    I put 1.5K in parallel with RISET and measured 750 ohm.  Re-running the same conditions arrived at substantially the same measurements.  There was no notable increase in IAC.

  • Rod,

    When I look at these measurements with a fresh perspective, it's interesting how close the IAC value is to 100mA. Suspiciously close, in fact, to the point where I would say with 95% confidence that despite the fact that you shared the following info:

    "IACMAX = AC Input Current[1,0] = 01

    The value in Register 0x02, Bit 5..4 AC input current1.. AC input current0 is almost certainly 00b = 100 mA, input voltage DPPM enabled

    Although the current you measured is IAC = IBATT + ISYS = 94mA + 14mA = 108mA, I will assume you measured this with a multimeter and the observations were not recorded simultaneously. I expect that if you could measure this with high enough accuracy on an oscilloscope that IAC-MAX never exceeds 100mA.

    In order to verify the actual value in the CHGCONFIG0 register (register 0x02), I would recommend that you use an I2C sniffer or a logic analyzer and read back the value after you attempt to write it. Providing the datalog of these I2C transactions would be the only way for me to verify that IAC-MAX != 00b.

    The logical statement you used to share the data does not make sense to me:

    KISET = ICH_SCL[1,0] = 11 (specifically 0x03<<4 in CHGCONFIG1)

    IACMAX = AC Input Current[1,0] = 01 (specifically 0x02<<4 in CHGCONFIG0)

    I am not sure how this operation works, but it appears to me that you may be overwriting some of the default values that have resulted in IAC-MAX = 00b = 100 mA,

  • Brian, good suggestion.

    I dumped all the registers and attached what I found.

    In summary, CHGCONFIG0:ACIIN = 10 (500mA DPPM disabled)

    Register Dump.txt
    Actual register readings when:
    VBATT = 3.729V
    IBATT = 82mA
    
    VIN = 5.03V
    IIN = 115.5mA
    
    CHGSTATUS	0x0E  0b0 0 0 0 1 1 1 0 
    	TS_HOT=0	(Batt Temp below High threshold)
    	TS_COLD=0	(Batt Temp above Low threshold)
    	OVP=0		(Input Overvoltage not active)
    	CH_ACTIVE=1	(Charger is charging the battery)
    	CH_PGOOD=1	(Power source is present and valid)
    	CH_THLOOP=1	(Thermal Loop or DPPM active)
    
    CHGCONFIG0	0x67  0b01 10 0 1 1 1 
    	VSYS[1:0]=01	(SYS regulated to 4.4V)
    	ACIIN[1:0]=10	(500mA DPPM disabled)
    	TH_LOOP=0	(Thermal loop disabled)
    	DYN_TMR=1	(Clock for Safety timer reduced based on actual)
    	TERM_EN=1	(Charge termination bbased on timers and term.current)
    	CH_EN=1		(Charger is enabled)
    
    CHGCONFIG1	0xF4  0b11 11 01 00
    	IPRE[1:0]=11	(20% of ICH_SCL)
    	ICH_SCL[1:0]=11	(100% of value defined with ISET [750 ohm])
    	I_TERM[1:0]=01	(10% of ICH_SCL)
    
    CHGCONFIG2	0xE8  0b11 1 0 1 0 0 0
    	SFTY_TMR[1:0]=11(8h)
    	PRE_TMR=1	(60 min)
    	NTC=1		(10K NTC)
    	V_DPPM=0	(VBAT+10mV)
    	VBAT_COMP_EN=0	(Li Primary voltage comparator disabled)
    
    CHGCONFIG3	0x59  0b010 11 001
    	CH_VLTG[2:0]=010(Charge Voltage = 4.20V)
    	TMP_SHIFT[1:0]=11(TS_COLD=15C, TS_HOT=60C [ambient=19C])
    	VBAT[1:0]=00	(BattVoltage Comparator = 2.2V)
    	VBAT_COMP=1	(voltage below or comparator disabled)
    
    CHGSTATE	0x08  0b0 0 0 0 1 0 0 0
    	CH_SLEEP=0	(not in SLEEP state)
    	CH_RESET=0	(not in RESET state)
    	CH_IDLE=0	(not in IDLE state)
    	CH_CC_CV=1	(In Constant Current/Constant Voltage mode)
    	CH_LDO=0	(not in LDO mode)
    	CH_FAULT=0	(not in FAULT state)
    	CH_SUSP=0	(not in SUSPEND state)
    
    DEFDCDC1	0x40	0b0 1 000000
    	HOLD_DCDC1=0	(DCDC1 disabled when HOLD_DCDC1=low and PB_IN=high)
    	DCDC_DISCH	(DCDC1 is discharged when disabled)
    
    LDO_CTRL	0x40
    	HOLD_LDO1=0	(LDO1 is disabled when HOLD_LDO1=low and PB_IN=high)
    	LDO_DISCH=1	(LDO1 is discharged when disabled)
    	
    CONTROL0	0x80  b1 0 0 0 000000
    	F_PWM=1		(in forced PWM mode)
    	PGOODZ_DCDC1=0	(DCDC within normal range)
    	PGOODZ_LDO=0	(LDO within normal range)
    
    CONTROL1	0x01  0b00 0 0 0 0 0 1
    	HOLD=0		(DCDC1 and LDO1 OFF)
    	PB_STAT=0	(pushbutton not pressed)
    	RESET_DELAY=1	(delay=90ms)
    	
    fgVOLTAGE	3.542
    fgCURRENT	122
    

  • Rod,

    Give me until Monday to review the Register Dump in detail, and I'll let you know if I find anything noteworthy.

  • My fault completely.

    There was a PTC in series with the power supply (supposed to be 1.2A), but the wrong part got installed.

    It was a 120 mA part.  As the current increased, the resistance in the PTC rose, and VAC dropped.

    When I shunted across the PTC, the charge current went up above 300 mA like it was supposed to (with RISET=750ohm)

    Sorry to have wasted your time.

    I guess I always need to repeat my mantra "Production silicon is rarely the problem."

    THANKS for all your help.

  • Haha, I like that phrase: 

    Rod Corder said:
    "Production silicon is rarely the problem."

    No problem at all. Nothing is a waste of time when you're debugging. Always helps to eliminate everything that is NOT causing the issue, and almost every type of power issue appears to point back to the PMIC.

    We are happy to help, and it is also greatly appreciated that you confirmed the root cause and closed the thread :-)