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.

new bee for bq27510

Other Parts Discussed in Thread: BQ27510, BQ27500

hi,

i am just starting to use a bq27510.i am able to read values in the ic.ie if i read value in location 0x2c i get 0x64.i can also read the device name,s/w version etc.which means my i2c routines are fine.

i want to calibrate my ic only using my c langauge routines .

is it possible.

how do i do it.

what parameters must be considered at the time of calibration of the ic.

what is the command and data flow.

i have figured that to write data 4000 to location 0x12 of the ic i have to follow the following sequence .

0x00 to 0x61

57/58 to 0x3e

0x00 to 0x3f

4000 to 0x52

0xd7 to 0x60.

i get acknowledge at all the data transfers except the last transfer.please tell me what goes wrong

thanks in advance

 

  • Harshada,

    Our gauge has some internal calibration routines that you may want to take advantage of.  these automatically set the flash parameters to the proper values to account for various offsets.  Please see the following Application note for documentation: http://www.ti.com/litv/pdf/slua440.  This application note was originally written for the bq27500, but also applies to the bq27510 and contains instructions and a command flow of how to run the calibration.

    Also note that in addition to calibrating the part for electrical offsets, you will also have to learn the battery chemistry.  In this case, you will need to use our evaluation software to execute this task.  It is available from the product webpage: http://focus.ti.com/docs/prod/folders/print/bq27510-g1.html.  See the application note at: http://www.ti.com/litv/pdf/slua544 for instructions on how to generate a golden image

    The I2C sequence you have described above appears to be writing values to manufacturer information block (subclass 57) in the data flash.  This block is purely for  manufacturer use and is not ever accessed by the gauge.  I believe the issue above is that you attempt to write decimal 4000 to address 0x52 (offset 0x12 into manufacturer block info A).  Each write in this case is 1 byte long, which means that you can write a maximum unsigned value of decimal 255 to any given byte.  A larger number would have to be written across 2 bytes or more.   Since the hexadecimal representation of 4000 is 0xFA0, you are most likely only writing 0xA0 to address 0x52.

    As a result of this, the device NAK's to the last command because the checksum is incorrect.  You have written your checksum as 0xD7, which corresponds (complimented) to a sum of 40 or 0x28.  In reality you have most likely written 0xA0 which corresponds to a checksum value of 0x5F.

    Let me know if this helps,

    Charles