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.

BQ76952: BQ76952 turns off discharge FET without any error message

Part Number: BQ76952

Tool/software:

Dear TI support team,

We are using BQ76952 to design a BMS monitoring and control system, which is low-side control by DDSG and DCHG pins through TI MOSFET drive IC UCC27524AD. Everything is fine unless recently we encountered a problem that BQ76952 turned off discharge FET without any error message. This problem happened when we glue NTC thermistors on the top of FET to measure its temperature rise, as shown in the attached picture. 

So, we are wandering under what other conditions BQ76952 will turn of FET, besides of normal errors such as OC, OV, OT etc.   

The problem did not happen only once. When we try another board, the same problem happened. Please let us know:

1.  Under what other conditions BQ76952 will turn of FET, without any error message?

2.  How do we do to avoid such problem, if we want to monitor FET temperature?

Looking forward your kind support! Thanks!

Best Regards,

Yanhong

Please note that the glue is special for sticking electronic components, which does not conduct electricity.

  • Hello Yanhong,

    Can you send your .gg settings file for me to look over?

    Best regards,

    Thomas Rainey

  • Dear Thomas,

     

    Thank you very much for your kind reply!

     

    What is .gg file? Where it can be found?

     

    In our BMS system, a MCU is used to set BQ76952’s registers directly. I don’t find any .gg file. So I attach the register setting file for your kind check.

     

    Thank you!

     

    Best Regards

    bq76952_register_config.txt
    bq76952_set_register(MfgStatusInit, 0x0010, 2);
    bq76952_set_register(PowerConfig, 0x28B2, 2);
    bq76952_set_register(REG0Config, 0x01, 1);
    bq76952_set_register(REG12Config, 0x0D, 1);
    bq76952_set_register(CommType, 0x07, 1);
    bq76952_set_register(VCellMode, 0xFFFF, 2);
    bq76952_set_register(DFETOFFPinConfig, 0x02, 1);
    bq76952_set_register(CFETOFFPinConfig, 0x0F, 1); // 18k, FET Temperature    
    bq76952_set_register(ALERTPinConfig, 0x02, 1);
    bq76952_set_register(TS1Config, 0x07, 1); // 18k, Cell Temperature
    bq76952_set_register(TS3Config, 0x07, 1); // 18k, Cell Temperature
    bq76952_set_register(HDQPinConfig, 0x0F, 1); // 18k, FET Temperature    
    bq76952_set_register(DCHGPinConfig, 0xA6, 1);
    bq76952_set_register(DDSGPinConfig, 0xA6, 1);
    bq76952_set_register(EnabledProtectionsA, 0xBC, 1);
    bq76952_set_register(EnabledProtectionsB, 0xF7, 1);
    bq76952_set_register(EnabledProtectionsC, 0xFE, 1);
    bq76952_set_register(EnabledPFC, 0x00, 1); // Permanent Fail C
    bq76952_set_register(CHGFETProtectionsA, 0x98, 1);
    bq76952_set_register(CHGFETProtectionsB, 0xD5, 1);    
    bq76952_set_register(CHGFETProtectionsC, 0x56, 1);
    bq76952_set_register(DSGFETProtectionsA, 0xE4, 1);    
    bq76952_set_register(DSGFETProtectionsB, 0xE6, 1);
    bq76952_set_register(DSGFETProtectionsC, 0xE2, 1);    
    bq76952_set_register(ChgCurrentThreshold, 500, 2);
    bq76952_set_register(DsgCurrentThreshold, 500, 2);
    bq76952_set_register(ChgPumpControl, 0x01, 1);    
    bq76952_set_register(FETOptions, 0x09, 1);
    
    bq76952_set_register(CCGain, 0x417e1076, 4);
    bq76952_set_register(CapacityGain, 0x4a9709d7, 4);
    
    bq76952_set_register(CellBalanceMaxCells, 2, 1);
    bq76952_set_register(BalancingConfiguration, 0x03, 1);    
    bq76952_set_register(CellBalanceMinCellVCharge, 1000, 2);
    bq76952_set_register(CellBalanceMinDeltaCharge, 50, 1);    
    bq76952_set_register(CellBalanceStopDeltaCharge, 30, 1);
    bq76952_set_register(MinCellTemp, -127, 1);    
    bq76952_set_register(MaxCellTemp, 60, 1);
    bq76952_set_register(MaxInternalTemp, 60, 1);    
    bq76952_set_register(CellBalanceInterval, 20, 1);
    bq76952_set_register(CellBalanceMinCellVRelax, 1000, 2);    
    bq76952_set_register(CellBalanceMinDeltaRelax, 50, 1);
    bq76952_set_register(CellBalanceStopDeltaRelax, 30, 1);
    
    bq76952_set_register(CUVThreshold, 39, 1); 
    bq76952_set_register(CUVDelay, 604, 2);     
    bq76952_set_register(CUVRecoveryHysteresis, 4, 1); 
    
    bq76952_set_register(COVThreshold, 84, 1); 
    bq76952_set_register(COVDelay, 604, 2); 
    bq76952_set_register(COVRecoveryHysteresis, 3, 1); 
      
    bq76952_set_register(COVLLatchLimit, 3, 1);
    bq76952_set_register(COVLCounterDecDelay, 3, 1);    
    bq76952_set_register(COVLRecoveryTime, 5, 1);
    
    bq76952_set_register(OCCThreshold, 2, 1);  
    bq76952_set_register(OCCDelay, 4, 1);
    bq76952_set_register(OCCRecoveryThreshold, 100, 2);    
    bq76952_set_register(OCCPACKTOSDelta, 0, 2);    
    
    bq76952_set_register(OCD1Threshold, 2, 1);     
    bq76952_set_register(OCD1Delay, 13, 1); 
    
    bq76952_set_register(SCDThreshold, 4, 1); 
    bq76952_set_register(SCDDelay, 1, 1); 
    bq76952_set_register(SCDRecoveryTime, 5, 1); 
     
    bq76952_set_register(OCD3Threshold, (int16_t)-100, 2); 
    bq76952_set_register(OCD3Delay, 4, 1); // for 4s
    
    bq76952_set_register(OCDRecoveryThreshold, (int16_t)-100, 2);
    
    bq76952_set_register(OCDLLatchLimit, 4, 1); 
    bq76952_set_register(OCDLCounterDecDelay, 3, 1);
    bq76952_set_register(OCDLRecoveryTime, 5, 1);    
    bq76952_set_register(OCDLRecoveryThreshold, (int16_t)-100, 2);
    
    bq76952_set_register(SCDLLatchLimit, 4, 1);    
    bq76952_set_register(SCDLCounterDecDelay, 3, 1);
    bq76952_set_register(SCDLRecoveryTime, 5, 1);    
    bq76952_set_register(SCDLRecoveryThreshold, (int16_t)-10000, 2); 
    
    bq76952_set_register(OTCThreshold, 65, 1);    
    bq76952_set_register(OTCDelay, 2, 1);
    bq76952_set_register(OTCRecovery, 55, 1);
     
    bq76952_set_register(OTDThreshold, 75, 1);
    bq76952_set_register(OTDDelay, 2, 1);    
    bq76952_set_register(OTDRecovery, 65, 1);
    
    bq76952_set_register(OTFThreshold, 90, 1);    
    bq76952_set_register(OTFDelay, 2, 1);
    bq76952_set_register(OTFRecovery, 70, 1);
    
    bq76952_set_register(OTINTThreshold, 85, 1);
    bq76952_set_register(OTINTDelay, 2, 1);    
    bq76952_set_register(OTINTRecovery, 80, 1);
    
    bq76952_set_register(UTCThreshold, (int8_t)-10, 1);    
    bq76952_set_register(UTCDelay, 2, 1);
    bq76952_set_register(UTCRecovery, (int8_t)-5, 1);
    
    bq76952_set_register(UTDThreshold, (int8_t)-20, 1);
    bq76952_set_register(UTDDelay, 2, 1);    
    bq76952_set_register(UTDRecovery, (int8_t)-10, 1);
    
    bq76952_set_register(UTINTThreshold, (int8_t)-20, 1);    
    bq76952_set_register(UTINTDelay, 2, 1);
    bq76952_set_register(UTINTRecovery, (int8_t)-15, 1);
    
    bq76952_set_register(T18kCoeffa1, (int16_t)-19170, 2);
    bq76952_set_register(T18kCoeffa2, (int16_t)26344, 2);    
    bq76952_set_register(T18kCoeffa3, (int16_t)-11157, 2);
    bq76952_set_register(T18kCoeffa4, (int16_t)20947, 2);    
    bq76952_set_register(T18kCoeffa5, (int16_t)2896, 2);
    bq76952_set_register(T18kCoeffb1, (int16_t)-8021, 2);
    bq76952_set_register(T18kCoeffb2, (int16_t)9649, 2);    
    bq76952_set_register(T18kCoeffb3, (int16_t)-5223, 2);
    bq76952_set_register(T18kCoeffb4, (int16_t)4344, 2);    
    bq76952_set_register(T18kAdc0, (int16_t)11703, 2);
    
    bq76952_set_register(ProtectionsRecoveryTime, 2, 1);
    bq76952_set_register(DefaultAlarmMask, 0xF882, 2);
    bq76952_set_register(DAConfiguration, 0x06, 1);

  • Hello,

    I will look through your register settings and give you response by tomorrow.

    Best regards,

    Thomas Rainey

  • Hello,

    The only thing I see in the settings is that you can change ChgPumpControl to 0x00 since you are using low side FET configuration. This will lower current consumption. 

    Can you check to see if DFETOFF is being asserted during this behavior? If that pin is asserted it could turn the FET off without a warning.

    Best regards,

    Thomas Rainey