欢迎光临深圳市微效电子有限公司官网!
咨询热线:
13423842368
  1. 首页 > 新闻动态 > 常见问题

flash写入前为什么要擦除

flash写入前为什么要擦除


Flash 写入与擦除原理


Flash 写入操作并非一定需要预先擦除;擦除的目的,一般是保障写入数据的正确性。核心原理:Flash 仅支持把比特位从 1 改写为 0,无法直接将 0 改写回 1。


Flash 读写擦除底层原理


Flash 的固有特性:写操作只能将比特由 1 置 0,不能直接把 0 置 1。

因此,若目标存储区域初始状态为 `0xFF`(全部比特为 1),可直接写入数据;但如果该区域已存在比特 0,而新数据对应位置需要写成 1,则必须先执行擦除,把整块区域所有比特恢复为 1。

擦除操作是以扇区 / 页为单位执行,会将对应区块全部字节重置为 `0xFF`。STM32 片内 Flash 以及绝大多数外挂 Flash 芯片,均以页(区块)作为最小擦除单元。擦除耗时远高于单次写入,且擦除过程中可能无法响应中断。


无需预先擦除的场景


我们可以利用 Flash “只能 1→0” 的特性,在部分应用中省去冗余擦除动作。

举例:原始数据为 `0xFF`,依次写入 `0xFE`、`0xFA`、`0x42`、`0x00`,全程不需要擦除即可多次覆写。该方案适用于高速连续采样、故障日志记录等场景,既能规避擦除带来的时延、降低对业务程序的影响,也能减少擦除损耗,延长 Flash 使用寿命。


必须执行擦除的场景


当业务需要把原有比特 0 改回 1,或是新写入数据和原有数据存在冲突(需要 0→1)时,必须先擦除对应的扇区或页面。

另外像 SPI Flash 这类外置存储芯片,通常要求目标区域先擦除再写入,否则会出现写入异常、读出数据错乱的问题。


小结


可直接写入、不用擦除:新数据仅做 1 → 0 的修改

必须先擦除再写入:需要把原有 0 改写成 1,或是直接覆盖冲突数据

优化思路:针对高速、持续写入场景,合理规划数据排布与写入顺序,减少擦除频次,提升运行效率,同时延长 Flash 寿命。


Copyright © 2026 深圳市微效电子有限公司 All Rights Reserved    专注于IC芯片代理、MCU芯片代理,主要产品:SPI NOR FLASH、NAND FLASH、SD NAND FLASH、eMMC、 mcu单片机、电源管理、音频功放IC、温湿度传感器等存储芯片,粤ICP备2025381541号-1sitemap.xml

扫描微信,掌握资讯