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.

BQ28Z610: How to read Remaining Capacity and setting battery on dataflash

Part Number: BQ28Z610
Other Parts Discussed in Thread: BQSTUDIO, EV2400

Hi all

I'm learning about the battery management on BQ28Z610. Someone has already drawn a schematic, layout and PCB BQ28Z610 for using. They just output I2C pinout for communication with MSP430.

The type of battery is different with default setting on data flash of BQ28Z610. 

I'm using 2p1s type and the battery is NCR16850B.

This is what Im doing now. 

- Write value 3250 to data flash on address 0x462a for Design Capicity mAh. 

- Write value 5200 (3250*3.2 / 2) on data flash on address 0x462c for Design Capacity cWh.

- Write value 3200 to data flash on address 0x462e for Design Voltage. 

- Write value 0x0440 to data flash on address 0x4600, Sub command  0x0020 and  0x0022 to enable ChargeFET and DischargeFET. The voltage measure on VBAT (pin 8 PACK) is 7.66V

After that, I read StateOfHealth() and return value is 62% , RemainingCapacity() is ZERO, DesignCapacity() is 3250 mAh, FullChargeCapacity() is 3818 mAh.

CycleCount() is ZERO. BatteryStatus() is ZERO, Voltage() is 7619mV.

My problem is :

1. I cant write ChemID to data flash. (the old is 12 10 - New is 20 17). So is there anyway to write the ChemID via I2C.

2. The return value from RemainingCapacity() is ZERO, I followed the Technical Ref page 30

"The bq28z610 device forces RemainingCapacity() to 0 mAh when the battery stack voltage reaches Term Voltage" 

The value current of Term Voltage is 6000mV on address 0x45be. So I dont think the battery stack voltage reaches Term Voltage.

3. The value currently of FullChargeCapacity() is larger than DesignCapacity(). I think its unavailable. 

4. I just want to calculate the percent of Remaining Capacity. So I need to get RemainingCapacity() value and then divide to FullChargeCapacity(). So is there any document I can read and follow the step to get the value. 

It will be easier if someone can show me the step to read the value and setting on data flash for the newer battery. I has already read a little about the datasheet, Technical Ref, User Manual and Learning Cycles but It seems to be hard to me. 

I have no Battery Fuel Gauge Evaluation and the main communication is via I2C.

  • Hi Thanhson,
    To get to a golden file you will require an EV2400 and bqStudio.
    It's not possible to change the chemID by writing an I2C command sequence. Writing a different chemID number does not change the actual battery profile loaded in the IC. You will need to access the I2C bus with an EV2400 and use bqStudio to program the chemID. Then you can extract the flash image using bqStudio and use that to program the IC.