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.

BQ35100: Sub-command read from control() address always returns zero

Part Number: BQ35100

I'm writing a driver on an embedded host MCU to interface with the BQ35100 primary battery gauge over I2C.  I have already written one for the similar BQ27441 chip, so I have a working code base to start from.  I can read temperature, voltage, etc., successfully but sub-command reads from the control() register always return 0.  I know the same code works on BQ27441 and I've checked that what I am doing matches the sequence of figure 2 of http://www.ti.com/lit/an/slua467b/slua467b.pdf (which is what the BQ35100 data sheet points me at).  Here's an I2C trace of an attempt to read DEVICE_TYPE (0x0001) and you can see that, rather than returning 0x41, the chip returns zero:

What can I be doing wrong?  I've tried switching to the ManufacturerAccessControl register (0x3e) instead, but that doesn't seem to help.

  • Hi Rob,

    Have you  reviewed  this document?

    pls let me know if this helps, if it doesn't I will put you in touch with the device expert.

    thanks

    Onyx

  • Hi there.  Yes, I've seen that, it doesn't tell me much more than what I already know I'm afraid.  I appear to be doing what it and  suggest, but all I get back for control() sub-commands is zeroes.  Everything else works, just not the control() sub-commands (and these are not control() sub-commands that require unsealed operation, it is things like DEVICE_TYPE and FW_VERSION).

  • [bump] Any progress on this?
  • Rob,

    Is the section from our TRM for the bq35100 it focuses on using the ManufacturerAccessControl (0x3E) for reading and writing; going forward please use this command in your testing. I have tested this locally in full access and sealed modes, below are the results. Please let me know if you have any questions about my results or if you would like to discuss further.

    The first two bytes of 0x3E are the command so please read length expected return +2 . 

    My procedure/results for my version:

    Read device Type: Expected result 0100 

    Read FW Version: Expected result (Len 8) 0100 0102 000A (Device, FW Version, FW Build)

    Read HardwareVersion: Expected result A700 

    Results:

    TimeStamp , Read/Write , Address , Register , Length , Data ,
    2017-07-11 01:10:15 061 , Wr , AA , 3E , 2 , 01 00
    2017-07-11 01:10:15 544 , Rd , AA , 3E , 4 , 01 00 00 01
    2017-07-11 01:10:23 751 , Wr , AA , 3E , 2 , 02 00
    2017-07-11 01:10:24 297 , Rd , AA , 3E , 8 , 02 00 01 00 01 02 00 0A
    2017-07-11 01:10:32 064 , Wr , AA , 3E , 2 , 03 00
    2017-07-11 01:10:34 169 , Rd , AA , 3E , 4 , 03 00 A7 00