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.

BQ40Z80: find out reason for XCHG

Part Number: BQ40Z80
Other Parts Discussed in Thread: BQSTUDIO, EV2400

Dear TI,

I have a 2S battery pack with a golden image, build into a product.

During the use of the battery we get "XCHG" even though we are not fully charged yet. It shows around 200mAh less in Remaining and Full charge capacity and stopped charging at ~8V.



I have attached an image of the bqstudio of a battery I extracted.

I am confused why the XCHG bit was set.

- As far as I understand we trigger HT which should trigger ChargingStatus()[IN] =1, but [CHGIN] is 0, so it should no set XCHG
- There are no Safety or PF Status bits set.

The [TC] bit is set. And the docs say "When GaugingStatus()[TC] is set AND FET Options[CHGFET] = 1, the CHG FET turns off"

Also the standard SOC Flag Config A[TCSetVCT] = 1 is set, but VCT is not high?
[TCSetV] and [[TCSetRSOC] are 0, so why is the TC bit set? Maybe the VCT was set before but it gets cleared?

I suspect the charging stopped because we hit [OT], because sometimes the battery gets hot. But then one of the SafetyStatus bits should have been set?

Can you help me and point me in the right direction?

Kind regards,
Dominik 

  • Hello Dominik,

    The CHGIN will cause the XCHG to set, TRM section 5.12 Charge Disable and Discharge Disable

    Depending on your setting TC flag can also keep CHGFET off (and XCHG high).

    Do you have some BQStudio logs and .gg file to confirm what is occurring?

    Sincerely,

    Wyatt Keller

  • Hi Wyatt,

    Thank you for your quick reply.

    CHGIN is not set (=0), so it should not set XCHG.

    TC flag is set, and also FET Options[CHGFET] is set. So I suspect that is the cause. 

    But I am confused why the TC flag would be set. Because SOC Flag Config A[TCSetVCT] is set, it should only be set when VCT is set, correct?

    Valid charge Termination depends on:


    But if my charge termination settings would be wrong, I should see the VCT flag if I disassemble the device and plug it into the EV2400/bqstudio?
    In other words, why would the TC flag set, if VCT is not set?

    I am also adding a short log and the .srec at that moment. If I need to capture the issue and write a full log I will have to set up extra hardware to continuously log with the EV2400. Notice at the new battery I pulled out, with similar problem, the [IN] flag is not set, so that's definitely not the problem.

    Mon Sep 11 13:13:30 CEST 2023
    
    Device Version Info = 4800_0_04
    BQZ Device Name = bq40z80
    BQZ Firmware Version = V0_04_BLD0005
    
    Design Capacity = 1750
    Design Voltage = 7400
    Specification Info = 0x0031
    Manufacturer Date = 1980-1-1
    Serial Number = 0x0001
    Manufacturer Name = Texas Instruments
    Device Name = bq40z80
    Device Chemistry = LION
    
    Sample,DateTime,ElapsedTime,ManufAccess,RemCapAlarm,RemTimeAlarm,BattMode,@Rate(@),@TimeFull,@TimeEmpty,@RateOK,Temperature,Voltage,Current,AvgCurr,MaxErr,RSOC,ASOC,RemCap,FullChgCap,RunTimeEmty,AvgTimeEmty,AvgTimeFull,ChgCurr,ChgVolt,BattStat,CycleCnt,MaxTurboPwr,SusTurboPwr,MaxTurboCurr,SusTurboCurr,SoH,OpStatA,OpStatB,TempRange,ChgStat,GaugeStat,ITStat,MfgStat,SafetyAlertAB,SafetyStatAB,SafetyAlertCD,SafetyStatCD,PFAlertAB,PFStatAB,PFAlertCD,PFStatCD,CellVolt1,CellVolt2,CellVolt3,CellVolt4,CellVolt5,CellVolt6,CellVolt7,vBAT,vPACK,CellCurr1,CellCurr2,CellCurr3,CellCurr4,CellCurr5,CellCurr6,CellCurr7,CellPower1,CellPower2,CellPower3,CellPower4,CellPower5,CellPower6,CellPower7,Power,AvgPow,IntTemp,TS1Temp,TS2Temp,TS3Temp,TS4Temp,CellTemp,FETTemp,GaugeTemp,FltRemQ,FltRemE,FltFullChgQ,FltFullChgE,NoLoadRemCap,TrueRemQ,TrueRemE,InitialQ,InitialE,TrueFullChgQ,TrueFullChgE,T_sim,T_ambient,RaScale1,RaScale2,RaScale3,RaScale4,RaScale5,RaScale6,RaScale7,CompRes1,CompRes2,CompRes3,CompRes4,CompRes5,CompRes6,CompRes7,PackGrid,LStatus,CellGrid1,CellGrid2,CellGrid3,CellGrid4,CellGrid5,CellGrid6,CellGrid7,StateTime,DOD0_1,DOD0_2,DOD0_3,DOD0_4,DOD0_5,DOD0_6,DOD0_7,DOD0 Passed Q,DOD0 Passed E,DOD0 Time,DODEOC_1,DODEOC_2,DODEOC_3,DODEOC_4,DODEOC_5,DODEOC_6,DODEOC_7,QMax1,QMax2,QMax3,QMax4,QMax5,QMax6,QMax7,QMaxDOD0_1,QMaxDOD0_2,QMaxDOD0_3,QMaxDOD0_4,QMaxDOD0_5,QMaxDOD0_6,QMaxDOD0_7,QMaxPassedQ,QMaxTime,Tk,Ta,RawDOD_1,RawDOD_2,RawDOD_3,RawDOD_4,RawDOD_5,RawDOD_6,RawDOD_7,CBTime1,CBTime2,CBTime3,CBTime4,CBTime5,CBTime6,CBTime7,CBDOD_1,CBDOD_2,CBDOD_3,CBDOD_4,CBDOD_5,CBDOD_6,CBDOD_7,CBTotalDODChg,SOH_FC_Q,SOH_FC_E,LogRowTime(ms),LogStatus
    1,2023-09-11 13:13:34,4.009,0x4183,300,10,0x6081,0,65535,65535,1,24.7,8228,0,0,101,100,103,1791,1792,65535,65535,65535,0,0,0x00E0,0,-2100,-2626,-3500,-3500,100,0x4183,0x1000,0x10,0x0048,0xDA,0x0118,0x0018,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,4114,4114,0,0,0,0,0,8385,7908,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24.4,25.4,196.4,-273.2,-273.2,24.9,-273.2,25.4,1791,1226,1792,1226,1854,1766,1208,21,17,1787,1225,27.2,23.4,1000,1000,0,0,0,0,0,0,0,0,0,0,0,0,1,6,1,1,0,0,0,0,0,280,960,992,0,0,0,0,0,0,0,1,784,776,0,0,0,0,0,1969,1981,0,0,0,0,0,960,992,0,0,0,0,0,0,1,3.91,2033,960,992,0,0,0,0,0,1086,0,0,0,0,0,0,960,992,0,0,0,0,0,17160,1911,1413,1133,SUCCESS
    2,2023-09-11 13:13:38,8.020,0x4183,300,10,0x6081,0,65535,65535,1,24.8,8228,0,0,101,100,103,1791,1792,65535,65535,65535,0,0,0x00E0,0,-2100,-2626,-3500,-3500,100,0x4183,0x1000,0x10,0x0048,0xDA,0x0118,0x0018,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,4115,4114,0,0,0,0,0,8384,7907,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24.4,25.4,195.0,-273.2,-273.2,24.9,-273.2,25.4,1791,1226,1792,1226,1854,1766,1208,21,17,1787,1225,27.2,23.4,1000,1000,0,0,0,0,0,0,0,0,0,0,0,0,1,6,1,1,0,0,0,0,0,284,960,992,0,0,0,0,0,0,0,1,784,776,0,0,0,0,0,1969,1981,0,0,0,0,0,960,992,0,0,0,0,0,0,1,3.91,2033,960,992,0,0,0,0,0,1082,0,0,0,0,0,0,960,992,0,0,0,0,0,17160,1911,1413,1138,SUCCESS
    


    Kind regards,
    Dominik

  • Hi,

    I could not add the .srec, could it be it is not possible to upload that file format?

    Kind regards,

    Dominik

  • Hello Dominik,

    We don't need the SREC at this time, just the .gg file which is all the dataflash settings for the gauge, you can export it in the data memory section of BQStudio.

    Yes it would depend on your settings, but from the register page the TC is set, so that appears to be the reason, but I'm not sure the history how it got set with the settings used.

    Sincerely,

    Wyatt Keller

  • Hello Wyatt,

    Alright, thank you. I will grab a .gg file as soon as I can get access to the hardware again.

    Kind regards,
    Dominik

  • Hello Wyatt,

    XCHG.gg.csv

    I attached a gg file.

    This time [IN] is not set a aswell.

    Do you know why TC is set?

    Kind regards,
    Dominik

  • Hello Dominik,

    I'm not sure what happened before this register screenshot occurred but it looks like XCHG is set because the TC bit. There are multiple conditions which could cause TC to be set, the behavior is described in the TRM: 5.7 Charge and Discharge Termination Flags

    Please toggle the CHGFET bit to 0 and reset the gauge, it should allow both FETs to be turned on.

    Sincerely,

    Wyatt Keller

  • Hello Wyatt,

    Thank you for your explanation, I have read TRM 5.7.

    Please help me if I understand this correctly:


    SOC Flag Config A[TCSetVCT] is set, so TC should only be set when due to VCT?

    If that is the case, VCT should still be set seeing the TC triggered, correct?

    Sincerely,
    Dominik

  • Hello Dominik,

    If none of the other conditions for TC are met and VCT is the only one then when VCT occurs both should set. The conditions to clear may be different or have different timing so it's not necessarily true that if TC is set VCT will also be set.

    Sincerely,

    Wyatt Keller

  • Hello Wyatt,

    Alright thank you. Then I will try to catch if VCT is actually triggering TC during the normal use by logging it. If it really is VCT then I will check why we have an "early valid charge termination".

    Sincerely,
    Dominik