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: Clarification on CC Gain Formula and Coulomb Counting Methods- BQ76972/BQ76952

Part Number: BQ76952
Other Parts Discussed in Thread: INA237, BQ76972, , BQ76940, BQ76942

Tool/software:

1. Clarification on CC Gain Formula

We are using a shunt resistor value of 0.25 mΩ and need clarification on the appropriate CC Gain value to be programmed in the calibration register for current scaling.

Datasheet vs Application Note Variance:

We have come across two different formulas for calculating CC Gain depending on use case:

  1. For Internal Coulomb Counting (AFE PassQ):

CC Gain = 7.4768 / Rsense(mΩ)

Example (0.25 mΩ):

CC Gain = 7.4768 / 0.25 = 29.9072 (rounded as needed)

  1. For External Integration (MCU-based):

CC Gain = 20,000 / (Rsense(Ω) × 32767)

Example (0.00025 Ω):

CC Gain = 20,000 / (0.00025 × 32767)  2442.7 μV/LSB

Question:

  • Can you confirm that these two formulas are both valid but intended for different integration strategies (internal vs external)?

Should we use the 7.4768-based formula only if relying on PassQ / internal integration, and the 2443 μV/LSB value only if reading current externally via CC2?

2. Clarification on Coulomb Counting Comparison: Internal vs External

We are evaluating whether to use the internal charge integration feature (PassQ) or perform external coulomb counting in the MCU using CC2 data.

Summary of Current Understanding:

Feature / Aspect

External (CC2)

Internal (PassQ via CC1)

Sampling Source

CC2 (real-time, fast update)

CC1 (filtered, slow update)

Update Rate

Every 3 ms (1.5 ms in FASTADC)

Every 250 ms

Resolution

24-bit internally (16-bit reported)

16-bit

Integration Location

MCU

AFE firmware

Reset Method

Handled by MCU

RESET_PASSQ() command (0x0082)

Power Consumption

Higher (FASTADC)

Lower

Accuracy for Pulsed Loads

High

Limited due to filter smoothing

Ease of Implementation

Complex (MCU-side integration)

Simple (built-in charge accumulator)

Questions:

  • Is our comparison accurate in terms of performance and use-case suitability?

  • Are there other hidden advantages or limitations in PassQ that we should be aware of?

For a system requiring high-speed SoC tracking (fast load changes), is external integration definitively recommended?

  • Hi Shiva,

    For calculating passed charge, the best approach is to use the PASSQ feature.  There is really no need to read the CC1 current directly.  If you want to know the current at a particular time, it is best to just use the CC2 Current (you can also access the raw, unprocessed 24bit Coulomb counter ADC data in the DASTATUS1~4() subcommands). 

    The filtering used by the CC1 and integrated in the PASSQ feature is optimized for Coulomb counting of passed charge, so I recommend using this for best results.

    You mention a concern about fast load changes.  Note that both CC1 and CC2 use data from the Coulomb counter ADC, which samples the SRP-SRN voltage every ~4us in NORMAL mode.  It then takes those 4us samples and digitally filters 768 to generate a single CC2 output.  It digitally filters 65536 of those to generate a single CC1 output.  Even if your load changes very quickly, the 4us sampling time, combined with the front-end anti-aliasing filtering provided by the RC components between Rsense and SRP-SRN, ensure that you do not miss fast load transients.

    Regarding the CC Gain, I am not sure where you saw the 20000/(Rsense*32767)?  The proper equation in the TRM is CC Gain = 7.5684 / (Rsense in mΩ).  Note your equation is slightly different, I believe that was in an early version of the TRM which was later corrected.

    Thanks,

    Terry

  • Hi Terry,

    Thank you for your explanation.  

    I would like to share the intention behind our approach.

    In the GEN1 BMS, we used the AFE BQ7694001 and the MCU STM32U5. For better control and flexibility over the SOC algorithm, our team decided to implement the SOC algorithm directly in the MCU. However, for more accurate SOC estimation, we needed a higher sampling rate. Since the BQ7694001 has a sample rate of 250 ms, we added the INA237 current sensor via I2C, which provides a sample rate of around 20 to 30 ms.

    Now, in the GEN2 BMS, we are using the BQ76952/BQ76972 AFE along with the MCU. In this design, we are considering removing the INA237 current sensor because the new AFE offers better performance.

    We already have a working SOC implementation in the MCU. Could you please guide us on how to map or adapt this implementation with the new AFE?

    Your valuable input would be appreciated.

  •  Hi Terry, 

     I’m following up as I’m currently waiting for your reply regarding the earlier communication. Kindly provide an update

  • Hi Shiva,

    I suspect you might be thinking that the Coulomb counter is like a sample-and-hold type of ADC, to only grab and digitize voltage at one point every 250ms.  The Coulomb counter in the BQ76940 and BQ76942/52 all are based on delta-sigma modulators, they sample at a much higher speed, then digitally filter the results internally before providing a final digital output at a lower sampling rate.  For SOC calculation, this is sufficient, you do not miss spikes of current because of the high speed sampling that occurs (every 4microseconds in the BQ76942/52).  So you really should not need an extra INA unless maybe you want better resolution (maybe you want to measure <1mA across a 50uOhm sense resistor, etc).

    For SOC calculation, one difference vs the BQ76940 is that the BQ76942/52 will do the integration for you internally, your MCU does not have to read every 250ms current value from the monitor and integrate itself, which is what you were likely doing with the BQ76940.  Instead, when you want to do a new SOC calculation, you read the PASSQ and PASSTIME values, which provide the integration of the passed charge.  You can then reset the timer after you read it, then next time you'll just get the charge passed since the last read point.

    Thanks,

    Terry