根据手册进行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)
您好
If you could share a logic analyzer file, that would be helpful to see what exactly was sent and to check if anything potentially occurred during the transaction that may not be obvious.
If the OTP_WR_CHECK is reading back 0x00, this would mean that OTP programming is not allowed. What is the stack voltage on the BAT pin when they are trying to program OTP?
When you say the device loses power and reads one of the registers you want to program, did the device truly reset? Is this seen on the REG18 pin where it fully goes to 0V before going back up to ~1.8V?
Also, could you share what registers you wanted to program through a .gg file potentially?
When you read from 0x40, is this done like below?
Write: 0x10 0x3E 0xA1 0x00
Wait 100ms
Read: 0x10 0x40