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.

BQ24250: Detecting Charger Connection & Fault Conditions

Part Number: BQ24250
Other Parts Discussed in Thread: BQ25611D

Hi team,

I have some technical questions about the BQ24250 battery charging IC. The main question is, what is the recommended way to detect whether a charger is connected?

In the BQ24250 datasheet here, in the Register #1 description on pg 34, there are two status bits (B5,B4) which can be Ready(00b), Charge in progress(01b), Charge done(10b), or Fault(11b). Our code is using Ready(00b) to mean that a charger is not connected. However, I am observing a value of Ready(00b) in these bits even when I am charging and the battery is at or near fully charged, so I am not sure how to distinguish between ‘charger connected and fully charged’ vs ‘charger not connected and fully charged’.

Another question is in regard to fault conditions. The datasheet states that ‘If multiple faults occurred, they can be read by sequentially addressing this register (e.g. reading the register 2 or more times). Once all faults have been read and the device is in a non-fault state, the fault register will show “Normal”’. I’m wondering what to expect for fault conditions that may be continuously presented, for example, the Battery Temperature(TS) Fault(0100b)? If the register is read repeatedly, would the fault bits ever show Normal, assuming the temperature stays too high or low? I’m considering attempting to read the register a max number of times, say up to 10, to try to read, handle, and clear all faults. Do you think this approach is viable?

Thank you in advance for your support!

Errol

  • Hi Errol,

    Regarding 1, for detecting whether a power source is attached, I recommend using REG#1[b1-b3]=0010 - input UVLO or 1010-Input Fault and LDO low. 

    Regarding 2, yes, you should read those register multiple times, continuously, in order to identify the faults and clear them if applicable. For TS fault specifically, you can use REG#6[b0-b2] to determine the exact TS fault. 

    Regards,

    Jeff

  • Hi Jeff,

    Thank you for the quick reply.  My customer has some follow-up question below on bq24250.

    • Is it correct that EITHER fault 0010b (input UVLO) OR 1010 (input fault and LDO low) indicate a transition to battery?
    • I have consistently been observing fault 0011b (sleep) when transitioning to battery. Can/should the sleep fault also be used for detecting the transition to battery?
    • What is the recommended approach to detect a transition to charging?
    • How many times should a fault condition generally be read before giving up? If this depends on the fault type, how many times should I read or how long should I wait for each type?
    • When a fault is indicated, does that mean necessarily that a device is charging, or on battery? Or does a fault give no information about whether a device is charging?
    • You mentioned ‘clearing’ faults if applicable. Can you provide guidance on how to do that (or just point me to where it is documented?
    • Is there example code you can provide (or point me to) for handling the bq24250 fault conditions? If so, that would be a good reference.

    Thank you for your support on this!

    Errol

  • Hi Errol,

    Please see my answer embedded below:

    • Is it correct that EITHER fault 0010b (input UVLO) OR 1010 (input fault and LDO low) indicate a transition to battery?
      • For 99% of cases, yes.  It is possible but highly unlikely that the LDO output gets shorted to ground, causing LDO low even with input voltage good.
    • I have consistently been observing fault 0011b (sleep) when transitioning to battery. Can/should the sleep fault also be used for detecting the transition to battery?
      • Yes.  Sleep isn't really a fault.  That is what we call the state when the charger is powered only by battery.
    • What is the recommended approach to detect a transition to charging?
      • The FAULT bits report Normal and the STAT bits report charge in progress.
    • How many times should a fault condition generally be read before giving up? If this depends on the fault type, how many times should I read or how long should I wait for each type?
      • I suggest reading the fault register until you get the same fault (or Normal which isn't a fault) 2 times in a row.  That way you have the history of faults and the final fault or normal status of the device.  
    • When a fault is indicated, does that mean necessarily that a device is charging, or on battery? Or does a fault give no information about whether a device is charging?
      • During Input OVP or Input UVLO, which will eventually end in Input Fault and LDO Low, the buck converter stops providing SYS output, the device is not charging and the device is powered by the battery.  With Battery temperature fault, the buck converter is providing SYS output but charging stops.  During Battery OVP, the buck converter stops so that the battery can discharge below OVP through the SYS load.  During thermal shutdown, the buck converter stops providing SYS, and therefore, charge current until the IC die temp drops below the shutdown temp threshold. The timer fault is the safety timer expiration and stops charge but not the buck converter.   The No battery connected fault means the battery detection algorithm is running (square wave on SYS and BAT) but, unless TS function is disabled, the Battery temperature fault will stop charge first and prevent battery detection from operating.  The ISET short fault is so unlikely unless there is a board solder or assembly problem (similar to LDO short) that I doubt you will ever see it.
    • You mentioned ‘clearing’ faults if applicable. Can you provide guidance on how to do that (or just point me to where it is documented?
      • I suggest reading the fault register until you get the same fault (or Normal which isn't a fault) 2 times in a row. The register stays on the last FAULT status.  Clearing the faults simply means you read the fault and have the host software or user try to fix the fault.  For example, if you have Input OVP followed by Input Fault, the host software could tell the user to remove the input adapter that is too high.
    • Is there example code you can provide (or point me to) for handling the bq24250 fault conditions? If so, that would be a good reference.

      Hope this helps!

      BTW, just curious why you chose BQ24250 over a newer device like BQ25611D, for example?

      Regards, Jeff