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.

BQ78350-R2-DEVICE-FW: Some SMBus commands not working

Part Number: BQ78350-R2-DEVICE-FW

Hi, we have produced in-house software to query a BQ78350 hosted on our battery system. Everything was working okay one day, then we saw erroneous comms from a subset of the SMBus commands.

In particular, SafetyStatus (0x51), PFStatus (0x53), OperationStatus (0x54) & ChargingStatus (0x55) were reporting the same unusual data sequence:

i.e. read address, 0xc0, 0x08 (clock-stretched), 0x61 (repeated many times), then the last 0x61 NACK'ed with what may actually be the 35ms SMbus timeout.

bqStudio uses 0x00 ManufacturerAccess() & 0x44 ManufacturerBlockAccess() to query SafetyStatus (0x0051), PFStatus (0x0053), OperationStatus (0x0054) & ChargingStatus (0x0055) and semed to report valid data; however, this data did not update with changes in operation status. The values remained unchanged / historic.

Restarting the BQ did not fix this. Reloading the firmware and configuration seemed to fix the problem.

Has anyone else seen this issue and/or know what may cause this situation?

Similarly, on a different BQ78350 reading the Specification Info, which was working fine reporting 0x31 + 0x00, decided to consistently report 0xFB + 0x17 which doen't fit the datasheet.

Regards.

  • Hi Kajan,

    This is really strange behavior. It is interesting that reloading the firmware and configuration resolves the issue. If you see the issue again, it might be good to export the srec file (using Firmware screen of BQStudio) to see if anything has been corrupted. You can do a comparison to a "good" srec file.

    Regards,

    Matt

  • Hi Matt,

    I have a backup of the original srec. Loading it onto a new device reproduces the same problems. I can subsequently export the 'Data Memory' via bqStudio, load a fresh firmware image (bq78350R2FirmwareBundle-2.02-windows-installer), then import the 'Data Memory' back in to get a working solution. Binary diff of the srec before and after is meaningless to me: Although, the diff is limited to the beginning of the image from S01 to S32. I can share the srec with you if you are able to analyse and make sense of it?

    Best regards,

    Kaj

  • Hi Kajan,

    If the diff is limited to the beginning of the image, it might be that the process of writing the srec was interrupted the first time (the first lines of the srec are programmed and the end of the programming process). This would explain why reloading the srec would fix the issue. You can share the srec and I can take a look if you want.

    Regards,

    Matt

  • Hi Matt,

    The srec was not being loaded/reloaded at the time the issue occurred - It had been working for many days/weeks without any issues. There were Data Memory read/writes being performed though. I've attached the srec here...

    corrupt_image.zip

    Regards,

    Kaj

  • Thanks Kaj. The firmware looks fine. Can you send your good image too? 

  • recovered_image.zip

    Thanks for looking into this.

  • Hi Kajan,

    It looks like the only differences are some of the calibration registers, some of the lifetime data (should not have any effect), and some of the private data memory. I wonder if something important in the private data memory was written to by mistake. 

    When you load a gg file, it will only write the data for the specified registers, but when you write an srec file, it will write all of the memory. It is possible an important part of data memory was corrupted. Unfortunately, I am not an expert on the device firmware, so it is difficult to trace this further to find the exact byte that is causing issues.

    Regards,

    Matt

  • Hi Matt,

    Yes, agree about the calibration & lifetime data - these differences appear when diff'ing the gg files exported from the srec images and seem okay. Not sure what you mean by 'private data memory' - is this something in the gg file? We do have settings in the SBS Configuration and System Data, both of these sections are in Data Memory and seem okay when viewed in bqStudio.

    ManufacturerAccess & ManufacturerBlockAccess (of SafetyStatus, PFStatus, OperationStatus & ChargingStatus) report valid but seemingly historic values, which suggests that the functionality is compromised in addition to some data. We can export the Data Memory from the 'corrupt image' and load it successfully onto a new device / new firmware.

    Could you refer this to someone who can dive deeper into the bytes?

    Best regards,

    Kaj

  • Hi Kaj,

    The complete data flash is not covered by the gg file. There is some memory used by the firmware which should never be written. When you export a gg file, it will not include these addresses in the data flash. 

    When you load the exported 'corrupt' image, are you doing this as a gg file? And when you load it to the new device, does it perform correctly or does it show issues?

    Regards,

    Matt

  • Hi Matt,

    Thanks for the info.

    Yes, I created a gg file by first loading the 'corrupt' srec and then going to bqStudio | Data Memory | Export: And then when this gg is loaded onto a new device it performs correctly.

    Based on all of this, I shall track values of InstructionFlashSignature, StaticDFSignature & StaticChemDFSignature, and will see if any of these change if/when the problem occurs again.

    Thanks again for your help.

    Kaj