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.
Hi,
We are currently work to speed up production line by trying to flash BQ40z60 Golden File without BQStudio.
Reading some articles and reference it's possible to use bq.fs file format as it's a flashstream which contain any command required to flash the golden file to the chip.
My question:
Thanks,
Widji
Hello Widji,
You can find more information on other threads regarding the formatting for SMBus flash stream files: https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/922710/bq40z50-programming-in-mass-production/3419355?tisearch=e2e-sitesearch&keymatch=smbus%2520.fs#3419355
If the gauge was interrupted during programming and returned to FW mode or was power cycled during programming, there is no recover. The only way to recover is to remain in ROM mode when bad programming occurs and try to restart programming.
Sincerely,
Wyatt Keller
Hello Wyatt,
Yes I've read this articles, but seems like it's not contain enough information.
For example on SWB format. it's indicates the line is a command to write a SMBus block of one of more bytes of data. But you know, SMBUS has limited data length (32 bytes max) but in the bq.fs file, it's contain 34 bytes data.
this is for example:
SWB: 16 0F 00 40 56 2F 05 C2 28 BF 01 C2 33 3F 2D 90 4C 48 00 00 40 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF
Byte 0 = address
Byte 1 = register address
Byte 2 - 35 = bytes data? > 32 bytes?
Im really confuse here, do you have any idea?
Thanks,
Widji
Hello Widji,
As it is mentioned in the thread, the exact commands are not needed for programming in ROM mode and we cannot give out many details, but the 3rd and 4th bit are essentially the address, the main block of data should be 32 bytes or less.
I will check to confirm what we can share.
Sincerely,
Wyatt Keller
Hello Wyatt,
Thanks for the explanation.
But, from the article I've read, write block data is something like the following format, where the register address is represent in 2nd byte, and then continue with the data.
W: i2cAddr RegAddr Byte0 Byte1 Byte2…'
If I refer to my example, it should be:
SWB: 16 0F 00 40 56 2F xx xx xx ....
where:
I2C Address = 16
Register Address = 0F
Data = [00, 40, 56, .....]
Thanks,
Widji
Hello Widji,
I confirmed that the ROM commands don't necessarily follow the 32 byte limit. During programming in ROM mode more than 32 bytes can be written. This is not true when in normal operating mode (must be 32 bytes or less). ROM mode is only for programming.
Sincerely,
Wyatt Keller
Hi Wyatt,
Thanks for the confirmation. Since the python SMBus2 limit me to send more than 32 bytes data, I split the data apart, then send the block data twice every row in sequences, it's work for me so far.
Thanks,
Widji