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.

BQ27441-G1: Issuing the reset command (0x41) does not appear to re-initialize the RAM value from ROM.

Part Number: BQ27441-G1
Other Parts Discussed in Thread: BQSTUDIO

We are trying to reset the device when it gets into an unknown state.  But issuing a reset does not appear to be resetting the RAM values with the defaults from ROM.  The values I'm referencing to know whether the reset has occured are the R_a pack resistances, Full_charge_capacity and other values that would be reset and not updated by our project like Design Capacity, Design Energy, Taper Rate, and Terminate Voltage.

Here are the commands and order of how we are doing it.

  • Send Reset Command (0x41)

  • Unseal

  • Read DM block 82

  • Update Design Capacity, Design Energy, Taper Rate, and Terminate Voltage

  • Enter config update

  • Write DM block (including updating checksum)

  • Send Soft Reset (0x42)

  • Verify cfgup and por are cleared.

Any insight as to why the values are not being reset would be helpful

  • The gauge will take a while from a RESET command to being ready for gauging or processing commands.

    After you issue the RESET command, check that ITPOR = 1 and then poll CONTROL_STATUS[INITCOMP] before proceeding.

    Any time ITPOR = 1, you will have to re-configure the gauge. ITPOR = 1 means that the gauge has loaded default values from ROM. There is no need to check the values before configuring them.

  • The way the driver does it is just a timeout.  We have changed this to poll the INITCOMP bit.  This still does not appear to have reset the values in the RAM.

    [ 64.217482] bq27xxx-battery 0-0055: BQ27XXX_RESET sent with 300ms wait after
    [ 64.245892] bq27xxx-battery 0-0055: ITPOR set, retries 0
    [ 64.267047] bq27xxx-battery 0-0055: INITCOMP set, retries 0
    [ 64.299830] bq27xxx-battery 0-0055: Device Unsealed
    [ 64.335471] bq27xxx-battery 0-0055: Read block
    [ 64.339972] bq27xxx-battery 0-0055: Write block
    [ 64.355484] bq27xxx-battery 0-0055: BQ27XXX_SOFT_RESET sent
    [ 64.386128] bq27xxx-battery 0-0055: cfgupdate cleared, retries 0

    As an example, the resistance before then after did not change. R_a 0-14
    BEFORE - 102,102,101,115,91,89,108,126,122,125,168,196,396,1037, 1037
       AFTER - 102,102,101,115,91,89,108,126,122,125,168,196,396,1037, 1037

  • When ITPOR = 1 (after it was 0), then the gauge will have default values because ITPOR will only change from 0 to 1 after a reset and a reset means that the gauge loads the default values.  Please check that your "before" and "after" data is indeed read from the gauge (and not buffered somewhere in your driver).

  • There is no caching they are read from the device and printed.

    The ITPOR is definitely 0 before a reset command is sent. FLAGS() = 648, 0b0000001010001000

    When we start our reset process, we explicitly look for ITPOR to be 1, then wait for INITCOMP to be 1 before updating values to the design requirements, then sending the soft reset 0x42 command to exit from update config mode. and verifying that ITPOR returned to 0.

  • I can't say what happens in your system but the gauge will for sure revert to default values if ITPOR changes from 0 to 1.

    Please try this in bqStudio and the TI EVM to make sure it's not a problem with your driver.

  • Based on a tooltip in the bq studio of reset is not available unless device is unsealed, I believe we have solved our issued we added a step to unseal the device before sending the reset and this appears to work as expected now.  I'l do some more testing a report back any other questions/issues or resolve this post if no issues arise.

  • Thanks for the feedback!