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: OTP Programming OTP Write Check Error

Part Number: BQ76952

Tool/software:

I am using BQ76952 on a custom board with SPI and 3.3V LDO enabled by default. I have used an MCU (3.3V powered by external source) to configure the registers in RAM. I have never programed the OTP and need to do it now.

I have supplied 11V to BAT pin. I have configured required registers entering CONFIG_UPDATE and then exiting.

I enter the config mode again for OTP programming and read Battery Status (0x12). Battery Status returns 2309 (DEC) = 0b 0000 1001 0000 0101.

This implies that IC is in

1.) Config Update Mode

2.) Full Access Mode

3.) OTPB register is clear

4.) a Safety Fault has triggered. (I have not connected any cell input)

Next, when I send sub-command 0x00A0 (OTP_WR_CHECK), I get 0xFF. 

Why am I getting this error? Am I missing something? Kindly assist.

  • Hi,

    Today (Nov. 29) is a U.S. holiday. The team will be back in office on Monday, and will get back to you then.

    Thank you for your patience.

    Regards,

    Max Verboncoeur

  • Hello Mrinal,

    Thank you for your patience. 

    It looks like you are following the correct steps to write OTP as shown in Section 3.1 Recommended Steps for Writing OTP in Production from the BQ769x2 Calibration and OTP Programming Guide.

    Usually, a returning 0xFF after using a subcommand means the subcommand has not completed operation and you need to add at least a 2 ms wait time after writing to it. However, in your case, specifically with OTP, you also have a safety fault triggered. Do you mind checking which fault is triggered?

    This thread: BQ76952: AFE Responds to OTP_WR_CHECK() with 0xFF might be worth following to see if you are encountering the same issues.

    If you are also using a SUV Permanent Fail in your system along with a fuse, this Previous Forum Link will be very useful to follow.

    Best Regards,
    Alexis

  • I am getting UV and OV faults. (Safety Status A 0x03 = 0x0C) These are expected as I have not connected any cell to the IC input and all cell input pins are floating. The reading varies 105 to 600mV and one of the cells shows readings in the range of 65510. The cell index of 65510 is not fixed and sometimes changes when I power the IC.
    I have tried changing the wait time, but to no avail.

    From the links shared, I have come to an understanding that OTP will not be programmed if a fault exists.

    To overcome this, I need to enter CONFIG_UPDATE_MODE, set required values, send OTP write command, then disable fault protection before exiting the CONFIG_UPDATE_MODE, which disables the protection in RAM only. On exiting CONFIG_UPDATE_MODE, I assume that OTP is actually programmed based on the values set before sending OTP write command. When the IC restarts, the reloads the values from OTP in which protection was enabled.

    Is this correct?

    PS: I am using Read sub-command routine to read data from 0x00A0.

  • The issue was with the delay before reading buffer for 0x00A0 command.

    Earlier, I had tried with delay up to 5ms.  Setting it to 6ms of higher worked.

    To conclude, UV and OV faults were ignored in OTP programming. Disabling protection is probably for Permanent Failure.