我正在使用带有 jn5148 MCU 的 m25p40 闪存。在这个闪存的数据表中,它写道:
擦除能力:
- 扇区擦除:0.6 秒内 512Kb(典型值)
- 批量擦除:4.5 秒内 4Mb(典型值)
我在覆盖存储在一页扇区中的数据时遇到问题。那么,如何擦除一页,并在该页中写入新数据?是否有任何解决方案可以擦除扇区的一页,而不擦除同一扇区的其他页面?
我正在使用带有 jn5148 MCU 的 m25p40 闪存。在这个闪存的数据表中,它写道:
擦除能力:
我在覆盖存储在一页扇区中的数据时遇到问题。那么,如何擦除一页,并在该页中写入新数据?是否有任何解决方案可以擦除扇区的一页,而不擦除同一扇区的其他页面?
您不能重写一页。您必须至少重写一个扇区。因此,如果您想更改或重写所选扇区中任何页面中的至少一个字节,您可以执行以下操作:
你必须阅读这篇文章:关于闪存驱动器你不知道的五件事
这是从 m24p40 文档中引用的扇区擦除过程
SECTOR ERASE 命令将所选扇区内的所有位设置为 1 (FFh)。在可以接受 SECTOR ERASE 命令之前,必须先执行 WRITE ENABLE 命令。WRITE ENABLE 命令解码后,器件将设置写使能锁存器 (WEL) 位。通过将片选 (S#) 驱动为低电平来输入 SECTOR ERASE 命令,然后是命令代码和串行数据输入 (DQ0) 上的三个地址字节。扇区内的任何地址都是 SECTOR ERASE 命令的有效地址。在整个序列期间,S# 必须被驱动为低电平。在最后一个地址字节的第 8 位被锁存后,S# 必须被驱动为高电平。否则不执行 SECTOR ERASE 命令。一旦 S# 被驱动为高电平,就会启动自定时扇区擦除周期;周期的持续时间是 t SE 。当扇区擦除周期正在进行时,可以读取状态寄存器以检查正在写入 (WIP) 位的值。WIP 位在自定时 SECTOR ERASE 周期内为 1,当周期完成时为 0。在循环完成之前的某个未指定时间,WEL 位被复位。如果应用于受硬件或软件保护的扇区,则不执行 SECTOR ERASE 命令。