1. QSPI Flash概述
1.1 什么是QSPI Flash
QSPI Flash,说白了就是「四线 SPI Flash」。
传统 SPI 只有一根数据输入线(MOSI)和一根数据输出线(MISO),一次只能传 1 位数据。QSPI 把数据线扩展到了四根——我习惯叫它 IO0 到 IO3,这样一次就能传 4 位数据。
嗯,这里要注意:QSPI 不光能当普通 SPI 用,还能在某些模式下同时读写四根线。速率一下就上去了。
我在项目中遇到过一块 FPGA 板子,用普通 SPI Flash 加载固件,每次都要等好几秒。后来换成 QSPI Flash,启动时间缩短到 500 毫秒以内。老板当时就问了一句:「你动了什么魔法?」
1.2 核心特点
我总结了几个关键特点,你记住这几点就够了:
- 四线数据通道:IO0~IO3 四根双向数据线,支持 1-bit、2-bit、4-bit 模式切换
- 双倍速率:DDR 模式下时钟上升沿和下降沿都采样,带宽直接翻倍
- 指令精简:读、写、擦除指令比 NAND Flash 简单得多,没有坏块管理
- 内存映射:支持 XIP(就地执行),CPU 可以直接从 Flash 里取指令跑
- 多 I/O 模式:从标准 SPI → Dual SPI → Quad SPI,向下兼容
我的一个小经验:你设计 PCB 时,QSPI 的四个数据线最好等长布线。我曾经遇到过信号歪到没法用的案例,最后发现是 IO2 比 IO0 长了 15mm 导致的。
1.3 应用场景
QSPI Flash 到底用在哪儿?说实话,几乎所有需要「快速启动 + 代码存储」的地方,都是它的主场。
| 应用领域 | 典型场景 | 为什么选 QSPI |
|---|---|---|
| FPGA 配置 | Xilinx、Intel FPGA 上电加载比特流 | 容量够大、速度够快、引脚少 |
| 嵌入式系统 | ARM Cortex-M/R/A 系列 BootROM | 支持 XIP,直接执行代码 |
| 汽车电子 | ECU 固件存储、ADAS 启动镜像 | 工业级温度范围、高可靠性 |
| 物联网设备 | Wi-Fi/BLE 模组固件升级 | 低功耗、小封装、引脚少 |
| 消费电子 | 路由器、电视盒子、智能音箱 | 成本低、容量可从 8MB 到 256MB |
你想想看:一个四层 PCB 上,用 6 个引脚就能搞定 100MB/s 以上的读取带宽,这性价比确实很难替代。
1.4 发展现状
QSPI Flash 不是横空出世的。它的发展路径很有意思:
- SPI 时代:单线传输,最高 50MHz 时钟,读速约 50Mbps
- Dual SPI:两根数据线,读速翻倍到 100Mbps
- QSPI 时代:四根数据线,加上 DDR 模式,爆发到 400Mbps 以上
- Octal SPI / XSPI:八根数据线,已经到 1.6Gbps 了
如今主流厂商——旺宏、华邦、兆易创新、美光——都在推 QSPI 产品。容量从 4MB 到 512MB,封装从 SOIC-8 到 WSON-8,选择很多。
但我得提醒你一句:不是所有芯片都支持 QSPI 的全部模式。有些便宜货只支持标准 SPI,你得上电后发一条「使能 Quad 模式」的命令才行。我曾经被一块假 QSPI Flash 坑过,买回来发现走不了四线,查了一整天才找到原因。
避坑指南:我曾经在一个量产项目里用了一款号称「QSPI」的 Flash,结果发现它的 Quad 模式只在 80MHz 以下才稳定。项目已经投产了,最后只能降频运行。选型时一定要看 Datasheet 里 Quad Read 的时序参数,不要只看标题。
1.5 为什么系统启动偏爱 QSPI
嵌入式系统启动时,BootROM 通常要做三件事:
- 从存储介质读取启动代码
- 把代码搬到 SRAM 或 DDR 里
- 跳转到入口地址执行
如果用普通 SPI,这个过程慢得像蜗牛爬。而 QSPI 的突发读取(Burst Read)加上内存映射(Memory Mapped)模式,能让 CPU 感觉「几乎跟本地内存一样快」。
为什么会这样?因为 QSPI 控制器一般会内置一个读缓存(Cache),你连续读数据时,控制器会自动预取下一段,减少等待时间。
我记得有一次调试一个 i.MX RT 系列的芯片,系统从 QSPI Flash 启动,整个上电到进 main() 只用了 80 毫秒。我当时就感叹:难怪现在各种 MCU 都内置 QSPI 控制器了。
1.6 本章知识结构
下面这张图是我自己画的结构图,帮你把 QSPI Flash 的整个知识体系理清楚:
这张图把本章拆成三块:特点、场景、现状。后面的章节会逐一展开每个分支的技术细节。