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.

BQ27520-G4: DFFS file fails on Compare

Part Number: BQ27520-G4
Other Parts Discussed in Thread: BQSTUDIO

Hi,

I'm trying to program my device through I2C and it seems to work fine while it is in FW mode but when it switches over to ROM mode it seems that something goes wrong.

My DFFS file is as follows:

;--------------------------------------------------------
;Verify Existing Firmware Version
;--------------------------------------------------------
W: AA 00 01 00
C: AA 00 20 05
W: AA 00 02 00
C: AA 00 29 03
;--------------------------------------------------------
;Unseal device
;--------------------------------------------------------
W: AA 00 14 04
W: AA 00 72 36
W: AA 00 FF FF
W: AA 00 FF FF
X: 1000
;--------------------------------------------------------
;Go To ROM Mode
;--------------------------------------------------------
W: AA 00 00 0F
X: 1000
;--------------------------------------------------------
;Data Block
;--------------------------------------------------------
W: 16 00 03 00 00
W: 16 64 03 00
X: 20
C: 16 66 00
W: 16 00 02 00 00 00 EA FF 33 06 FA 33 8C FA 33 39 FE 33 41 FE 33 FF FF 3F FF FF 3F FF FF 3F FF FF 3F FF FF 3F FF FF 3F FF FF 3F FF FF 3F FF FF 3F FF FF 3F FF FF 3F 29 03 3F 58 CB 33 C1 00 08 00 00 00 00 00 00 FF AA 0E FB A7 0E FF A6 0E FF A1 0E FF A0 0E FE A3 0E 6C A2 0E D2 FF 3A FF A1 0E 63 A0 0E FF A3 0E
W: 16 64 C9 34
X: 2
C: 16 66 00
W: 16 00 02 01 00 00 61 A2 0E BD A5 0E 13 A4 0E CA FF 3A FE A1 0E 6C A0 0E FE A3 0E 6C A2 0E CA FF 3A C2 FF 3A D6 FF 33 FF AF 0E 01 4F 03 3F 11 0C CD FF 30 D4 FF 35 2F 10 0C D4 FF 35 FF FF 23 01 AF 14 01 4F 03 3F 11 0C C5 FF 30 CC FF 35 2F 10 0C CC FF 35 FF FF 23 FF DF 0B C4 FF 33 A4 F6 39 FE AF 16 C1 AB 0E
W: 16 64 89 2E
X: 2
C: 16 66 00
W: 16 00 05
W: 16 64 05 00
X: 170
C: 16 66 00
C: 16 04 36 FC 4F 9F
W: 16 00 0C 00 00 00 83 DE
W: 16 64 6D 01
X: 400
C: 16 66 00
W: 16 00 0A 00 00 00 7F 74 1F 21 94 0A 9C 08 FA B8 00 4C 00 00 00 00 0B B8 10 68 0B A4 03 E8 00 20 03 E8 00 20 00 20
W: 16 64 9D 08
X: 2
C: 16 66 00
W: 16 00 0A 01 00 00 10 96 00 D4 86 4A C6 B4 C2 6E 2B 03 7C 01 48 FD A3 F6 75 12 58 2D B7 2C 4A 00 00 00 00 CF DC 17
W: 16 64 83 0C
X: 2
C: 16 66 00
W: 16 00 0A 02 00 00 F3 00 00 17 F3 00 00 3A 36 FD 91 00 25 30 01 00 EF 05 11 05 01 00 00 10 01 00 3C 00 50 3C 00 64
W: 16 64 A5 06
X: 2
C: 16 66 00
W: 16 00 0A 03 00 00 3C 00 20 01 00 03 E8 00 05 00 03 E8 00 00 00 FE D5 FB 95 00 02 02 BC 00 14 03 E8 10 62 10 68 01
W: 16 64 52 08
X: 2
C: 16 66 00
W: 16 00 0A 04 00 00 01 02 BC 01 2C 00 1E 00 C8 C8 14 10 00 3C 0E 10 00 0A 46 05 0F 07 0F 03 20 00 64 46 50 0A 0F F0
W: 16 64 C6 05
X: 2
C: 16 66 00
W: 16 00 0A 05 00 00 0F D0 01 90 00 64 19 DC 5C 60 00 7D 00 04 03 19 25 5A 0F 14 60 6E 0C 80 00 C8 28 01 F4 00 00 00
W: 16 64 12 08
X: 2
C: 16 66 00
W: 16 00 0A 06 00 00 00 00 00 00 00 00 00 43 80 04 00 00 01 14 00 2C 05 00 0A 13 88 00 C8 0A 23 61 03 E8 00 10 60 C9
W: 16 64 3C 05
X: 2
C: 16 66 00
W: 16 00 0A 07 00 00 D7 F6 F5 F8 F6 DE EA D7 E8 E9 EA F0 E2 E3 E5 E3 E6 E7 E9 E9 F0 EB ED E9 E7 E5 E3 DF EC EF E2 BC
W: 16 64 EF 1C
X: 2
C: 16 66 00
W: 16 00 0A 08 00 00 9F B1 B7 E9 DD A4 00 F3 CD 04 0E 0A 92 CB 24 D6 1D 74 DA 4D 92 D7 DD 50 D1 BE 13 EB FE F9 FC 0F
W: 16 64 93 12
X: 2
C: 16 66 00
W: 16 00 0A 09 00 00 FF F7 AD 09 C5 BC A0 D3 FD 6B DD 3E 3B DC 7D D1 C9 CB 53 AA BA AA 98 29 3F 9E 78 C2 10 B0 00 7B
W: 16 64 A3 12
X: 2
C: 16 66 00
W: 16 00 0A 0A 00 00 2D 5D D2 4F 1E D3 60 F0 FF 55 00 14 01 01 03 05 F8 03 FF 03 10 24 28 1E 2C 77 7F 00 00 FF D0 00
W: 16 64 DA 0A
X: 2
C: 16 66 00
W: 16 00 0A 0B 00 00 FA EF ED 2A F2 00 3D 03 12 EF EE FE 05 DA 00 00 FE E9 00 03 1D 33 B1 19 F7 00 43 2D FA 9E 88 11
W: 16 64 AF 0E
X: 2
C: 16 66 00
W: 16 00 0A 0C 00 00 6D 23 61 03 E8 00 10 60 C9 D7 F6 F5 F8 F6 DE EA D7 E8 E9 EA F0 E2 E3 E5 E3 E6 E7 E9 E9 F0 EB ED
W: 16 64 19 18
X: 2
C: 16 66 00
W: 16 00 0A 0D 00 00 E9 E7 E5 E3 DF EC EF E2 BC 9F B1 B7 E9 DD A4 00 F3 CD 04 0E 0A 92 CB 24 D6 1D 74 DA 4D 92 D7 DD
W: 16 64 A9 14
X: 2
C: 16 66 00
W: 16 00 0A 0E 00 00 50 D1 BE 13 EB FE F9 FC 0F FF F7 AD 09 C5 BC A0 D3 FD 6B DD 3E 3B DC 7D D1 C9 CB 53 AA BA AA 98
W: 16 64 0C 15
X: 2
C: 16 66 00
W: 16 00 0A 0F 00 00 29 3F 9E 78 C2 10 B0 00 7B 2D 5D D2 4F 1E D3 60 F0 FF 55 00 14 01 01 03 05 F8 03 FF 03 10 24 28
W: 16 64 4B 0B
X: 2
C: 16 66 00
W: 16 00 0A 10 00 00 1E 2C 77 7F 00 00 FF D0 00 FA EF ED 2A F2 00 3D 03 12 EF EE FE 05 DA 00 00 FE E9 00 03 1D 33 B1
W: 16 64 12 0E
X: 2
C: 16 66 00
W: 16 00 0A 11 00 00 19 F7 00 43 2D FA 9E 88 11 6D 00 00 01 C2 00 32 00 C8 10 68 00 32 FF CE 02 26 00 00 01 18 00 19
W: 16 64 C7 08
X: 2
C: 16 66 00
W: 16 00 0A 12 00 00 00 64 28 63 5F FF 62 00 32 09 73 04 2E 00 6E 14 01 04 00 00 4A 2C 5E 00 09 04 00 00 14 0A F0 0B
W: 16 64 2C 06
X: 2
C: 16 66 00
W: 16 00 0A 13 00 00 B8 00 0A 05 00 32 01 C2 14 14 00 08 09 F6 00 C8 00 4B 00 82 00 3C 3C 01 80 80 01 90 36 72 04 14
W: 16 64 67 07
X: 2
C: 16 66 00
W: 16 00 0A 14 00 00 FF FF FF FF 02 26 02 01 F4 02 58 02 02 26 00 00 00 A7 14 65 89 01 F4 00 00 64 01 B0 F6 FE 0C 03
W: 16 64 73 0B
X: 2
C: 16 66 00
W: 16 00 0A 15 00 00 84 5A 0D AC 01 FE 70 0B A6 07 62 71 32 37 35 32 30 00 00 00 96 00 AF 00 4B 00 64 32 0C 4E 02 0D
W: 16 64 3F 08
X: 2
C: 16 66 00
W: 16 00 0A 16 00 00 48 0C 1C 02 00 00 00 00 FE D5 FB 95 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W: 16 64 F5 03
X: 2
C: 16 66 00
W: 16 00 0A 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
W: 16 64 0E 13
X: 2
C: 16 66 00
W: 16 00 0A 18 00 00 FF 55 00 14 01 01 03 05 F8 03 FF 03 10 24 28 1E 2C 77 7F 00 00 00 00 00 00 00 00 00 00 00 00 00
W: 16 64 2D 05
X: 2
C: 16 66 00
W: 16 00 0A 19 00 00 FF 55 00 14 01 01 03 05 F8 03 FF 03 10 24 28 1E 2C 77 7F 00 00 00 00 00 00 00 00 00 00 00 00 00
W: 16 64 2E 05
X: 2
C: 16 66 00
W: 16 00 0A 1A 00 00 FF FF 00 14 01 01 03 05 F8 03 FF 03 10 24 28 1E 2C 77 7F 00 00 00 00 00 00 00 00 00 00 00 00 00
W: 16 64 D9 05
X: 2
C: 16 66 00
W: 16 00 0A 1B 00 00 FF FF 00 14 01 01 03 05 F8 03 FF 03 10 24 28 1E 2C 77 7F 00 00 00 00 00 00 00 00 00 00 00 00 00
W: 16 64 DA 05
X: 2
C: 16 66 00
W: 16 00 0A 1C 00 00 F3 00 00 17 F3 00 00 3A 36 FD 91 00 25 30 01 00 EF 05 11 05 01 00 00 10 01 00 3C 00 50 3C 00 64
W: 16 64 BF 06
X: 2
C: 16 66 00
W: 16 00 0A 1D 00 00 3C 00 20 01 00 03 E8 00 05 00 03 E8 00 00 00 FE D5 FB 95 00 02 02 BC 00 14 03 E8 10 62 10 68 01
W: 16 64 6C 08
X: 2
C: 16 66 00
W: 16 00 0A 1E 00 00 FF FF FF FF 00 00 00 51 FF FF FF AD FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
W: 16 64 0B 1C
X: 2
C: 16 66 00
W: 16 00 0A 1F 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
W: 16 64 09 20
X: 2
C: 16 66 00
W: 16 00 08
W: 16 64 08 00
X: 2
C: 16 66 00
C: 16 04 30 8D
W: 16 00 05
W: 16 64 05 00
X: 170
C: 16 66 00
C: 16 04 36 FC 4F 9F
W: 16 00 01 00 00 05 54 54 15
W: 16 64 C3 00
X: 20
C: 16 66 00
W: 16 00 05
W: 16 64 05 00
X: 170
C: 16 66 00
C: 16 04 8B 50 25 9F
;--------------------------------------------------------
;Execute Flash Code
;--------------------------------------------------------
W: 16 00 0F
W: 16 64 0F 00
X: 4000

