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:对 OTP 进行编程后无法获取响应

Guru**** 2496595 points
Other Parts Discussed in Thread: MSPM0L1304, BQ79616

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1471739/bq79616-q1-unable-to-get-response-after-programming-otp

器件型号:BQ79616-Q1
主题中讨论的其他器件:MSPM0L1304、、 BQ79616

工具/软件: CCS Theia (IDE)、MSPM0L1304 (主机 MCU)

我将尝试 按照 BQ79616  数据表第82页的说明在 BQ79616-Q1上对 OTP 进行编程。 我  在编程后尝试读取 OTP_PROG_STAT[DONE]时无法从 BQ79616获得响应。 这是我做事情的顺序:

1. 对 OTP_PROG_UNLOCK1A-D 进行一次写入。

2.对  OTP_PROG_UNLOCK2A-D 进行一次写入。

3.读取 OTP_PROG_STAT[UNLOCK]。

4.写入 OTP_PROG_CTRL[PAGESEL][PROG_GO]= 0x03以选择第2页。

5.通过写入所需的 NVM 寄存器来执行 OTP 编程。

6.等待100毫秒。

7.尝试读取 OTP_PROG_STAT[DONE]以确保 OTP 编程已完成--这是我无法从 BQ79616获得响应的地方。

如果其他信息可以提供帮助、请告诉我。 如果需要、我可以共享使用的代码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Yun:

    您的 OTP 阶跃看起来正常。 监控步骤4前后的 LDOin 电压。 如果 LDOin 的电压从6V 变为8V、则意味着 OTP 正在编程。

    另一方面、

    1、请确保 BQ79616之前没有是 OTP。 每个器件只能是两次 OTP、即 Page1和 Page2。 您可以尝试使用新的 BQ79616并再次执行 OTP。

    2、电源不应太低。 请确保电源电压高于12V。

    BR

    Alex Ji

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将尝试检查其他条件、但我认为 问题不在于 OTP 之前已经过编程。 在执行我的帖子中概述的步骤之前、我首先检查了 OTP_CUST2_STAT[TRY]= 0。 不过、我重新运行了我的代码、然后看到 OTP_CUST2_STAT[LOADED]、[PROGOK]、[TRY]、[OVOK]和[UVOK]位 为1、而其他 OTP_CUST2_STAT 位为0 、这表明 BQ79616认为第2页已成功编程、即使尚未编程。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我刚刚检查了其他条件、看起来没有您描述的潜在问题可能是原因。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Yun:

    以下是我通过 BQ79616 GUI 测试的命令。 唤醒并自动寻址所有器件后、您可以通过以下命令重试。

    ======

    #0x0004 OTP 至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
    读取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打开。 程序开始
    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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在解锁 OTP 之前、我觉得您应该先写入 NVM 寄存器(通过写入寄存器0x0004)。 这是实现它的正确方法吗? 我只有在设置  PROG_GO 后才对 NVM 寄存器进行写入。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    之前或之后解锁 OTP 都正常。 但您应该在 PROG_GO 之前向寄存器写入正确的值。