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.

BQ76952EVM: Cannot program OTP with Stack Voltage SHUTDOWN >12v

Part Number: BQ76952EVM
Other Parts Discussed in Thread: BQ76952, BQSTUDIO

I have a 30v stack of Li batteries. I can load all registers into the BQ76952. I can continue communicating with the part by sending the SET_CFGUPDATE command before lowering the "battery" voltage down to 12 for programming the OTP memory.

The problem is that the chip remembers the 30v Stack voltage from before the SET_CFGUPDATE command was sent and won't program the OTP because the voltage is too high. I verified this by sending a 0x34 (get Stack Voltage) command while the voltage was 12v. The reply was that the Stack Voltage was still 30v.

The primary reason to use this chip is to shut down the battery pack if the voltage drops below 20v per the battery manufacturer's recommendation.

How can this chip's OTP be programmed?

Deepcore Battery Settings-11.gg.csv

  • Hello Steven,

    Typically this part would be OTP'd before cell attachment, due to the ~11-V supply requirement for OTP to be valid. So typically before anything is configured, the stack should already be ~11-V

    Now, in case this is not possible, is it possible for you to briefly change the voltage shutdown from 20-V to a lower value just before the OTP sequence, and then change it during the OTP sequence?

    So something like this sequence:

    1. Stack voltage of 30-V
    2. SET_CFGUPDATE
    3. Change voltage SHUTDOWN from 20-V to 6-V
    4. EXIT_CFGUPDATE
    5. Lower stack voltage to 12-V
    6. Let the part measure the stack voltage to update
    7. SET_CFGUPDATE
    8. Configure registers (Including changing SHUTDOWN voltage from 6-V back to 20-V)
    9. OTP Programming sequence
    10. EXIT_CFGUPDATE

    Best Regards,

    Luis Hernandez Salomon

  • It still says "Unable to communicate with the device" when checking if OTP is possible in step 9.

  • I even had Auto Update turned off.

  • Hello Steven,

    What did you do differently? Could you list your steps & voltages you measured and reported by the IC? Did the part SHUTDOWN (You can measure REG18 to see this)?

    Also, not sure if it would be useful, but have you read our Common questions for OTP programming with the Bq769x2 Device Family FAQ or the OTP programming guide?

    Best Regards,

    Luis Hernandez Salomon

  • I followed your steps exactly. I copied them to a temp file so that I could follow them.

    After step 6 (Let the part measure the stack voltage to update) the stack voltage showed 1196.

    I completed steps 7&8.

    Step 9 failed as mentioned above.

  • Hello Steven,

    Anything after Step 6 is essentially just normal OTP programming. I just wanted to give a rough idea.

    In a default device the part shouldn't even have a stack shutdown voltage of 20-V, unless the device is already OTP'd or you are programming the device after start-up, so I am a bit confused as to how it could be shutting down before the OTP sequence.

    So, in which step from Section 3.1 Recommended Steps for Writing OTP in Production of the OTP programming guide did you fail?

    Best Regards,

    Luis Hernandez Salomon

  • Section 3.1 Recommended Steps for Writing OTP in Production

    8. Check the Battery Status[OTPB] bit is clear to verify OTP programming conditions are met.

    This bit is always set I have never seen it cleared.

    Note that the OTP on the chip on my eval board has never been written before.

  • Hello Steven,

    Battery Status[OTPB] bit being set means that the conditions for OTP are not being met. OTP is blocked until this bit is cleared.

    10-12 Volts must be applied to the BAT pin and the highest VCx pin (See the FAQ post I shared above), temperature of the system should be near room temperature.

    Are you applying 10-12V to the highest VC pin during this process?

    Best Regards,

    Luis Hernandez Salomon

  • Just for grins, I left the shutdown at 6v, did a register Refresh, and checked the Battery Status[OTPB] bit after entering SET_CFGUPDATE.

    The bit was clear!

    I changed the shutdown voltage back to 20v, did a register refresh and lost communication.

  • Steven,

    Thanks for the clarification there! 

    Normally if you are in CONFIG_UPDATE mode, no protections should be triggered until you exit this mode.

    By any chance are you using bqStudio to do this procedure? When using bqStudio to change a register, it automatically enters and exits CONFIG_UPDATE mode, so even if you entered CONFIG_UPDATE with the SET_CFGUPDATE() command, the part will exit CONFIG_UPDATE mode and conditions can take effect.

    Best Regards,

    Luis Hernandez Salomon

  • Yes, I am using bqStudio.

    So I have to build my own hardware and write my own program?

  • Hello Steven,

    You can program the registers manually through the Command Sequence window in bqStudio. So for a single device you could do it all on bqStudio, but for a production solution, you should have your own hardware and program to do the OTP procedure.

    Best Regards,

    Luis Hernandez Salomon

  • My production is 5 units.

    I can do everything in bqStudio except change the shutdown voltage. I looked through the TechRef manual and don't see a command that lets me do this.

    Do you know what the command is?

  • Hello Steven,

    For some reason I cannot see your comment here. But I saw my e-mail notification about it, so will reply:

    "I can do everything in bqStudio except change the shutdown voltage. I looked through the TechRef manual and don't see a command that lets me do this.

    Do you know what the command is?"

    It is not a command, I said the Command Sequence. You would have to manually write to the RAM register and perform the OTP steps manually with each individual step sent through the Command Sequence. For guidance in how to write to registers, read the BQ769x2 Software Development Guide, which shows examples.

    Once you have a sequence, you can export it as a .fs file and load it to run again at any time:

    Best Regards,

    Luis Hernandez Salomon

  • These steps worked:

    1. Turn on power supply to 30v
    2. Start bqStudio program
    3. Load configuration file
    4. Modify Stack Shutdown Voltage (SSV) to 6000 (6v)
    5. Write_All
    6. Turn off Auto Refresh
    7. Reduce power supply to 12.05v
    8. SET_CFGUPDATE
    9. Refresh (Battery Status [OTPB] should be clear)
    10. W 10 3E 41 92 BC 07 (SSV=19.8v)
    11. W 10 60 69 06 (checksum & data length)
    12. R 10 40 (2 bytes) (should be BC 07)
    13. W 10 3E A0 00 address of OTP_WR_CHK
    14. R 10 40 (2 bytes) (should be 0x80)
    15. W 10 3E A1 00 (Write OTP)
    16. Communication probably lost due to Shutdown
    17. Raise power supply to 30v
    18. Short 30v to BAT+ to restart chip from shutdown
    19. Turn on Auto Refresh (restart bqStudio first if it timed out)
    20. Read_All (verify correct data)
    21. Power off chip and wait several seconds
    22. Power on chip
    23. Read_All (verify correct data)