Let’s talk about the Bq796xx Driver

Just a discussion starter for the Tesla LFP module interface


  1. Todays rabbit hole involved manual balancing while also allowing measurements. The first test was to just keep reading the cell voltages while balancing was turned on. This did not go well. Single cell balancing had the expected behavior of adding noise to the cell being balanced. What I did not expect was for the part to enable other balance switches and effect their cells as well. Multiple logic traces confirmed the correct balancing time value was being written, yet multiple voltages were effected.
    The only thing that seemed to work was to pause balancing, reset the low pass filters, and then read the cells. This fixed the phantom cell balancing issue and cleaned up the voltage readings. Still have 3 or 4 mV of error to deal with when multiple non adjacent cells are balanced.

  2. All the OEM implementations I have come across have a required Balancing “dead time” before reading cell voltages. Some like Tesla have the master command a balancing stop and then request cell voltages others have the slaves do this on their own (Outlander PHEV), strangest ones so far are the VW MEB modules, they keep balancing but report they are balancing so you are to ignore the voltages yet they keep being broadcast without being requested on a fixed interval.

    1. Thanks for the comment. The fix does seem to require pausing balancing and delaying to allow the low pass filter to catch up before reading the ADC. I still don’t see why reading with balancing turned on would cause non adjacent cell voltage readings to be effected. I’ll have to come back to this one again some day.

      Today I was working on daisy chain communications fault recovery. The BQ part makes this extremely challenging.

  3. Adjacent cells is easy, what is the BMB doing it is cycling current through a resistor. Thus the positive of the cell is connect through a resistor and fet to the most negative. This means a current flow.

    Then you try and measure a voltage that is referenced to the same wire the voltage is flowing, negative of the next cell is connected to the positive of the cell being balanced. The wire has a voltage drop due to the current flow. This is where the differential comes from.

    1. This will have a cascade effect, as the way the BMS chip is structured internally. It varies slightly from chip to chip. Due to needing to reference the most negative of the measured stack. So errors can build up as it is not a true cell measurement for some but a subtraction of two voltages.

Leave a Reply

Your email address will not be published. Required fields are marked *