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: AFE BQ76592 turning on CHARGE FET even Load is not connected.

Part Number: BQ76952

Hi Team.

"BQ76952 Battery Monitor IC Issue: Discharge FET Activation Without Controller Input"

**Problem Description:**
I'm currently working with the BQ76952 Battery Monitor and Protector IC, and I'm facing an issue where the Discharge FET is activating automatically, even though I've instructed my controller to keep only the Charge FET on and the Discharge FET off. This unexpected activation of the Discharge FET happens sporadically and can lead to a short circuit fault.

1. **Application:** I'm using the BQ76952 to monitor and protect a multi-cell battery pack in a portable device.

2. **Issue:** While my controller is in idle mode, I configure it to have only the Charge FET on and the Discharge FET off. However, at irregular intervals, the AFE (Analog Front End) seems to turn on the Discharge FET by itself without activating the pre_discharge function.

3. **Configuration:** I've verified that my controller is correctly setting the FETs' control signals, and the logic appears sound.

**Oscilloscope Data:** I've captured some oscilloscope data that may shed light on the issue, and I'm looking for help in analyzing it. Here's the link to the oscilloscope data: [Insert Link].

**Questions:**
- What might be causing the BQ76952 to automatically activate the Discharge FET without following the controller's instructions?
- Are there specific registers or settings that could cause such behavior?
- Could external factors like noise or transient voltage spikes be influencing this issue?
- How can I investigate or debug the AFE's behavior to understand why it activates the Discharge FET unpredictably?

**Additional Information:**
- I'm using an external microcontroller to interface with the BQ76952 and configure its settings.
- The device operates correctly most of the time, but this sporadic issue is causing concern.

**Note:** I've reviewed the datasheet and reference manual for the BQ76952, but I'm still experiencing this issue. Your insights and expertise in analyzing the oscilloscope data would be greatly appreciated. Thank you for your help!

With this revision, the forum question now specifies that the issue relates to the automatic activation of the Discharge FET, providing clarity for forum members who may be able to assist.

///---------------------------- FET control command. -----------------------------------------------------------//

Subcommands(FET_CONTROL, 0x0B, W); // Turn on only chg [1011]
delay_us(8000);

///////////-----------------------------AFE Init function and -----------------------------------------------------//////


CommandSubcommands(SET_CFGUPDATE);
BQ769x2_SetRegister(CommType, 0x08, 1);


BQ769x2_SetRegister(PowerConfig, 0x2D80, 2);


BQ769x2_SetRegister(REG0Config, 0x01, 1);
BQ769x2_SetRegister(REG12Config, 0xDD, 1); // Enable REG1 and REG2 with 3.3V output

BQ769x2_SetRegister(DFETOFFPinConfig, 0x42, 1); // 0x42 is turning BOTH FET OFF.


BQ769x2_SetRegister(ALERTPinConfig, 0x2A, 1);


BQ769x2_SetRegister(TS1Config, 0x07, 1);

BQ769x2_SetRegister(TS2Config, 0x07, 1);

BQ769x2_SetRegister(CFETOFFPinConfig, 0x07, 1); // Set CFETOFF to measure Cell Temperature - 0x92FA = 0x07



BQ769x2_SetRegister(DCHGPinConfig, 0x07, 1); // Set DCHG to measure Cell Temperature - 0x9301 = 0x07



BQ769x2_SetRegister(DDSGPinConfig, 0x0F, 1); // Set DDSG to measure FET Temperature and FET protection is ON - 0x9302 = 0x0F


// pre-discharge FET control
BQ769x2_SetRegister(ChgPumpControl, 0x01, 1); // charge pump Enabled 11V
BQ769x2_SetRegister(FETOptions, 0x1D, 1); // pre-dischatrge enable
BQ769x2_SetRegister(PredischargeTimeout, 0xFF, 1); // pre-dischatrge enable set for 250ms
BQ769x2_SetRegister(PredischargeStopDelta, 0x00, 1); // disabling LD- TOS voltage check, IMPLEMENT it later


BQ769x2_SetRegister(CCGain, 0x41e9a666,4);// current gain for ARK ie 7.4768/0.256 == 0x41e9a666==29.20625
BQ769x2_SetRegister(CapacityGain, 0x4b04ebbf,4 );// current gain for ARK ie 8711103.37487125, 0x4b04ebbf=8711103

BQ769x2_SetRegister(DAConfiguration,0x06,1);// Set current readout conversion to 10mA



// 'VCell Mode' - Enable 16 cells - 0x9304 = 0x0000; Writing 0x0000 sets the default of 16 cells
// FOR 4S ITS 0x8007

