这四种接口是STM32 体系里是代际演进 + 宽度扩展的关系:QuadSPI 是老大哥,OctoSPI 是 8 线增强版,Hexadeca-SPI(HSPI)是 16 线专用控制器,XSPI 是 ST 在新一代 MCU 上做的“统一可配控制器”——8 线时等价 OctoSPI,16 线时等价 HSPI。
维度 | QuadSPI (QSPI) | OctoSPI (OSPI) | Hexadeca-SPI (HSPI) | XSPI |
|---|---|---|---|---|
| 数据线数 | 1/2/4(IO[0:3]) | 1/2/4/8(IO[0:7]) | 命令/地址 8 线,数据阶段 16 线(IO[0:15]) | 可配 1/2/4/8/16(IO[0:15]) |
| 首现系列 | STM32F4(最早) | STM32L4+ | STM32U5(U59x/5Ax/5Fx/5Gx) | STM32H7R/S、STM32N6、STM32C5 |
| 典型最高时钟 | 约 50–108 MHz(看型号) | SDR 最高 ~150 MHz,DTR 带 DQS ~64–90 MHz(H7A3/B3 可达 100+) | SDR 最高 160 MHz | SDR 最高 200 MHz,DTR 带 DQS |
| DQS 选通 | 无 | 有(DQS) | 有(DQS,部分带 DQS0/1) | 有(DQS0/1) |
| HyperBus | 不支持 | 支持(单端 3.3V,部分支持 1.8V 差分) | 支持(含 1.8V 差分 NCLK) | 支持(单端/差分) |
| 协议集 | Regular-command | Regular + HyperBus | Regular + HyperBus + 16-bit 模式 | 覆盖 QSPI/Octo/HyperBus/16-bit |
| PSRAM/16bit RAM | 不支持 | 不支持 PSRAM(H7 的 OCTOSPI 明确不支持 PSRAM) | 支持 16-bit PSRAM / HyperRAM | 支持 16-bit PSRAM / HyperRAM |
| 内存映射 XIP | 有(但带宽低) | 有(AHB/AXI 挂载) | 有(AHB,~160MHz 总线) | 有(AXI,64-bit,寻址 4GB) |
| IO Manager | 无 | OCTOSPIM(多实例仲裁/引脚复用) | 无独立 manager(U5 上单实例) | XSPIM(多实例仲裁/复用) |
| 代表 MCU | F4/F7/H7(早期配 QSPI) | H7A3/B3、H7B0、H723/725/730、L4+、L5、H5 | U5 大内存型号 | H7R3/7S3/7R7/7S7、N6、C5 |
注:STM32H750 只有 OCTOSPI(8 线),没有 HSPI 也没有 XSPI。H750 的 OCTOSPI 不支持 PSRAM,只挂 Octal Flash / HyperRAM(HyperRAM 是 volatile 但走 HyperBus 协议,不是 16-bit PSRAM 模式)。
定位:8 线 + DQS + DTR,带宽比 QSPI 翻 4 倍(8线×DDR vs 4线×SDR),引入 DLYB 做接收相位校准。
支持协议:Regular-command(兼容传统 SPI 命令帧)和 HyperBus
工作模式:Indirect(寄存器驱动)、Automatic status-polling、Memory-mapped(XIP 执行)
理论带宽:100MHz × 8bit × 2(DTR)= 800 Mbps
设备:
Octal NOR Flash:MX25LM51245G、W25Q01JxIM(1Gb Octal)
HyperRAM(8 线 HyperBus):ISSI IS66WVH8M8BLL、Cypress/Infineon S27KL
Octal NAND(少量)
场景:H750 跑 TouchGFX、QSPI 不够用的 XIP 执行、需要外挂帧缓冲但不用 16 线 PSRAM。
定位:数据阶段 16 线,命令/地址仍 8 线(兼容软件模型),专为大带宽 volatile 内存设计。
带宽提升:相比 Octo-SPI 翻倍,典型配置可达 200 MB/s 以上持续读写
设备:
16-bit PSRAM:AP Memory APS12808L(128Mb)、APS6404L 的 16-bit 版本
16-bit HyperRAM / HyperFlash(更高带宽版)
场景:U5 上跑复杂 HMI、AI 中间量缓存、大帧缓冲(比 Octo+HyperRAM 再翻倍)。
定位:ST 给新一代“Flash-less”或超大外存 MCU(H7R/S、N6)做的统一控制器。硬件框图里它既可以是 OSPI 也可以是 HSPI,由 IO 数量决定。
设备:上面 OSPI 和 HSPI 的设备全吃,且支持双片交错(DMM)、MCE 实时解密(AES-256)。
场景:H7R/S 跑 800 MB/s 理论带宽、接 16-bit PSRAM 做 1080p 帧缓冲、N6 跑 NN 模型外挂。
QSPI(4线)→ OSPI(8线+DQS+DTR)→ HSPI(16线数据阶段)→ XSPI(把 OSPI/HSPI 合成一个可配外设,挂在 AXI 上,加 MCE/OTFDEC)。
新项目选 MCU 时:
有 H750 → 只能用 OCTOSPI,别找 HSPI/XSPI 寄存器
需要 16 线 PSRAM → 升 **U5(HSPI)** 或 H7R/S、N6(XSPI)
老代码里 HAL_QSPI_* 和 HAL_OSPI_* 不通用,HAL_XSPI_* 是另一套新版 HAL
本文作者:ZeroEngineer
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!