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.

BQ27510-G3: Has Instantaneous Current Measurement changed on this Battery Gauge?

Part Number: BQ27510-G3
Other Parts Discussed in Thread: MSP430F5359, BQSTUDIO, EV2400

We build a board that contains a BQ27510-G3 Battery Gauge (accessed by an MSP430F5359 microprocessor).

For this board, we have designed a “Board Test” program that executes on the three microprocessors on the module and exercises essentially all of the critical module functionality. As part of this, it does some simple operations with the Battery Gauge proving out basic I²C functionality, the competence and correct connection of the Current Shunt Resistor, etc.

In the past, we've always been able to run this Board Test before the Battery Gauge chips have been programmed. Because we use a 0.02Ω Current Shunt Resistor rather than the Gauge's expected default of 0.01Ω, we wrote our test to be tolerant of current readings that are twice as large as the board's electrical design would imply; no problem there; we've probably run a hundred of these boards through this test with no failures attributable to the Battery Gauge portion of the testing.

But we just received a batch of boards with Battery Gauge date code “051C”. Many of these boards failed intermittently failed our Board Test claiming that the INST_CUR (Instantaneous Current) reading from the Battery Gauge was too low. Whereas we would have expected readings (considering the “wrong” shunt resistor) of about 60-70 mA, the gauges would intermittently report much lower readings ranging down to just 5mA. By comparison, the AVG_CUR (Average Current) reading was always pretty much the nominal expected value of twice the real average current flow.

When we programmed these Battery Gauges with our usual Data Flash programming, the intermittent problem went away. This surprised us because we weren't aware of any aspect of the programming that would affect the way that the current measurements worked that would have produced these intermittent, seemingly time-dependent effects.

We used BQStudio to analyze both the Data Flash and Instruction Flash memories of these new gauges and couldn't see any significant difference between much older gauges (e.g., date codes “66ZH” and “99TD”) and these newer gauges. The contents of the Instruction Flash memory areas looks identical; the contents of the Data Flash memory areas looks to only have differences in the Cell Profile regions and the “CC Offset” value.

(Assuming that we've correctly proven that the Battery Gauge firmware is the same,) Has anything changed in the Battery Gauge silicon that would explain this? Do you have any hints for us as to what's going on? Are there subtleties in how the current measurement is done? (See my note below.)

We could modify our test procedure so that we always program the Battery Gauge before testing but we'd rather not do that if we could avoid it.

Atlant

-=-=-=-=-=-

Just for reference, SLUUA97, the “bq27510-G3 System-Side Impedance TrackTm Fuel Gauge With Integrated LDO Technical Reference Manual” describes Instantaneous Current thusly:

2.18 InstantaneousCurrent( ): 0x22 and 0x23
This read-only function returns a signed integer value that is the instantaneous current flow through the
sense resistor. The conversion time is 125 ms. It is updated every second. Units are mA.

It sounds like the conversion is too slow to see any effects that might be caused by, for example, our use of a switch-mode voltage regulator to step down the LiIon supply voltage to the 2.5V utilization voltage but we'd be open to suggestions as to where to look for things that might now be tricking the Battery Gauge's current measurements.

  • Atlant,

    i do not know of anything that would be in the silicon that could impact what you are describing. I will check with the test team to see if anything changed in the test program. 

    In general I do recommend to change your procedure to test the gauge after you program in the golden image. This will help you catch any programming issues without having to test twice. It will also allow you to make sure anything else didnt cause an issue.

    Once I hear back from my back office team i will update this thread. This should be by the end of the week. 

    Thanks,

    Eric Vos

  • Eric:

    Thanks!

    While you check, let me ask a related question:

    We have code that can do "In-System Programming" of the Battery Gauge and that would be one way to approach the problem: add the In-System Programming code to the Board Test program.

    Another way would be to use TI's EV2400 programming pod. Does TI provide any sort of command-line (so scriptable) facility to use that pod to program Battery Gauges? Is there a way to run the BQStudio (Battery Management Studio) in a command-line mode?

    As a third alternative, we could probably use any generic USB-to-I²C gadget to stand in for the EV2400 and just issue the necessary I²C Bus commands to program the gauge.

    Our goal would be to minimize the work that our technicians have to do to successfully execute the Board Test and evaluate the results. Today, it's pretty simple: 1) Run the programming script that programs the three microprocessors; 2) Cycle the power to the DUT; and 3) Listen for the DUT to play a bit of music that signals successful completion of the test. We'd want the Battery Gauge programming to fit in seamlessly somewhere within that basic framework.

    Atlant

  • Eric:

    I'm just brainstorming here...

    The documentation states that the Instantaneous Current measurement is made once per second. Does this mean that once the Battery Gauge has initialized, then on a “metronomic” basis it goes ahead and reads the current every second without significant timing perturbations? Or can other Gauge activities cause the sampling time to be advanced or retarded?

    Right now, my test algorithm is to 1) Command on my known load; 2) Wait two seconds; 3) Read the Average Current and then the Instantaneous Current; 4) Evaluate the results and remove the known load. 

    If the Gauge truly is reading the current once a second every second, then this algorithm should work because, in theory, there should always be at least one current reading done while the test load is applied and BEFORE I read out the results. But if anything can perturb the pace of readings, then this might fail.

    Again, just brainstorming here...

    Atlant

  • Atlant,

    TI does not currently offer a way to script the EV2400. However you can accomplish what you say with any generic I2C adapter. In addition to program the DUT you can look into the file type .bq.fs (flash stream files, Golden image plug-in) which TI does create from out tools. This is a file which lists the I2C commands needed to do the programming. 

    Thanks,

    Eric Vos

  • Atlant,

    Our test team did not uncover any changes in the process flow. At this point my best advice would be to program the device then check for calibration accuracy. 

    Thanks,

    Eric Vos

  • In addition to program the DUT you can look into the file type .bq.fs (flash stream files, Golden image plug-in) which TI does create from out tools. This is a file which lists the I2C commands needed to do the programming.

    Yes, this is how we generate our MSP430 program that does the “In-System Programming” of the Battery Gauge; we have a Perl script that converts the .df.fs file to a form that our runtime can interpret into I²C commands, evaluate the responses coming back from the Gauge, and insert the appropriate delays.

    Atlant

  • Our test team did not uncover any changes in the process flow

    Thanks. I think I'll go back to some of those older date-coded devices and run a lot of passes of my test on unprogrammed (or returned-to-factory-programming) devices and see if they exhibit any failures.

    If I don't get any failures (and remember, I've never gotten any failures in the past), then you may have a new, unexplained anomaly in Gauge behavior that TI should investigate. If I do get failures, then I'll need to take your advice to program the gauges and we could then close this issue.

  • Hello Atlant,

    I will close this until we hear further.

    Sincerely,

    Wyatt Keller