BQ769x2_SetRegister(VCellMode, 0x8007, 2);
// BQ769x2_SetRegister(VCellMode, 0x0000, 2);
BQ769x2_SetRegister(CC3Samples, 0x64,1);

BQ769x2_SetRegister(EnabledProtectionsA, 0xFC, 1);

BQ769x2_SetRegister(EnabledProtectionsB, 0xF7, 1); // was C8, now all protections enabled


BQ769x2_SetRegister(DefaultAlarmMask, 0xF882, 2);









// Set up CUV (under-voltage) Threshold - 0x9275 = 0x31 (2479 mV)

// CUV Threshold is this value multiplied by 50.6mV

BQ769x2_SetRegister(CUVThreshold, 0x37, 1); // 0x37 equals 2783mV
BQ769x2_SetRegister(CUVRecoveryHysteresis,0x02,1);


BQ769x2_SetRegister(COVThreshold, 0x49, 1); // 0x49 equals 3693.8 mV just for testing, set back to 0x55
BQ769x2_SetRegister(COVRecoveryHysteresis, 0x02,1);


BQ769x2_SetRegister(OCCThreshold, 0x08, 1); // ie 8x2mV 16mV/0.25mR = 64A
BQ769x2_SetRegister(OCCDelay, 0x01, 1);
BQ769x2_SetRegister(OCCRecoveryThreshold, 0x1770, 2);

// Set up OCD1 Threshold - 0x9282 = 0x0A (20 mV = 20A across 1mOhm sense resistor) units of 2mV

BQ769x2_SetRegister(OCD1Threshold, 0x25, 1); // 37x2mV = 74mV/0.25mR = 296A

BQ769x2_SetRegister(OCD2Threshold, 0x26, 1); // 38x2mV = 76mV/0.25mR = 304A

BQ769x2_SetRegister(OCDRecoveryThreshold, 0x0000, 2);


// Set up SCD Threshold - 0x9286 = 0x05 (100 mV = 100A across 1mOhm sense resistor) 0x05=100mV

BQ769x2_SetRegister(SCDThreshold, 0x04, 1); // 4 is 80mV/0.25mR is 320A for 15us


// Set up SCD Delay - 0x9287 = 0x03 (30 us) Enabled with a delay of (value - 1) * 15 ?s; min value of 1

BQ769x2_SetRegister(SCDDelay, 0x02, 1);// 15uS
BQ769x2_SetRegister(SCDRecoveryTime, 0x0A, 1);// 10S SCD recovey

//
// BQ769x2_SetRegister(OTCThreshold, 0x37, 1); // OTC is 55 deg C
// BQ769x2_SetRegister(OTCRecovery, 0x32, 1); // OTC recovery is 50 deg C

// updated for testing
BQ769x2_SetRegister(OTCThreshold, 0x41, 1); // OTC is 65 deg C
BQ769x2_SetRegister(OTCRecovery, 0x3C, 1); // OTC recovery is 60 deg C

BQ769x2_SetRegister(OTFThreshold,0x5F, 1); //OTF is set to 95 deg C

// BQ769x2_SetRegister(OTDThreshold, 0x3C, 1); // OTD is 60 deg C
// BQ769x2_SetRegister(OTDRecovery, 0x37, 1); // OTD recovery is 55 deg C

// updated for testing
BQ769x2_SetRegister(OTDThreshold, 0x41, 1); // OTD is 65 deg C
BQ769x2_SetRegister(OTDRecovery, 0x3C, 1); // OTD recovery is 60 deg C




// Set up SCDL Latch Limit to 1 to set SCD recovery only with load removal 0x9295 = 0x01

// If this is not set, then SCD will recover based on time (SCD Recovery Time parameter).

CommandSubcommands(EXIT_CFGUPDATE);

Oscilloscope image

  • Hi Tenzin,

    This sounds like the body diode protection feature of the device. From Section 11.5.1 of the datasheet:

    The setting for this threshold can be found at Settings:Protection:Body Diode Threshold. The default value is 50mA.

    Regards,

    Max Verboncoeur

  • Hi Max 

    thank you for the reply, small clarification to make here. When ever AFE is not charging and discharging for periods of 5 minutes, I am making AFE to turn on only charge FET. 
    now issue here is in some random interval the DSGpin is asserted and DSG FET is turning on by automatically. Observation when is load is connected pre-discharge and discharge FET is turning on at the same time for period of 350 ms and current reading shoots up more then 320 Amp and it’s giving short circuit fault and when load is not connected still that ore discharge and charge FET is turning on at the same time and some other AFE register are toggling, which I don’t have the screen shot of that. 

    I will check the body diode threshold configuration setting and let you know if it helps.

    thanks 

    regards 

    tenzin lobsang

  • I have set bodydiode threshold to 250 mA. and problem got resolved. Thanks a lot.