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.

Problems writing to Data Flash on bq20z45

Hello,

I am currently trying to communicate with a bq20z45 IC (through a bq20z45 EVM) via an Arduino, and I've been struggling to get data flash values updated.

The first thing that I made sure is that the condition for ((Voltage >= Flash Update OK Voltage) or (PackVoltage >= Charger Present)) was met (My reading of PackVoltage was over the default of 3V), and I made sure that the PF flag in the SafetyStatus register (0x51) wasn't pulled HIGH. To be on the safe side, I also wrote the PFKey value to the ManufacturerAccess register (0x00), and checked both PFStatus registers (0x53, 0x6B). Both of these registers returned a value of 0. I made sure that I was in full access mode as well; The FAS and SS flags in OperationStatus (0x54) were both reading 0.

Secondly, with a logic analyzer, I made sure that the block write was up to the SMBus V1.1 protocol standards. I've tested the block write with some SBS commands (DeviceChemistry (0x22) for example), and I had no problem modifying the values of those registers. Attempting to write to the data flash following the example in the technical reference (section C.1.4) did not give me any results though. When I checked the logic analyzer, I was getting full acknowledges back from the bq20z45 after every byte sent to it, but when I read the same flash subpage, none of the values were updated to what was sent.

I've looked all over the documentation for the bq20z45, but according to the technical reference, I should already have all of the conditions met and full access rights to enable writing to the data flash. Is there something vital I am forgetting? Would you also happen to have any low level programming examples of writing to the data flash through SMBus V1.1?

My email is sean.iftody@umsats.ca if needed. I appreciate the help.

Thanks,

Sean I

  • Also just to note, I am able to block read from the data flash with no issues at all. My only roadblock is writing to the flash.

    Thanks,

    Sean I

  • When you say none of the values were updated to what was sent did you allow for possible little endian byte ordering ?

    Have you tried replicating the tests using a PC, EV2300  and the EVSW to communicate with EVM so we can isolate whether the problem is the part not responsing as exepected or use of the Arduino to talk to EVM?