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.

BQ25892EVM-664: i2c register mapping

Part Number: BQ25892EVM-664
Other Parts Discussed in Thread: BQ25892, BQ25890, BQSTUDIO

Hello,

I have a bq25892 eval board and have setup a microcontroller to communicate with it. I can read and write to a particular register fine.

However, the values I get back don't seem to make sense to me according to the data sheet. Is there a register offset or something I'm missing?

For example reading register 0x14 returns 0xCA so bits 5,4,3 are 001 which is undefined according page 54 of the datasheet not 011:BQ25890 or 000:BQ25892.

And bits 1,0 are 10 which is also undefined as the Device Revision: 01.

Any suggestions as to where I might be going wrong?

  • Hey Ben,

    Can you post all of your read values?

    Regards,
    Joel H
  • Reg 00 Data 0xB5 10110101
    Reg 01 Data 0x5B 01011011
    Reg 02 Data 0x90 10010000
    Reg 03 Data 0xFC 11111100
    Reg 04 Data 0x01 00000001
    Reg 05 Data 0x50 01010000
    Reg 06 Data 0x32 00110010
    Reg 07 Data 0xC0 11000000
    Reg 08 Data 0xFF 11111111
    Reg 09 Data 0xC0 11000000
    Reg 0A Data 0xBD 10111101
    Reg 0B Data 0x8F 10001111
    Reg 0C Data 0x48 01001000
    Reg 0D Data 0xC5 11000101
    Reg 0E Data 0x00 00000000
    Reg 0F Data 0xD4 11010100
    Reg 10 Data 0x1C 00011100
    Reg 11 Data 0x1B 00011011
    Reg 12 Data 0x19 00011001
    Reg 13 Data 0xEA 01110101
    Reg 14 Data 0xCA 11001010
    Readings past the last register
    Reg 15 Data 0xFE 11111110
    Reg 16 Data 0x01 00000001
    Reg 17 Data 0x4A 01001010
    And so on

    Reg 21-25 are all 0x00

    Reg 26-27 0xFF

    Reg 30 and above are all 0x00

  • Hey Ben,

    Have you attempted to communicate with the EVM using bqStudio to see if you get similar results?
    In bqStudio, you can use the "Advanced Comm" tab to try single reads and multi-reads using bqStudio's pre-built I2C protocol for the device.

    What is strange is that you are reading more registers than what is allowed for the device. (i.e. Reg15-17).

    Do you have external pull-ups on your microcontroller board in addition to the ones that are on the EVM? And if you are only using the EVM's pullups, is JP4 jumper connected to a valid source (VSYS if you have no battery connected).

    I suggest you apply single write to REG14[7] = 1 to reset all the registers, and then attempt to single read each register without writing values.

    Please make sure that you are following the I2C protocol described in section 9.2.16 of the bq25892 datasheet. That section also describes implementation of either single reads or multi-reads. Not sure which you are performed, if not both.



    Regards,
    Joel H
  • I do not have the EV2300 module so I haven't used the bqStudio software.
    I am using pull-ups on my microcontroller board for the i2c bus - so I don't have the pull-up jumper set.

    I tried writing to REG_RST but it made no difference - however if you look at the data read from REG14 the REG_RST bit is already set.

    I have only been performing single byte reads (and writes) for now. I'm confident I'm following the protocol correctly but I can send you a capture from my logic analyser if that would help.

    Regards,

    Ben

  • Hey Ben,

    REG_RST should not be 1 after it is set. It resets to 0 after a read. 

    And yes, the captures from your logic analyzer would very helpful.

    Regards,

    Joel H

  • Hey Ben,

    What I2C address are you using to communicate to the charger?


    Regards,
    Joel H
  • Attached, this is sent after a 1 second delay from cold start.

  • Hey Ben, 

    Can you verify a few things for me:

    1) Do you have any other devices on your SDA/SCL lines?

    2) What frequency are you running your I2C? 400kHz or 100kHz? Could you run it at the slower frequency?

    3) Zoom into the rising edges for both SDA and SCL to make sure they fall within the I2C timing protocol.

    4) Could you add the pull-up jumper to our board in place of the pull-ups on your micro?

    Regards,

    Joel H