QSPI协议概述

做嵌入式这么多年,最常打交道的就是各种存储器接口。SPI 大家都熟,但遇上高分辨率图片、音频固件甚至代码原地执行(XIP)时,SPI 那条单车道就明显不够用了。QSPI 就是在 SPI 基础上把数据线从 1 根扩到 4 根,同时又把时钟频率提上去,让吞吐量翻了几个跟头。这章我们就先把 QSPI 的底子讲清楚——它怎么来的、四根线怎么玩、实际用在哪些地方。

从 SPI 到 QSPI:为什么需要四根数据线?

标准 SPI 是四线制:SCK、CS、MOSI、MISO。发送和接收各占一根线,全双工模式下最高也就 1 bit/cycle。遇到大容量 Flash 读数据,瓶颈明显。

SPI 痛点:想要更快的读速度,要么提时钟(受 PCB 走线、芯片驱动能力限制),要么增加数据位宽。QSPI 选了后者——把 MISO 和 MOSI 变成双向数据线,再额外加两根,凑成 4 根数据线,也就有了 QSPI。

我在项目中遇到过这样的情况:某款摄像头模组需要把 800 万像素的 raw 数据存入 Flash,用 SPI 读回来要等好几百毫秒,用户界面直接卡顿。换成 QSPI 后,读速度翻了近 4 倍,延迟一下子就降下来了。

对比项SPIQSPI
数据线数量2(MOSI + MISO)4(IO0~IO3)
单时钟周期数据传输1 bit(全双工)4 bits(半双工读/写)
典型时钟频率20~50 MHz50~120 MHz
最大理论吞吐50 MB/s @ 50MHz480 MB/s @ 120MHz(DDR)
指令开销命令+地址+数据命令+地址+数据(可多线传输地址)

说白了,QSPI 不是新技术,只是在 SPI 框架下把数据线翻倍,同时保留了 SPI 的命令/地址阶段小开销的特点。你想想看,地址阶段也能用 4 线传输,这意味着从发送地址到读数据的准备时间更短了。

QSPI 四线数据线原理

QSPI 的四根数据线命名为 IO0、IO1、IO2、IO3。为什么叫 IO?因为它们都是双向的。不像 SPI 的 MOSI 只管发、MISO 只管收。

  • IO0:标准模式下作 MOSI(输出);QSPI 模式下双向。
  • IO1:标准模式下作 MISO(输入);QSPI 模式下双向。
  • IO2 和 IO3:仅在四线模式下工作,通常在标准 SPI 模式下保持高阻或由软件控制。

在我带过的项目中,有个新人把 IO2 和 IO3 浮空没处理,结果标准 SPI 通信时 IO2 引脚悬空导致漏电,整板功耗多了 3mA。这小细节要记住。

QSPI 的传输流程一般分三个阶段:

  1. 指令阶段:CS 拉低后,主设备发送 1 字节命令,线宽通常为 1(单线)。
  2. 地址阶段:按命令可配置为单线或四线发送 3~4 字节地址。
  3. 数据阶段:四线传输数据,每个时钟传出 4 bits。
提示:很多 QSPI Flash 支持 "Dual Output" 和 "Quad Output" 模式。它们区别在于地址阶段是单线还是四线。如果地址也用四线,就是 "Quad I/O" 模式,地址传输快 4 倍,适合随机读取场景。

另外还有个 DDR(Double Data Rate)模式——在时钟上升沿和下降沿都采样数据,这样四线 DDR 模式下每时钟可传 8 bits。不过 DDR 对 PCB 信号完整性要求更高,我建议时钟超过 80MHz 时再考虑。

典型应用场景

QSPI 最常出现在这些地方:

  • 代码就地执行(XIP):MCU 直接从 QSPI Flash 取指运行,省掉内部 SRAM 或外部 SDRAM。比如 NXP i.MX RT 系列、ST STM32H7 都支持。我在做工业控制器时就用过,XIP 下代码执行速度接近内部 Flash,成本却低很多。
  • 大容量数据存储:字库、图片、音频、日志。一块 64MB QSPI Flash 售价不到 10 元,读取速度可达 50MB/s 以上。
  • FPGA 配置:很多 FPGA 支持从 QSPI Flash 加载 bitstream,因为引脚少(只需 6~7 个 IO),比并行 NOR Flash 省 PCB 面积。
  • 固件升级备份:双 bank 切换,在线升级时先写到备份区,切换后用 QSPI 高速读出执行。
警告:QSPI 虽然快,但不是万能。它的写入速度远低于读取(一般写 1MB 需要几百毫秒)。如果应用需要频繁小数据写入(如参数保存),建议用 EEPROM 或内部 Flash。我曾经在量产产品里因为用 QSPI 做参数存储,导致写入 10 万次后 Flash 出现坏块——QSPI NOR Flash 的擦写寿命只有 10 万次左右。

下面这张图帮你快速理清这章的核心内容:

QSPI 协议概述 · 核心知识框架 QSPI Flash 接口 SPI vs QSPI 数据线1→4 / 吞吐量4x 四线数据线原理 IO0~IO3 双向 / 时序阶段 典型应用场景 XIP / 存储 / FPGA配置 SPI 单线瓶颈 20-50MHz / 1bit QSPI 多线扩展 120MHz / 4bits 指令 / 地址 / 数据阶段 DDR模式 · 线宽可配置 XIP / 数据存储 FPGA配置 · 固件升级 ⚠ 关键点 QSPI 本质上是 SPI 的数据位宽扩展,保留命令/地址开销小的优势, 适用于大容量高速读取,但写寿命和写速度仍是短板。

嗯,这章的核心就这些——SPI 到 QSPI 的演进逻辑、四线数据线的双向原理、以及最常见的应用落脚点。后面几章我们会切入频率和相位配置的实战,那是调通 QSPI 的关键。你先把这些概念消化掉,接下来的寄存器配置和时序分析才不会晕。