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 fails but reported as successful when diode is missing

Part Number: BQ76952

Tool/software:

Hello,

we have a product that needs OTP programming, and I created a software for a programming tool according to the sequence at 3.1 in SLUAA32A.

We noticed that when there is an hardware problem, where the diode equivalent of the D1 in your dev board BQ76952EVM (that feeds power to BAT and CP1 pins) is not soldered properly, at the end of the OTP sequence the BM reports a successful OTP but if I power cycle the device, it is still blank. This refers to the step "...Read from 0x40 to check if OTP programming was successful (0x80 indicates success)."

Is there a way to read directly the OTP memory, instead of just reading the RAM? I can not reset the IC to verify the OTP sequence because I have enabled the permanent failure, so at the next reset, with a voltage < 12V, it would flash a permanent fail for cell undervoltage. 

Thanks

  • Hi Marco,

    There isn't a direct way to read OTP.  If this is always occurring with the pattern that all OTP isn't written, I am thinking you might be able to work out a test using the OTP_WR_CHECK function.  Maybe there would be a way to have the check return one value if OTP was written, another if OTP was not written.

    I'm brainstorming a bit, haven't thought through this thoroughly.  The device includes two images of OTP for each setting, so you can program once to change a setting, then can program the same bit a second time to change it back.  After one setting has been programmed twice, it can no longer be programmed again.

    So, what if first you select a DataMemory bit that is a don't-care for your usage, so that it doesn't matter if that bit is a 1 or 0.  Assume default = 0.  Call this the test bit.

    When you start with a blank part, you first program OTP to change the test bit to a 1, but do not make any other changes.

    Now reset the device and read the test bit, to confirm the OTP programming was successful.

    Next, load the RAM with your desired full settings, also changing the test bit back to 0.  Program OTP.

    Now change the test bit to 1, and run OTP_WR_CHECK.  If the second OTP programming was successful (so the test bit = 0), then programming the test bit to 0 used the second programming step for that bit, thus it cannot be programmed back to 1.  So the OTP_WR_CHECK should show that the image cannot be programmed.

    If the second OTP programming was unsuccessful (so the test bit = 1), then the OTP_WR_CHECK will see that bit does not need to change state, and so will indicate the image can be programmed.

    I know this is quite involved, you can try it if you'd like and see if it can work for you.

    Thanks,

    Terry

  • Thank you Terry, 

    It doesn't seem too difficult: I could just program part of my configuration (e.g. my current sensing gain) and reset, to see if that has been retained.

    This way I will just use two of the 8 OTP signatures available, instead of setting a bit to one and then to zero, effectively locking it forever.

    Regards,

    Marco

  • Hi Marco,

    You can do that, but then when you program the second part of the configuration, is there a risk that one doesn't work properly?  Or maybe the issue you are seeing affects all attempts to program, in which case your idea would be fine.

    Thanks,

    Terry

  • Hi Terry,

    correct, it does affect all attempts.

    I suspect the lack of that diode removes power for the flash operation, so nothing was getting flashed.

    Regards,

    Marco

  • Hi Marco,

    Ok, so that seems fine.  However, I'm surprised that the diode affects the programming, but doesn't affect normal operation, since you are still able to communicate with the device after the failed programming.  Maybe the diode effectively has more series resistance here, and during programming the voltage at the BAT pin drop too low for it to complete successfully.  But the part can still operate with BAT down to 4.7V normally (not programming), so it may still work then.

    Thanks,

    Terry