SPI Flash驱动开发:扇区擦除与DMA写入优化 - 第1节

1.1 SPI Flash 基本概念

SPI Flash 是一种基于 串行外设接口(Serial Peripheral Interface) 的 NOR 型非易失性存储器。它通过 SPI 总线与主控器(MCU/MPU)通信,仅需 4 根信号线(SCK、MOSI、MISO、CS#)即可完成数据读写,相比并行 NOR Flash 大幅减少了 PCB 布局面积和引脚数量。

SPI Flash 在嵌入式系统中广泛用于存储固件、配置参数、日志数据和文件系统,典型容量范围为 1 Mbit 至 2 Gbit。其核心特性包括:

  • 非易失性:断电后数据不丢失。
  • 按扇区擦除:写入前必须先擦除,最小擦除单元通常为 4 KB。
  • 支持 XIP(就地执行):代码可直接在 Flash 上运行,无需加载到 RAM。
  • 低功耗:工作电流通常在 1~20 mA,待机电流可低至 1 μA。
💡 开发提示: 选择 SPI Flash 时需关注最大时钟频率(如 104 MHz)、支持的命令集(标准/双线/四线 SPI)以及擦除/编程时间参数,这些直接影响驱动性能和 DMA 传输设计。

1.2 存储单元结构

SPI Flash 的存储单元采用 浮栅晶体管(Floating Gate Transistor) 结构,通过控制栅极和浮栅之间的电荷存储来保持数据。写入时通过隧道效应注入电子,擦除时通过 Fowler-Nordheim 隧穿或热电子注入移除电子。

从逻辑层次看,SPI Flash 的存储组织分为以下层级:

层级 典型大小 说明
芯片(Chip) 1 Mbit ~ 2 Gbit 整个 Flash 器件
块(Block) 64 KB 擦除操作的基本单位之一
扇区(Sector) 4 KB 最小擦除单元,驱动开发核心关注点
页(Page) 256 B 编程(写入)的最小单位
字节(Byte) 1 B 读取的最小单位
🔑 关键概念: 扇区擦除是 SPI Flash 驱动中最耗时的操作之一(典型 4 KB 扇区擦除需 30~400 ms),而页编程通常只需 0.5~3 ms。因此,驱动优化策略往往围绕减少擦除次数、合并写入请求展开。

下图展示了 SPI Flash 的存储单元物理结构与逻辑层级映射关系:

SPI Flash 存储单元结构与逻辑层级 SPI Flash 存储单元结构与逻辑层级 浮栅晶体管结构 控制栅极 (CG) 氧化层 浮栅 (FG) 氧化层 源极 漏极 P 型衬底 电子注入 逻辑层级(自上而下) 芯片 (Chip) 块 (Block) 64 KB 扇区 (Sector) 4 KB 页 (Page) 256 B 字节 (Byte) 1 B 📌 扇区是擦除的最小单位,页是编程的最小单位。 驱动开发中,扇区擦除耗时最长,是 DMA 写入优化的关键瓶颈。

1.3 NOR 与 NAND Flash 的区别

SPI Flash 绝大多数属于 NOR Flash 架构,与嵌入式系统中同样常见的 NAND Flash 在存储单元结构、接口方式、读写特性和可靠性方面存在显著差异。下表从驱动开发角度对比两者的关键区别:

对比维度 NOR Flash NAND Flash
存储单元连接 每个单元并联在位线上 多个单元串联在位线上
读取速度 快(随机读取,支持 XIP) 较慢(需页读取 + 缓存)
写入速度 慢(页编程 0.5~3 ms) 快(页编程 ~200 μs)
擦除速度 慢(扇区擦除 30~400 ms) 快(块擦除 ~2 ms)
擦除单元 扇区(4 KB)或块(64 KB) 块(128 KB ~ 512 KB)
坏块管理 无需(出厂无坏块) 需要(出厂可能有坏块)
位翻转概率 极低 较高,需 ECC 纠错
典型用途 固件存储、XIP 代码执行 大容量数据存储、文件系统
SPI 接口支持 广泛(SPI NOR Flash) 较少(SPI NAND Flash 存在但非主流)
⚠️ 驱动开发注意: 本课程聚焦 SPI NOR Flash。若后续项目涉及 SPI NAND Flash,需额外实现坏块管理表和 ECC 校验算法,驱动架构差异较大,不可直接复用。

下图从系统架构层面展示 NOR 与 NAND Flash 在嵌入式系统中的典型连接方式:

NOR 与 NAND Flash 系统连接对比 NOR 与 NAND Flash 系统连接对比 NOR Flash 连接(SPI) MCU/MPU SPI 主控 SPI NOR Flash SCK/MOSI/MISO CS# ✅ 支持 XIP,代码可直接运行 ✅ 随机读取快,无需缓存 NAND Flash 连接(并行/SPI) MCU/MPU NAND 控制器 NAND Flash ALE/CLE/I/O RE#/WE#/CE# ⚠️ 不支持 XIP,需加载到 RAM ⚠️ 需要坏块管理和 ECC 📌 本课程基于 SPI NOR Flash 开发,其 XIP 特性和扇区擦除机制 是驱动设计中 DMA 写入优化和扇区擦除策略的核心前提。

1.4 本章小结

  • SPI Flash 是嵌入式系统中广泛使用的串行 NOR 型非易失存储器,具有引脚少、支持 XIP、低功耗等优点。
  • 存储单元基于浮栅晶体管,逻辑层级为:芯片 → 块 → 扇区 → 页 → 字节,其中扇区(4 KB)是擦除最小单位,页(256 B)是编程最小单位。
  • NOR Flash 与 NAND Flash 在读取速度、擦除单元、坏块管理和可靠性方面差异显著,SPI Flash 驱动开发主要面向 NOR 架构。
  • 理解扇区擦除的耗时特性是后续 DMA 写入优化设计的基础。