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.

BQ27Z746: Trouble accessing data flash

Part Number: BQ27Z746
Other Parts Discussed in Thread: BQ28Z610

Tool/software:

I have a battery pack that contains a BQ27Z746.  I can read the normal parameters with a single byte address, but am having trouble reading the Data Flash Table. 

I am following the instructions in 16.2.67 Data Flash Access() 0x4000-0x5FFF on page 134 of the technical reference manual. 

I am specifically interested in the Max and Min Temperature fields at 0x420E and 0x420F. 

I first write 0x55 0x3E 0x0E 0x42.  Then I should be able to read 0x55 0x0E 0x42 Max Temp Min Temp. 

I do not get the address or Max / Min temperature on read.  Is there a flag somewhere that prevents me from reading Data Flash?

  • Hello Gene, 

    You should be just reading from 0x0060 Lifetime Data Block 1, then referring to the GG and HH bytes of the register. Please see the following image taken from the device TRM for the layout of the register. 

    Regards, 

    Robert. 

  • I have not had any success reading Lifetime Data Block 1.  Read attempts return all zeros except for an unreasonable number for Max Avg Discharge Current.

    1.  Is it possible that Lifetime Data is not enabled?

    2.  Could you tell me Exactly what data I should be sending on the I2C bus to read the Lifetime Data Block?  Perhaps I am misinterpreting the instructions given on page 134 of the Technical Reference Manual.

    Thanks for your help.

  • Hello Gene, 

    Yes, you have to enable lifetime data collection, please see the following image taken from the bq27z746 TRM. 

    To read Lifetime DataBlock 1 0x0060 you would just write 0x0060 to 0x3E, then you can read the data back from 0x40. 

    Regards, 

    Robert. 

  • Progress so far:

    I have two battery packs from two different battery vendors - both using the BQ27Z746 chip.  I can read Lifetime Data Block 1 at 0x0060.  Max/Min Voltages and Currents reported appear to be OK.  However, both battery packs report zeros for Max/Min temperature values.

    Registers 0x06 and 0x28 return valid temperature values.  How do I get lifetime Min / Max battery temperature?  Lifetime Data Block 1 does not appear to be updating.

    Thanks

  • Hello Gene, 

    You should be able to read the temperature lifetime parameters by reading 0x0060 Lifetime Data Block 1. 

    Regards, 

    Robert. 

  • Reading Lifetime Data Block 1 returns zeros in the memory locations for temperature.  Other fields OK.

  • Hello Gene, 

    This is strange as the defaults for the temperature are not 0. Is the other data you are reading making sense? 

    Regards,

    Robert. 

  • Thanks Robert

    Other data makes sense: - 0x0060:

            28 0f 00 00 5d 03 0b fe 1d 16 00 00 00 00 00 00

    I don't think I am enabling lifetime data correctly.  Cycle count does not update either.

    I just found out that our battery vendor switched to 28Z610.  The part is similar to 27Z746 so I don't think that is the problem.

    I hope you don't mind - I started a new ticket under "Ask a related question" with info on how I tried to enable lifetime data logging.

  • Hello Gene, 

    I think we can keep the conversation on this thread to avoid confusion if possible and delete the other thread. 

    I just found out that our battery vendor switched to 28Z610.

    When you say this, are you meaning that the gauge you are trying to communicate with is the bq28z610, not the bq27z746? 

    Regards, 

    Robert. 

  • Our battery pack manufacturer is sending us battery packs with Lifetime logging disabled.  We would like to enable lifetime logging and display max and min lifetime battery temperature.

    Battery packs use a T.I. BQ28Z610 as a battery gauge.  I can read and write to this chip over I2C.

    Battery as received from manufacture:

    AltManufacturingAccess() 0x0057 ManufactringStatus     = 0x0018

    AltManufacturingAccess() 0x0060 Lifetime Data Block 1 has the following hex data:

                   00 00 00 00 00 00 00 00 00 7f 00 00 00 00 00 00

    I enabled lifetime logging by writing 0x00 to AltManufacturingAccess() 0x0023 Lifetime Data Collection.

    I reset lifetime data by writing 0x00 to AltManufacturingAccess() 0x0028 Lifetime Data Reset.

    Battery now:

    AltManufacturingAccess() 0x0057 ManufactringStatus     = 0x0038

    AltManufacturingAccess() 0x0060 Lifetime Data Block 1 has the following hex data:

                   28 0f 00 00 5d 03 0b fe 1d 16 00 00 00 00 00 00

    As you can see the fields that should contain max and min temperature information are zero and they are not updating.  Also cycle count at 0x002A does not update.

    What else do I need to do to enable Lifetime Data logging?  Do I need to reset the BQ28Z610?

     

  • Hello Gene, 

    To enable Lifetime data logging on the BQ28Z610 gauge, you need to make sure ManufacturingStatus[LF_EN] = 1. 

    Regards, 

    Robert.