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.

BQ25896: bq25896 REG0B->CHRG_STAT transition after charge termination

Part Number: BQ25896

Hello,

"When termination occurs, the status register CHRG_STAT is set to 11, and an INT pulse is asserted to the host. Termination is temporarily disabled when the charger device is in input current, voltage or thermal regulation." (DS 9.2.7.3)

What makes REG0B-CHRG_STAT change from 11 – Charge Termination Done to 00 – Not Charging?

To enable charging, both CE# pin high and REG03->CHG_CONFIG = 1 - Charge Enable are required, so to 'stop charging' you only need to change one of these 'controls'. However, do both of these ways to 'stop charging' also individually change REG0B-CHRG_STAT to 00 - Not Charging?

It's not unreasonable to assume that an error during charging would change REG0B-CHRG_STAT to 00 – Not Charging, but it doesn't seem to be documented.

The practical question is that REG0B-CHRG_STAT becoming 11 triggers an INT pulse. Some of the interrupt reasons are errors that you read from REG0C and presumably you want to react to the error flags as soon as possible (so you only read REG0C at first). If there is an error you would in many cases stop charging. You don't want to lose the REG03->CHG_CONFIG value by stopping the charging. Unless REG03->CHG_CONFIG has been automatically changed by HW due to the error, that is.

Could you please clarify?

Best regards

Niclas

  • Niclas,

    "Charge Termination Done" indicates charging is completed. "Not Charging" indicates charging conditions are not met.

    Thanks,

    Ning.

  • Hi Ning,

    Thank you. After the below interpretation I think this answers the question.

    Essentially, the REG0B->CHRG_STAT bit field has too few possible statuses.
    Value 00 - Not Charging could mean at least:
    #A 'idle' (we are not trying to charge)
    #B 'charging halted due to error' (but might recommence if the error condition ceases to exist)
    #C 'error after charge termination' (charging might recommence after battery self-discharge hysteresis).

    In other words, when REG0B->CHRG_STAT is 00 you need to compare to your expected state (CE# pin level and REG03->CHG_CONFIG bit value) and read some of the other registers including REG0C->NTC_FAULT and REG0E-BATV and deduce/assume whether REG0B->CHRG_STAT == 00 actually means #A, #B, or #C.

    Also, if there are multiple things happening at roughly the same time and your response to a REG0C error is to set CE# high, then REG0B->CHRG_STAT could change from '11 Charge Termination Done' to '00 Not charging' before you read REG0B, which means that the charge termination information is lost.

    Regards
    Niclas