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.

BQ79616-Q1: Unable to get response after programming OTP

Part Number: BQ79616-Q1
Other Parts Discussed in Thread: MSPM0L1304, , BQ79616

Tool/software: CCS Theia (IDE), MSPM0L1304 (host MCU)

I am trying to program the OTP on the BQ79616-Q1, following the instructions on page 82 of the BQ79616 datasheet. I am unable to get a response from the BQ79616 when trying to read OTP_PROG_STAT[DONE] after programming. This is the order in which I am doing things:

1. Write to OTP_PROG_UNLOCK1A-D in one write.

2. Write to OTP_PROG_UNLOCK2A-D in one write.

3. Read OTP_PROG_STAT[UNLOCK].

4. Write to OTP_PROG_CTRL[PAGESEL][PROG_GO] = 0x03 in order to select page 2.

5. Do the OTP programming by writing to the desired NVM registers.

6. Wait 100 ms.

7. Try to read OTP_PROG_STAT[DONE] to make sure that OTP programming is done -- this is where I am unable to get a response from the BQ79616.

Please let me know if additional information would help. I can share the code used if needed.

  • Hi Yun,

    Your OTP steps look good. Monitoring the LDOin voltage before and after your step4. If the voltage of LDOin change from 6V to 8V, it means OTP is programing.

    On the other hand,

    1, Please make sure the BQ79616 has not be OTP before. Each device only can be OTP two times, PAGE1 and PAGE2. You can try to use a new BQ79616 and do OTP again.

    2, Power supply should not be too low. Please make sure the power supply voltage higher than 12V.

    BR

    Alex Ji

  • I will try to check the other conditions, but I don't think the problem is that the OTP was already programmed before. Before following the steps outlined in my post, I first checked that OTP_CUST2_STAT[TRY] = 0. However, I re-ran my code and then saw that OTP_CUST2_STAT[LOADED], [PROGOK], [TRY], [OVOK], and [UVOK] bits are 1 and the other OTP_CUST2_STAT bits are 0, which suggests that the BQ79616 thinks page 2 was successfully programmed, even though it hasn't been.

  • I just checked the other conditions and it looks like none of the potential problems you described could be the cause.

  • Hi Yun,

    Below are commands what I tested by BQ79616 GUI. You may can try again by below commands after wake up and auto-address all device..

    =============

    #0x0004 OTP to 0xFF.

    ========

    C0 05 19 00 27 B5
    C0 05 1A 00 27 45
    C0 05 1B 00 26 D5


    D0 00 04 FF 7A 64
    #read 0x0004
    C0 00 04 00 3E E4

    D0 03 00 02 49 25
    D0 03 01 B7 89 02
    D0 03 02 78 C9 A6
    D0 03 03 BC C9 A5
    D0 03 52 7E 75 A4
    D0 03 53 12 74 19
    D0 03 54 08 F7 E2
    D0 03 55 6F B7 98

    #OTP_PROG_STAT
    C0 05 19 00 27 B5

    # PAGE1 OPEN. Prog go
    D0 03 0B 01 0E 14

    C0 05 19 00 27 B5
    C0 05 1A 00 27 45
    C0 05 1B 00 26 D5

    =============

    BR

    Alex Ji

  • It looks to me like you wrote to the NVM registers first (by writing to register 0x0004) before unlocking OTP. Is that the right way to do it? I wrote to the NVM registers only after setting PROG_GO.

  • Before or after unlocking OTP are all OK. But you should write the right value to the register before PROG_GO.