1. SPI Flash 概述

SPI Flash 是一种采用 串行外设接口(Serial Peripheral Interface) 进行通信的 NOR 型闪存存储器。它凭借引脚少、体积小、读写速度快、可靠性高等优势,成为嵌入式系统中固件存储与数据持久化的首选介质。本章将系统介绍 SPI Flash 的定义、核心特点、主流型号及其在嵌入式系统中的关键作用。

1.1 什么是 SPI Flash

SPI Flash 是一种基于 SPI 总线协议的非易失性存储器芯片。它内部采用 NOR 闪存单元阵列,支持按字节随机读取,非常适合存储可执行代码(XIP,eXecute In Place)。与并行 NOR Flash 相比,SPI Flash 仅需 6~8 个引脚即可完成通信,大幅简化了 PCB 布局并降低了系统成本。

核心特征: SPI Flash 属于 NOR 型闪存,支持随机读取,擦除和写入以扇区(Sector)或块(Block)为单位进行。

1.2 SPI Flash 的主要特点

特性 说明 典型指标
接口标准 SPI 总线,支持 Mode 0/3,全双工同步通信 SCK、MOSI、MISO、CS# 四线
存储容量 从 512KB 到 256MB 不等,常见 8MB~128MB W25Q64:8MB;MX25L128:16MB
读取速度 支持标准 SPI、Dual/Quad SPI 高速读取 标准 50MHz,Quad SPI 可达 133MHz
擦写寿命 每个扇区可擦写 10 万次以上 典型 100,000 次
数据保持 在 85°C 环境下数据可保持 20 年 20 年 @85°C
工作电压 低功耗,支持宽电压范围 2.7V~3.6V
封装形式 小型化封装,节省 PCB 空间 SOP-8、WSON-8、USON-8

1.3 常见 SPI Flash 型号对比

目前市场上最主流的 SPI Flash 供应商包括 Winbond(华邦)、Macronix(旺宏)、GigaDevice(兆易创新) 和 ISSI。以下列出嵌入式开发中最常用的几款型号:

型号 容量 最高频率 特色功能 典型应用
W25Q64JV 8MB (64Mb) 133MHz (Quad) Dual/Quad SPI,支持 SFDP 路由器、IoT 设备、MCU 固件
W25Q128JV 16MB (128Mb) 133MHz (Quad) Dual/Quad SPI,支持 XIP 嵌入式 Linux 启动、FPGA 配置
MX25L12835F 16MB (128Mb) 133MHz (Quad) 低功耗,宽温范围 -40~85°C 工业控制、车载电子
MX25L25645G 32MB (256Mb) 166MHz (Quad) 4KB 扇区擦除,支持 DTR 高端路由器、AI 边缘设备
GD25Q64C 8MB (64Mb) 120MHz (Quad) 与 W25Q64 引脚兼容 国产替代方案、消费电子
选型建议: 对于大多数 MCU 固件存储场景,W25Q64(8MB)或 W25Q128(16MB)是性价比最高的选择。若需要更大容量或更高速度,可考虑 MX25L256 系列。

1.4 SPI Flash 在嵌入式系统中的作用

SPI Flash 在嵌入式系统中承担着多重关键角色,其作用贯穿系统启动、运行和升级的全生命周期:

  • 固件存储与启动加载: 存放 Bootloader(如 U-Boot)、操作系统内核和根文件系统。上电后 CPU 通过 SPI 接口读取固件并加载到 RAM 中执行。
  • 参数与配置持久化: 保存设备 MAC 地址、校准参数、用户配置、日志记录等需要断电保持的数据。
  • OTA 升级缓冲区: 在固件远程升级过程中,新固件先写入 SPI Flash 的备用分区,校验通过后再覆盖主分区,实现安全升级。
  • FPGA 配置存储: 许多 FPGA 使用 SPI Flash 存储比特流文件,上电后 FPGA 自动从 SPI Flash 加载配置。
  • 文件系统载体: 在资源受限的嵌入式设备中,SPI Flash 可作为 SPIFFS、LittleFS 等轻量级文件系统的底层存储介质。
注意: SPI Flash 的擦除操作以扇区(通常 4KB)或块(通常 64KB)为单位,不能像 RAM 一样按字节直接覆写。写入前必须先擦除,这是固件烧录和备份时必须理解的关键特性。

1.5 SPI Flash 系统架构示意

下图展示了 SPI Flash 在典型嵌入式系统中的连接架构,以及它与主控芯片(MCU/SoC)之间的信号关系:

SPI Flash 嵌入式系统架构图 SPI Flash 在嵌入式系统中的连接架构 主控芯片 MCU / SoC SPI 主机控制器 SPI Flash W25Q64 / MX25L128 NOR 闪存阵列 SCK MOSI MISO CS# VCC (2.7V~3.6V) / GND SPI 四线制通信说明 SCK:时钟线,由主机驱动 MOSI:主机输出,从机输入;MISO:主机输入,从机输出 CS#:片选信号,低电平有效,用于选中目标设备

1.6 SPI Flash 内部存储结构

理解 SPI Flash 的内部存储层次结构,对于后续固件烧录和备份操作至关重要。下图展示了典型的 SPI Flash 存储组织方式:

SPI Flash 内部存储层次结构 SPI Flash 内部存储层次结构(以 W25Q64 为例) W25Q64 — 8MB (64Mb) 总容量 Block 0 64KB 包含 16 个扇区 Block 1 64KB Block 2 64KB ... 共 128 块 Sector 0 (4KB) 擦除最小单位 Sector 1 (4KB) 存储层次关系 1 个芯片 = 128 个 Block 1 个 Block = 16 个 Sector (64KB) 1 个 Sector = 16 个 Page (4KB) 1 个 Page = 256 字节(写入最小单位)

1.7 本章小结