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: Is there a complete table of the FW_VERSION values for BQ27510 Battery Gauge Factory Firmware?

Part Number: BQ27510-G3
Other Parts Discussed in Thread: BQ27510-G1, BQSTUDIO, BQEVSW, BQ27510, BQ27510-G2

I know that BQ27510-G3 Battery Gauges seem to report 0x0400 when you read their FW_VERSION register. (I THINK that this is still the latest firmware for this hardware.)

But has TI published a list of all of values that have appeared in that register?

For example, what value(s) did BQ27510-G1 gauges report? -G2 gauges?

Atlant

  • Hello Atlant,

    TI does not publish a list of values that may be returned by FW_VERSION.  If you read a different version, we would recommend that you programmatically upgrade it to G3.

  • Actually, I've done exactly that using “In-System Programming” techniques. And now I'd like to test that software against the -G1 gauges that we're probably going to be buying and upgrading to -G3 gauges.

    I have -G2 firmware that I've been re-installing as I test up the upgrader and its FW_VERSION reports as "0x0123".

    But I also have a gauge of unknown provenance that reports FW_VERSION "0x0112"; is this gauge a -G1?

  • Hello Atlant,

    Before updating the firmware, i would read the Device number (0510) to verify that it is the same device. This may be the simplest check to verify if the firmware can be upgraded.

  • > Before updating the firmware, i would read the Device number (0510) to verify that it is the same device.

    We do that as our first step before any programming takes place.

    All I'm trying to do here is identify that I have a real -G1 gauge that I can use for testing to prove that I can successfully upgrade -G1 gauges to be -G3 gauges.

  • Hello Atlant,

    Yes version 0x0112 is likely to be a G1.

    The 0x112 senc is available at www.ti.com/.../BQ27510-G1

  • Thanks!

    I don't think I have any tool that can use the .senc. (BQStudio can't, as far as I know.) Is that same firmware available somewhere as a .bq.fs file?

  • Hello Atlant,

    The older versions used bqEVSW which uses the senc format. It is available for download at the same link

  • The documents linked below make it clear that:

    FW_VERSION 0x0111 => BQ27510 (no -G anything)

    FW_VERSION 0x0112 => BQ27510-G1

    FW_VERSION 0x0123 => BQ27510-G2

    FW_VERSION 0x0400 => BQ27510-G3

    https://www.ti.com/lit/an/slua558/slua558.pdf  bq27510 to bq27510-G1 Change List

    https://www.ti.com/lit/an/slua567/slua567.pdf  bq27510-G1 to bq27510-G2 Change List

    https://www.ti.com/lit/an/slua686/slua686.pdf  bq27510-G2 to bq27510-G3 Change List

  • Hello Atlant,

    That's great. Does it answer all your questions?

  • Well, for the first time ever, I seem to toasted a Battery Gauge (to the point where it doesn't seem to be recoverable).

    I tried using the bqEVSW firmware to program that .senc file and while it seemed to do something (and took about the right amount of time to do it), when it was done, the Battery Gauge was inoperable and my attempts to recover it using BQStudio have entirely failed.

    The gauge no longer ACKs operations to either I2C Bus address 0x55 or 0x0B so the gauge seems to be effectively inert on the I2C Bus.

    Is there a way to recover this gauge of is it truly toast? (I'll bet I know the answer to THAT question.)

    Does the Gauge need to have working firmware in order to operate its I2C Bus state machine and to reprogram itself?

  • I'd still like a pointer to the -G1 firmware in .bq.fs format or .srec format (so I can use it with the BQStudio app). As you can see, I successfully destroyed a battery gauge trying to use the .senc file.

  • Hello Atlant,

    The bqEVSW works slightly differently. It does not automatically enter/exit ROM mode. Check if you can get a response from I2C address 0x16 (any register) using the "Pro" screen. If yes, then program the senc again and if successful, press the "Execute" button. Do not "Execute" if programming was not successful.

    To get the .srec format of -G1 firmware, so you connect a G1 gauge and use bqStudio to read out the srec. You will need to ignore errors. DO NOT attempt any data memory read/write when ignoring errors.

  • > Check if you can get a response from I2C address 0x16 (any register) using the "Pro" screen.

    No, it's Error 772 to everything even though I can see the EV-2400 sending the attempted I2C Bus “Write” operation (and not getting the I2C Bus “ACK” back).

    > To get the .srec format of -G1 firmware, so you connect a G1 gauge and use bqStudio to read out the srec. You will need to ignore errors. DO NOT attempt any data memory read/write when ignoring errors.

    Sure, and I've done that but that's not quite the same data as a TI-provided “Factory-Fresh” image because the Gas Gauge has run and stored some operational data into the Flash memory. It would be better to get (from TI) a file that is bit-for-bit identical with the data contained in the .senc file. But maybe I'll try programming another Gauge using the .senc file and see if I was just unlucky that first time. ;-)

  • > The bqEVSW works slightly differently. It does not automatically enter/exit ROM mode.

    I know what “ROM Mode” means but I'm not sure I understand exactly what you're telling me to do and I really like to understand this clearly before I destroy another Battery Gauge.

    I'm looking at this page in the bqEVSW software:

    And I've got the .senc file selected.

    But I THINK you're telling me that before I push that “Program” button, I've got to manually issue the I2C Bus commands to set the Battery Gauge into ROM mode.

    Is that this command:

        Write to AA: 0x00U 0x00U, 0x0FU   // Enter "ROM Mode"

    And when I'm done, I need to manually issue these two commands:

        Write to 16: 0x00U 0x0FU                // Exit "ROM Mode"
        Write to 16: 0x64U 0x0FU 0x00U     // Provide a checksum to confirm that command

    Or are there buttons to push to do this?

    Or am I misunderstanding what you're telling me?

  • Hello Atlant,

    You understood it correctly. You will need to use the I2C Pro screen to enter ROM mode.

    There is an "Execute" button below the program button for the post programming steps. (the steps you listed do the same thing).

    I cannot understand how the gauge could have been bricked. Without sending to ROM mode, the senc programming would fail. And it uses a different I2C address, so none of the commands affect the gauge.

  • > I cannot understand how the gauge could have been bricked. Without sending to ROM mode, the senc programming would fail. And it uses a different I2C address, so none of the commands affect the gauge.

    Does the Battery Gauge need to have working firmware to load firmware (and, more generally, to communicate on the I2C Bus)? Or is there a permanent ROM-based bootloader that does the firmware loading and can always do basic I2C Bus communication?

    In the first case, I could see a failure during firmware loading leaving the Gauge bricked. In the second case, one wouldn't think that “bricking” was possible.

  • Hello Atlant,

    Corrupt firmware image can brick the gauge even if the (ROM) bootloader is fine. It is unlikely that the steps you followed can result in a bricked gauge