根据手册进行OTP,开始写入,手册说等待100ms,我延长等待至120ms再去读取,返回0x00或0x04,设备断电在上电发现OTP已经成功了,不是手册所说的0x80,请问为什么出现这个情况
您好
请您参考着部分帖子说明。
根据您的说明应该是已经完成写入,后面的0x40和0x00表示不能在被写入了。
您好
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)