适用范围:SPI NOR / SPI NAND Flash,Single / Dual / Quad / QPI 模式
标准说明:本文描述为行业通用 SPI Flash 扩展协议;原生 SPI 标准无 Dual/Quad 定义;不含 eMMC、SD、UHS-II 等其它存储接口
带宽计算公式:
Byte Rate=fclk×IO位宽÷8\text{Byte Rate}=f_{clk} \times \text{IO位宽} \div 8Byte Rate=fclk×IO位宽÷8
1 术语约定
- SCLK、CS# 为基础固定信号,不计入单线/二线/四线的数据线统计
- 命名格式 A-B-C:命令阶段位宽 - 地址阶段位宽 - 数据阶段位宽
- SDR:单沿采样(仅上升沿);行业标准QSPI为SDR架构,标准协议无DDR;DDR QSPI / Octal SPI属于厂商非标扩展
- DS(Data Strobe)、Tuning:SPI Flash 体系不支持、不需要,仅eMMC高速模式使用
- XIP:Execute In Place,原地执行
- Shadow加载:先将固件搬运至RAM再执行
2 单线、二线、四线模式详解
2.1 单线 Single(1-1-1)
- 使用IO0、IO1,IO方向固定:IO0=MOSI(主机发),IO1=MISO(Flash收);IO2、IO3默认为WP#、HOLD#功能,不作为数据线
- 每个SCLK周期传输:1 bit
- 通信特性:全双工
- 特点:兼容性最强,绝大多数SoC Boot ROM默认支持该模式
⚠️ 重要区分:传统常说的"4线SPI" = SCLK+CS# + MOSI + MISO,就是本Single单线模式,不等于Quad四线模式
2.2 二线 Dual(典型 1-2-2)
- 使用IO0、IO1两根双向IO,不再固定收发方向
- 每个SCLK周期传输:2 bit
- 通信特性:半双工(同一时刻只能读或写)
- 典型配置 1-2-2:命令阶段单线传输,地址、数据阶段双线并行
2.3 四线 Quad(1-4-4 / 4-4-4(QPI))
- 使用IO0~IO3四根双向IO;IO2、IO3放弃WP#、HOLD#功能,复用为数据线
- 每个SCLK周期传输:4 bit
- 通信特性:半双工
- 1-4-4:命令阶段单线,地址、数据四线;Boot ROM支持度较高
- 4-4-4(QPI):命令、地址、数据全部四线并行;XIP性能最优
3 QSPI 各模式对比总表
| 模式名称 | 模式编码 | 典型最大时钟 | IO位宽 | 每时钟bit | 独立CMD线 | Strobe/DS | Tuning | 理论带宽@133MHz |
|---|---|---|---|---|---|---|---|---|
| Single SPI | 1-1-1 | 100~133MHz | 1 | 1 | ❌ | ❌ | ❌ | 16.6 MB/s |
| Dual SPI | 1-2-2 | 100~133MHz | 2 | 2 | ❌ | ❌ | ❌ | 33.2 MB/s |
| Quad SPI | 1-4-4 | 100~133MHz | 4 | 4 | ❌ | ❌ | ❌ | 66.5 MB/s |
| QPI | 4-4-4 | 100~133MHz | 4 | 4 | ❌ | ❌ | ❌ | 66.5 MB/s |
4 XIP原地执行原理
XIP全称 Execute In Place,原地执行。
- XIP:QSPI控制器做地址映射(Memory-Mapped),CPU直接从Flash取指令运行,无需预先拷贝代码到RAM
- 非XIP(Shadow加载):控制器读出Flash数据,搬运到片上SRAM/DDR,CPU从RAM取指执行
✅ 优势:节省RAM资源,适合小RAM MCU方案
❌ 劣势:受限于Flash接口带宽,存在命令、地址传输带来的读取延迟,执行速度低于RAM
所有Single/Dual/Quad/QPI模式理论上均可配置XIP;但很多Boot ROM仅支持1-1-1、1-4-4的XIP映射,原生不支持4-4-4 QPI启动,需要启动后切换模式。
5 SPI NOR 与 SPI NAND 的 XIP 能力差异
| 器件类型 | 是否支持XIP | 底层原因 | 启动方式 |
|---|---|---|---|
| SPI NOR(含Octal NOR) | ✅ 支持 | 字节级随机寻址,支持CPU随机取指跳转 | XIP原地执行 / Shadow加载二选一 |
| SPI NAND / Octal NAND | ❌ 不支持 | 按页访问架构,最小读出单元为页(2KB/4KB),自带ECC、坏块管理,无法做到任意地址即时随机读 | 仅Shadow加载:BootROM搬运Bootloader到SRAM后跳转执行 |
备注:SPI NAND的连续读(Continuous Read)仅提升页内顺序读取速度,不属于XIP。
6 时钟与采样机制
SPI Flash 所有标准模式以主机SCLK作为唯一采样基准,无DS源同步选通信号,不需要Tuning相位校准。
7 Boot与选型建议
- 最小兼容启动:Single 1-1-1,通用兜底
- 平衡兼容性与带宽:Quad 1-4-4,优先推荐量产
- XIP性能最大化:QPI 4-4-4,确认Boot ROM支持后使用
- 大容量、低成本固件存储:SPI NAND,采用Shadow启动,预留足够RAM
- 小RAM、代码直接运行:SPI NOR + QPI XIP
8 硬件风险提示
- 切换Quad/QPI模式后,IO2、IO3不再是WP、HOLD,原有硬件上拉/下拉逻辑需要重新评估
- DDR QSPI、Octal SPI属于厂商扩展规格,不同品牌兼容性差,量产项目谨慎选用
- QPI XIP启动兼容性是高频坑点,需要提前核对SoC Boot ROM手册
9 缩写释义
- SPI:Serial Peripheral Interface
- QSPI:Quad Serial Peripheral Interface
- QPI:Quad Peripheral Interface
- XIP:Execute In Place
- SDR:Single Data Rate
- CS#:Chip Select
- SCLK:Serial Clock