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.

BQ76952: Safety Shutoff only triggering once

Part Number: BQ76952

Hello TI Team,

We are designing a BMS system with the BQ76952 and a host microcontroller. The BQ76952 is configured to watch over temperature, voltages and currents, and if it switches off, my microcontoller will notice that via the SafetyStatus registers and take over. It will keep the FETS off with the ALL_FETS_OFF command and reenable them later with the ALL_FETS_ON command. It will also confim the alarms via writing to the alarm status register.

Our testing has now shown that the safety shutoffs from the bms chip somehow only work once after powerup. If we renable the FETs and apply a safety condition again, i can see the change in the alarm status register, but no reaction in the saftey status registers. And it does not switch off.

Did we miss a step somehow ? Do we somehow need to rearm the safety protections ?

Any ideas on what i could check to find out more ?

kind regards,

Dominik

  • Hello TI Team,

    short update: This issue seems to only happen with the current based safety shutoffs. If i simulate a low voltage on a cell, i can reenable and trigger the condition again without issue.

    But for all current based safety shutoffs, i only get one shutoff event after powerup. If i then reenable  the FETs i only get the alarm signals on the general alarm register and in the safetyAlert registers. But no shutoffs or any bits in the safetyStatus registers.

  • Hi Dominik,

    Can you give a step-by-step of this behavior or a log file if possible? It would also be good to see your register settings. The behavior you describe is not the expected behavior.

    Thanks,

    Matt

  • Hello Matt,

    I made a dump of the current setting i use in this test. See the following link. First value is the address and the second value is the value as hex ( apart from floats, which are printed as float). All missing settings are left as default.

    https://pastebin.com/nJ83i3UF

    I just noticed that this issue is somehow related to the CONFIG_UPDATE mode. If have the board in a situation where the bms does not switch off anymore, if i then enter and exit CONFIG_UPDATE mode, it will work again. So it is not that it works once after power on, it works once after exiting CONFIG_UPDATE mode.

    So now i will try to track/log all writes to the BMS chip, to find out which command/memory write causes this issue.

  • Hi Dominik,

    I cannot access the shared drive link you sent (we are blocked from shared drives from our network). 

    Is it possible that you have accidentally entered CONFIG_UPDATE mode but did not exit? That might explain the behavior you are seeing. The protections are not active while you are in CONFIG_UPDATE mode. This mode should only be used to load the register settings initially after the device powers up.

    Regards,

    Matt

  • Hello Matt,

    No, i can not be in CONFIG_UPDATE mode, as in this mode the FETs are switched off and in my scd and overcurrent tests the fets are back on. I normaly only enter CONFIG_UPDATE mode on the first boot (power-on) or when my code detects that the bms chip has restarted and we want to reload the config. As this switches off the FETs I definitly cant use it in normal use.

    But i think i somehow issue a command which needs the CONFIG_UPDATE exit to get it working again. I am still tracking all the commands and read/writes and eliminating most of them to find out more on when this issue exactly starts. 

    In my last test the issue started to occur after my code detected a bit in the PF Status B (SCDL was set) and then my code issues a PF_RESET command. And I just noticed that in the newer TechnicalReferences this command was removed, whith the comment it is not recommend ? So maybe this is the issue ?

    Also i am not sure on why i got the SCDL bit, because i think it should be disabled in my current settings. But i will do further tests and keep you updated.

    As you can not open the link, i attached the long list of paramters here.

    0x91A8 - 74.76
    0x91AC - 22300424.00
    0x9234 - 0x924
    0x9236 - 0xCD
    0x9237 - 0x1
    0x9238 - 0x0
    0x9239 - 0x0
    0x923A - 0x0
    0x923C - 0x60
    0x923D - 0xA
    0x92FA - 0x0
    0x92FB - 0x0
    0x92FC - 0x2E
    0x92FD - 0x57
    0x92FE - 0x5F
    0x92FF - 0x0
    0x9300 - 0x0
    0x9301 - 0x0
    0x9302 - 0x0
    0x9303 - 0x7
    0x9304 - 0x8203
    0x9307 - 0x50
    0x925F - 0x1
    0x9261 - 0xBC
    0x9262 - 0xF8
    0x9263 - 0x0
    0x9265 - 0x98
    0x9266 - 0xD0
    0x9267 - 0x0
    0x9269 - 0xE4
    0x926A - 0xE0
    0x926B - 0x0
    0x9273 - 0xC8
    0x926D - 0xF800
    0x926F - 0xFC
    0x9270 - 0xF0
    0x9271 - 0xF0
    0x92C0 - 0xDF
    0x92C1 - 0x9B
    0x92C2 - 0xFF
    0x92C3 - 0x1
    0x92C4 - 0xDF
    0x92C5 - 0x9B
    0x92C6 - 0x78
    0x92C7 - 0x1
    0x9308 - 0xF
    0x9309 - 0x1
    0x930A - 0x79E
    0x930C - 0x7D0
    0x930E - 0x64
    0x930F - 0x64
    0x9310 - 0xA
    0x9312 - 0x5
    0x9314 - 0x5
    0x9343 - 0x50
    0x9335 - 0x17
    0x9336 - 0xFFFFFFEC
    0x9337 - 0x3C
    0x9338 - 0x46
    0x9339 - 0x14
    0x933A - 0x1
    0x933B - 0xD48
    0x933D - 0xA
    0x933E - 0x5
    0x933F - 0xD48
    0x9341 - 0xA
    0x9342 - 0x5
    0x923F - 0x0
    0x9241 - 0x258
    0x9243 - 0xA
    0x9244 - 0x0
    0x9245 - 0xA
    0x9252 - 0x0
    0x9253 - 0x0
    0x9254 - 0x0
    0x9255 - 0x5
    0x9248 - 0x3E8
    0x924A - 0x5
    0x924B - 0x3E8
    0x924D - 0xA
    0x924E - 0x4B0
    0x9250 - 0xC8
    0x9275 - 0x3B
    0x9276 - 0x97
    0x927B - 0x2
    0x9278 - 0x4F
    0x9279 - 0x4A
    0x927C - 0x2
    0x927D - 0x0
    0x927E - 0xA
    0x927F - 0xF
    0x9280 - 0x19
    0x9281 - 0x1
    0x9288 - 0xFFFFFF38
    0x92B0 - 0xC8
    0x9282 - 0x64
    0x9283 - 0x1
    0x9284 - 0xA
    0x9285 - 0x1
    0x9286 - 0x1
    0x9287 - 0x2
    0x9294 - 0x3
    0x928A - 0x7D0
    0x928C - 0x0
    0x928D - 0xFFFFFC18
    0x928F - 0x0
    0x9290 - 0xA
    0x9291 - 0xF
    0x9292 - 0x14
    0x9295 - 0x0
    0x9296 - 0xA
    0x9297 - 0xF
    0x9298 - 0x14
    0x929A - 0x5A
    0x929B - 0x2
    0x929C - 0x50
    0x929D - 0x5A
    0x929E - 0x2
    0x929F - 0x50
    0x92A0 - 0x64
    0x92A1 - 0x2
    0x92A2 - 0x5A
    0x92A3 - 0x5A
    0x92A4 - 0x2
    0x92A5 - 0x50
    0x92A6 - 0x0
    0x92A7 - 0x2
    0x92A8 - 0x5
    0x92A9 - 0x0
    0x92AA - 0x2
    0x92AB - 0x5
    0x92AC - 0xFFFFFFEC
    0x92AD - 0x2
    0x92AE - 0xFFFFFFF1
    0x92AF - 0x2
    0x92B2 - 0x3C
    0x92B4 - 0x0
    0x92B5 - 0x32
    0x92B6 - 0x1
    0x92BA - 0xFA
    0x92BC - 0x708
    0x92BE - 0x2
    0x92C8 - 0x5DC
    0x92CA - 0x5
    0x92CB - 0x898
    0x92CD - 0x5
    0x92CE - 0xFA0
    0x92D0 - 0x5
    0x92D1 - 0x1F4
    0x92D3 - 0x5
    0x92D4 - 0x4E20
    0x92D6 - 0x5
    0x92D7 - 0xFFFF8300
    0x92D9 - 0x5
    0x92DA - 0x41
    0x92DB - 0x5
    0x92DC - 0x55
    0x92DD - 0x5
    0x92DE - 0xC80
    0x92E0 - 0xA
    0x92E2 - 0x1F4
    0x92E4 - 0x5
    0x92E5 - 0x64
    0x92E7 - 0xDAC
    0x92E9 - 0x32
    0x92EB - 0xC8
    0x92ED - 0x5
    0x92EE - 0x3E8
    0x92F0 - 0x5
    0x92F1 - 0xFFFFFC18
    0x92F3 - 0x5
    0x92F4 - 0x64
    0x92F6 - 0x5
    0x92F7 - 0x5
    0x92F8 - 0x5
  • Hi Dominik,

    I think the use of PF_RESET() explains the issue. There was a bug discovered with this command so it was removed from the documentation and should not be used. See this older thread where we first became aware of this issue: https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1065083/bq76952-safety-satus-a-bit-not-set-after-sending-pf_reset-0x0029-command

    Best regards,

    Matt

  • Hi Matt,

    yes, that exactly describes my issue. After PF_RESET the safety shutoff do not work correctly anymore. 

    So i will remove this from my code and think about how i can handle the Permanent faults differently or if i just have to disable them all. (In our application all fault have to be able to be cleared on external commands)

    Thanks for the help.