• 正文
  • 相关推荐
申请入驻 产业图谱

APM32F411 QSPI 应用实战—— 标准 / 双 / 四线 SPI Flash 驱动全解

04/23 13:39
425
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

嵌入式大容量存储扩展场景中,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 段组成,可按需配置使能:

  1. 指令段:8bit 为主,支持 4/16bit,单线 / 双线 / 四线发送
  2. 地址段:4~60bit(4 的倍数),配置发送模式与长度
  3. 空闲字节段:WAITCYC 配置 0~31 个时钟周期,给 Flash 准备数据时间
  4. 数据段:实际读写数据,模式跟随帧格式配置

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 初始化核心步骤

  1. 开启 GPIO 与 QSPI 时钟(AHB2)
  2. 配置 GPIO 复用功能与电气参数
  3. 配置时钟分频:CLKDIV 为偶数,2~65534 可调
  4. 配置帧格式、数据位宽(8bit)、时钟极性 / 相位
  5. 使能 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 官方提醒)

  1. 配置修改必须先失能 QSPI,否则寄存器无法写入
  2. BK1 与 BK2 引脚复用功能不同,接错会完全不通信
  3. Quad 模式需先向 Flash 写使能,开启四线功能
  4. 空闲周期不足会导致读数据出错,根据 Flash 手册调整 WAITCYC
  5. CS 引脚必须严格控制拉低 / 拉高时序,避免帧截断
  6. 不支持 XIP 功能,不可用于程序片上运行

APM32F411 QSPI 接口设计灵活、配置直观,通过标准 / 双 / 四线三种模式可兼顾兼容性与传输速率,完全满足外接 QSPI Flash 的存储扩展需求。按照 AN1108 应用笔记的初始化流程、模式配置与实操代码,可快速完成驱动开发,配合中断 / DMA 还能进一步提升系统效率。

相关推荐