在嵌入式大容量存储扩展场景中,QSPI 四线 SPI 凭借高吞吐、少引脚的优势,成为外接 Flash 的主流方案。极海 APM32F411 系列 MCU 集成专用 QSPI 接口,兼容标准 SPI、Dual SPI、Quad SPI 三种模式,可快速驱动各类 QSPI Flash 存储芯片。本文基于官方 AN1108 应用笔记,从零梳理 QSPI 原理、硬件配置、模式切换与 Flash 读写实操,帮你快速完成 APM32F411 QSPI 工程落地。
资料获取:AN1108_APM32F411系列QSPI应用笔记
1. APM32F411 QSPI 核心基础(先吃透再开发)
APM32F411 QSPI 为专用 Flash 通信接口,仅支持与 QSPI Flash 通信,暂不支持 XIP 片上执行功能,核心特性一目了然:
1.1 三种传输模式(决定速度与引脚)
- 标准 SPI 模式:SCLK+CS+IO0 (MOSI)+IO1 (MISO),全双工,IO2/IO3 置高解除写保护
- Dual SPI 模式:双数据线 IO0/IO1 并行传输,速率翻倍
- Quad SPI 模式:四数据线 IO0~IO3 并行传输,速率最高,Flash 复用 nWP/nHOLD 为数据口
1.2 四阶段帧结构(所有操作的基础)
QSPI 每帧固定由 4 段组成,可按需配置使能:
- 指令段:8bit 为主,支持 4/16bit,单线 / 双线 / 四线发送
- 地址段:4~60bit(4 的倍数),配置发送模式与长度
- 空闲字节段:WAITCYC 配置 0~31 个时钟周期,给 Flash 准备数据时间
- 数据段:实际读写数据,模式跟随帧格式配置
1.3 四种传输模式 + FIFO/DMA/ 中断
- 传输模式:收发 / 仅发 / 仅收 / EEPROM 读取
- FIFO:8×32bit 深度,数据右对齐
- 中断:6 类中断(传输、FIFO 溢出 / 下溢 / 满、多主机冲突)
- DMA:支持收发 DMA,提升大批量数据传输效率
2. 硬件接线与初始化(一步到位不踩坑)
2.1 标准硬件接线(通用 Flash)
- CLK:时钟引脚
- CS:片选(上拉,推挽输出)
- IO0~IO3:四线数据引脚
- IO2/nWP、IO3/nHOLD:Quad 模式下复用为数据口
2.2 GPIO 初始化关键要点
- QSPI BK1 引脚复用为AF10,BK2 为AF9,不可混用
- CLK/IO0~IO3 配置为复用推挽,CS 配置为推挽输出并上拉
- 引脚速率配置 50MHz,兼顾稳定性与速度
2.3 QSPI 初始化核心步骤
- 开启 GPIO 与 QSPI 时钟(AHB2)
- 配置 GPIO 复用功能与电气参数
- 配置时钟分频:CLKDIV 为偶数,2~65534 可调
- 配置帧格式、数据位宽(8bit)、时钟极性 / 相位
- 使能 IO 端口与从机 SLAEN,修改配置前必须先失能 QSPI
3. 三种模式配置与实操(直接套用)
3.1 标准 SPI 模式(兼容普通 SPI Flash)
- 帧格式 FRF=0x0,支持全双工
- 适用:Flash 初始化、读 ID、低速读写
- 操作:单次 / 批量 FIFO 收发,流程与传统 SPI 一致
3.2 Dual SPI 模式(双线提速)
- 帧格式 FRF=0x1,IO0/IO1 双向传输
- 需配置:指令长度、地址长度、等待周期、数据帧数量
- 指令 / 地址模式由 IAT 位配置,常规为指令单线 + 地址双线
3.3 Quad SPI 模式(四线最高速)
- 帧格式 FRF=0x2,IO0~IO3 四线并行
- 关键配置:WAITCYC 等待周期(比 Dual 模式更长)
- QPI 特殊模式:指令也用四线发送,IAT 配置为 0x10 即可
4. 实战:Quad SPI 读取 Flash ID(轮询 + 中断)
以 W25Q64FV 为例,AN1108 提供两套可读代码,直接移植可用:
4.1 轮询读取(简单可靠)
- 指令:0x94,地址:0x000000,等待周期:6
- 配置步骤:失能 QSPI→设为仅接收 + Quad 模式→配置指令 / 地址 / 等待周期→使能 QSPI→发指令地址→读数据→拉高位 CS
- 优势:逻辑简单,适合调试阶段
4.2 中断读取(高效不阻塞)
- 使能接收 FIFO 满中断,阈值设为 0,每收 1 帧触发中断
- 中断服务函数:读取数据→清标志→读完拉高 CS
- 优势:不占用 CPU,适合批量数据交互
5. 工程调试避坑要点(AN1108 官方提醒)
- 配置修改必须先失能 QSPI,否则寄存器无法写入
- BK1 与 BK2 引脚复用功能不同,接错会完全不通信
- Quad 模式需先向 Flash 写使能,开启四线功能
- 空闲周期不足会导致读数据出错,根据 Flash 手册调整 WAITCYC
- CS 引脚必须严格控制拉低 / 拉高时序,避免帧截断
- 不支持 XIP 功能,不可用于程序片上运行
APM32F411 QSPI 接口设计灵活、配置直观,通过标准 / 双 / 四线三种模式可兼顾兼容性与传输速率,完全满足外接 QSPI Flash 的存储扩展需求。按照 AN1108 应用笔记的初始化流程、模式配置与实操代码,可快速完成驱动开发,配合中断 / DMA 还能进一步提升系统效率。
阅读全文
425