Other Parts Discussed in Thread: BQ25798,
Tool/software:
Hi there—we have encountered a corner case in which both the CHG and DSG FETs are permanently disabled if the gauge experiences a PCHGC, CHGC or OCC fault while recovering from a CUV fault. The sequence is as follows:
- The battery naturally discharges below the CUV threshold.
- The gauge enters CUV, and disables the DSG FET while waiting for the cell voltage(s) to clear the CUV recovery threshold.
- The ChargingCurrent() is lowered in response to temperature.
- Due to system latency, the host SW does not reduce the charger IC constant-charging current within the CHGC delay time.
- The gauge enters CHGC, and disables the CHG FET.
- With the CHG FET disabled, the battery stops charging and the CUV condition persists. This in turn keeps the DSG FET disabled, preventing a discharge current from flowing and clearing the CHGC recovery threshold.
- Both FETs remain disabled effectively forever, and the battery never charges again until it self discharges enough for the gauge to shut down; any reasonable customer will RMA the product well before this time.
This issue was originally reported in the following thread: https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1451501/bq40z50-r2-precharge-start-voltage-vs-charging-voltage-low/5620339#5620339
The workaround I decided upon at the time was to change the PCHGC, CHGC and OCC recovery thresholds from negative to positive. This allows a current of zero to clear the recovery threshold, and avoid this "chicken and egg" problem.
The problem with this workaround is that the gauge then repeatedly enables and disables charging at a period equal to the sum of the delay and recovery delays. After further consideration, we do not wish to accept this behavior; in case of a faulty charger, we want charging to stop until the charger is disabled or removed. This seems to be the recommended behavior anyway.
A second workaround is for our host SW to monitor for prolonged periods of DSG = CHG = 0 and reset the gauge using the DeviceReset command (0x0041); however, this command is not available while the gauge is sealed. My questions are as follows:
[1] Are there any other workarounds for this issue? I see a few other instances of this issue reported across E2E, but no clear solution other than to say this issue is unlikely to happen often.
[2] Is there any problem with leaving the gauge unsealed during production so that DeviceReset remains available, or at least temporarily unsealing the gauge for the purpose of resetting it?
Thank you in advance for your support—in case I can clarify either of my questions, please let me know.