When I run these steps manually through the Advanced Comm interface in BQstudio I am able to follow until I get to the first compare statement in ROM mode - which fails. Instead of the compare returning 0x00 it returns 0x02 from address 0x66. This is line 27 in the above DFFS file.

C: 16 66 00

I am able to recover the device to FW mode by writing the SREC file through the programmer and power cycling. 

  • Hello Johannes,

    Dashboard Autorefresh and scanning registers can cause interference. Turn off autorefresh and make sure registers are not scanning while using the Advanced Comm screen.

  • Hi Shirish,

    Thank you for your assistance with this issue. Disabling auto-refresh did indeed help and I got further along the way with this - however now I get stuck on line 40.

    C: 16 04 36 FC 4F 9F

    I've tried sending the commands both through the advanced command tab in BQstudio as well as through the firmware that I wrote and this compare always returns

    Cmp: 16 04 34 11 3F A7

    This DFFS file comes from the same chip that I am working on so there should be no versioning issues. The good news is that the chip remains recoverable even after this compare fails. I am able to write the SREC file to it and recover it to firmware mode.

    Do you have any idea what is going on?

    //Johannes

  • Hello Johannes,

    Are you able to program the DFFS file from bqStudio?

  • Hi Shirish,

    Please excuse the delayed response - I have a lot on my plate at the moment.

    I tried to program the DFFS file through the bqStudio programmer and it seems to have worked just fine.

  • Hello Johannes,

    That is good. Some of the commands have a timeout, usually 2 or 4 seconds. It is possible that this may have been exceeded when doing a manual step by step approach. Try repeating from line 36 again with lesser gaps between commands.

  • One more addition: Retry from line 36 only if you get a compare error. Otherwise start from the beginning of "Data Block"

  • Hi Shirish,

    I got out two new charger boards and tested running my code on them and it worked just fine. It looks like the device I was working on was simply bricked from my earlier work on it. It seems to report the battery percentage just fine but something in the background is not working as intended. Anyway - I will close this and mark your earlier answer regarding turning off Auto Refresh as the solution.

    Thank you again for your invaluable assistance Shirish!

    On a side note for posterity if anybody finds this thread:

    - Make sure your buffers for the i2c write are long enough to fit all the commands in the DFFS file. I noticed earlier on that my first compare failed because my original buffer simply could not fit the very long write commands.

    - Shut down bqStudio and restart it when you're done writing to the chip.

    //Johannes