主题中讨论的其他器件:TPS65988、 TPS65987
工具与软件:
您好!
我目前正在实施 TPS65987DDHRSHR 芯片闪存芯片的更新过程。 我实现的伪 C 代码中所述的所有逻辑
"TPS65987和 TPS65988 SPI 闪存固件更新 over I2C"-手册。 我注意到我所提供的固件映像实际上并未写入闪存芯片。 ERASE 和 WRITE 命令(FLem 和 FLwd)均不会更改闪存的内容。 我始终等待(如手册中所述)让 cmd 寄存器变为0、然后再从数据寄存器读取返回值。 我始终在继续之前确认返回值为零。 总结:
-我找到非活动区域地址与 FLrr 命令->返回正确的地址(在我的例子0x9000 )
-我用 FLem 擦除闪存区域(四倍4KB、因此我提供存储器地址、将0x04作为第五个字节)->返回成功(0x00)
-在正常更新期间,我不会在此时读取,但在调试期间,我做了,闪存芯片在此时没有擦除
-擦除后,我继续使用 FLwd 与64字节的数据在数据寄存器(与每4cc 命令,我首先指定寄存器0x09为 Data0 ,然后长度64字节-> 0x40后的数据)。 我始终等待 cmd 寄存器变为0x00、然后再继续。 我验证了我的补丁是否小于16KB
-如果我现在读取芯片,它仍然包含旧的数据
-现在我用 FLvy 验证芯片内容。 它返回 true、这是有意义的、因为没有任何变化、以前的内容也是有效的。
-现在重复相同的活动区域0x2000在本例中
我曾尝试将逻辑分析仪连接到 SPI 引脚、但我的分析仪只能对24 MHz 进行解码、而且由于时钟以24 MHz 运行、这有点不可靠。 我的分析仪程序会向我发出警告、WREN 位未设置、但我不确定这是由于采样率较低还是实际未发送。
我发现以下论坛条目可能与时序和过早返回成功标志的打字控制器相关、但没有提到如何解决此问题:
您能帮助我如何使闪存更新正常工作吗?
您还需要哪些其他信息?
此致、
文森特