BQ76952: OTP完成返回值不对,却能成功写入

Part Number: BQ76952


根据手册进行OTP,开始写入,手册说等待100ms,我延长等待至120ms再去读取,返回0x00或0x04,设备断电在上电发现OTP已经成功了,不是手册所说的0x80,请问为什么出现这个情况

  • 您好

    已经收到了您的案例,调查需要些时间,感谢您的耐心等待

  • 您好

    还有个问题,就是BQ我已经OTP过了。我多次执行OTP流程,发送OTP_WR_CHECK();返回是0x80。然后发送OTP_WRITE();等待 120 ms。从 0x40 读取是0x00,我BQ芯片已经OTP了,为什么发送OTP_WR_CHECK();返回是0x80,重复写入相同的参数,不算第二次写入吗?

  • 你好

    我给芯片输入电压是12V,在手册要求范围内,如果不满足OTP的条件,那为什么OTP_WR_CHECK()返回是0x80。按照手册返回0x80是可以进行OTP,OTP_WRITE()也给足够时间等待写入,但去读取0x40 是0。我试过去修改配置某个参数值在进行OTP操作,也是遇到以上的问题。如果是因为多次OTP导致不允许写入,OTP_WR_CHECK()应该返回0x08。

  • 您好

    https://www.ti.com/lit/ug/sluuby2b/sluuby2b.pdf?ts=1764636934896

    这个有寄存器的详细说明,且OTP是不允许多次写入的。

  • 你好

    我的意思是,如果不满足OTP条件,OTP_WR_CHECK()返回不应该是0x80,而是别的位置1,或者字节1,2返回是无法编程地址

  • 您好

    4.1 配置进入密封模式的编程步骤 1. 通过读取其中一个已编程寄存器,检查器件上是否已完成 OTP 编程。通电时,寄存器报告默认值或 OTP 中 编程的值(如果 OTP 已编程)。如果尚未完成 OTP 编程,则转至后续步骤。 2. 读取 0x12 电池状态 [SEC1,SEC0] 位,以验证器件是否处于完全访问模式 (0x01)。 3. 如果器件处于完全访问模式,则进入 CONFIG_UPDATE 模式-(子命令 0x0090)。如果未进入该模式,请解 封器件,然后返回步骤二检查器件是否处于完全访问模式。 4. 在数据存储器中配置寄存器设置。 5. 退出 CONFIG_UPDATE 模式 -(子命令 0x0092)。 6. 读取数据存储器寄存器以验证所有参数均已成功写入。 7. 进入 CONFIG_UPDATE 模式。 8. 检查电池状态 [OTPB] 位是否清除,以验证是否满足 OTP 编程条件。 9. 读取 OTP_WR_CHECK()(子命令 0x00A0)。如果返回值为 0x80,则满足 OTP 编程条件。 10. 如果 OTP_WR_CHECK 指示满足条件,则发送 OTP_WRITE() 子命令 (0x00A1)。 11. 等待 100 ms。从 0x40 读取以检查 OTP 编程是否成功(0x80 表示成功)。 12. 进入密封模式。 13. 退出 CONFIG_UPDATE 模式 -(子命令 0x0092)。

  • 你好

    现在是第一次进行OTP,BQ按照你的步骤执行,执行到第11步,等待120ms,读取0x40,返回是0x00,我程序认为是OTP失败退出,然后断电在上电,执行第一步,发现已经写入成功了,请问为什么读取0x40,返回是0x00,我给芯片供电电压是11.5V。和你所给的链接中说的情况不太一致 (If the OTP_WR_CHECK() is returning 0 that indicates the stack voltage is too high for OTP programming)