查看: 3474|回复: 0

利用QuadSPI外扩串行NOR Flash的实现

[复制链接]
发表于 2017-10-9 14:12:24 | 显示全部楼层 |阅读模式
前言
STM32提供了灵活多样的外扩存储器的访问实现。本文将介绍如何利用QSPI(QuadSPI) 外扩串行NOR Flash存储器的实现过程。首先对QSPI接口功能特性进行介绍,然后分别介绍硬件设计和软件开发。并基于STM32CubeM提供访问MICRON N25Q128A13EF840F的实现参考。
一 实现环境
开发板:STM32F469G-DISCO
开发库:STM32CubeF4 v1.16.0
STM32CubeMX: v4.22.0
集成开发环境:IAR v7.70.1.11486
实现过程在STM32F469I-DISCO板上展开,利用板上已有的串行NORFlash存储器(MICRON N25Q128A13EF840F),呈现整个开发环节。在本文中,首先根据QSPI接口,介绍QSPI与外扩串行存储器的硬件连接。另外,Cube软件包中包含QSPI实例,本文对库中实现的QSPI例不做讨论,读者可参考这些QSPI例程进行设计。本文围绕由STM32CubeMX生成的工程,介绍如何实现对外扩串行NOR Flash存储器的访问。

二 QSPI介绍
在呈现QSPI访问外扩Flash的实例前, 需要对QSPI有一定的了解,在此对QSPI进行简短的介绍。更多内容请参考AN4760
QSPI(Quad-SPI)支持四线串行访问形式。同时,QSPI支持传统SPI和Dual-SPI模式,Dual-SPI模式支持两线串行访问。与FMC/FSMC比较,QSPI支持更低成本、更小封装外部串行Flash存储器,更少的IO引脚占用,有效减少PCB面积,降低PCB设计复杂度。
下表是QSPI在不同系列STM32产品线的支持情况(仅部分罗列,未涵盖所有支持型号)。



QSPI接口提供了灵活可配置的5个阶段,如下图所示(时序图根据配置不同可能存在差异)。分别是命令阶段、地址阶段、复用字节阶段、Dummy阶段和数据阶段。可以根据外扩Flash中命令时序对不同阶段进行配置。后续会以实例进行呈现。更多内容请参考AN4760



QSPI支持三种模式,分别是:
间接模式  所有操作通过QSPI寄存器实现,类似于传统SPI,可以使用阻塞模式、中断模式或者DMA模式进行读写等访问。本文中提供的实现例为间接模式下的实现。
状态轮询模式 接口自动轮询指定寄存器,直到回读寄存器内容与指定条件匹配。可应用于状态检测,从而实现忙等待等效果。本文不对此模式进行介绍,应用实现可参考Cube软件包中QSPI例程。
存储器映射模式 外扩Flash被视为内部存储器,支持AHB主器件直接访问,CPU能够直接运行位于QSPI存储器的执行代码。内部系统架构如下图所示(以STM32F469/F479为例)。本文不对此模式进行介绍,应用实现可参考Cube软件包中QSPI例程QSPI_ExecuteInPlace。



三 QSPI外扩串行Flash的实现
3.1 串行Flash介绍
以MICRON N25Q128A13EF840F为例,更多细节请参考存储器手册。N25Q128A13EF840F引脚图、时序图和电气参数来源于N25Q128A13 手册文档。
支持协议: SPI, Dual I/O(对应Dual-SPI), Quad I/O(对应Quad-SPI)
支持访问模式:单线访问、双线访问、四线访问,得益于QSPI接口的灵活可配性,三种访问模式全部支持。
供电电压范围:2.7 ~ 3.6V
最大时钟频率:108MHz
存储空间: 128Mb (16MB)
器件引脚示意图如下所示。由两根电源引脚和六根QSPI信号线构成。



下表为存储器N25Q128A13xxx命令(未列出全部命令)。通过下表可知,存储器提供了灵活的访问实现形式,结合同样灵活可配置的QSPI接口,能够实现存储器命令全支持。本文仅提供设计思路,呈现了部分命令在QSPI上的实现。



3.2 硬件设计
涉及到的信号线少,硬件设计简单,只需直接将QSPI的六根信号线与存储器连接即可。考虑到可测性,可以增加串行电阻或者测试点。硬件电路图如下所示。



QSPI接口PCB设计遵循如下几点,更多硬件设计内容请参考AN4488。
a. 线阻 50Ω± 10%
b. 最大线长 <120mm
c. 避免在不同信号层走信号线
d. 时钟线至少离其他信号线3倍线宽距离
e. 数据信号线长差 ≤10mm
f. 避免时钟线采用蛇形走线,同时尽量减少数据线上过孔。
3.3 软件开发流程



3.4 软件实现例
在环境搭建完成后,就可以利用STM32CubeMX根据硬件连接情况,进行QSPI配置,获取IAR工程。具体软件实现流程如下。



四 小结
STM32的QuadSPI接口灵活可配,对于命令阶段、地址阶段、复用字节阶段、Dummy阶段和数据阶段都可以进行配置。基于这种灵活性,能够实现市面上SPI、Dual IO、Quad IO的串行Flash支持。出于简化考虑,QSPI支持的中断访问及DMA访问等更多功能没有在本文进行介绍,更多实现可以参考ST提供的Cube软件包中的QSPI例程。另外,不同厂家的串行Flash命令及操作实现略有差异,具体以采用的Flash文档描述为准。

相关文档
AN4760  Quad-SPI (QSPI) interface onSTM32 microcontrollers
AN4488  Getting started withSTM32F4xxxx MCU hardware development
RM0386  STM32F469xx and STM32F479xxadvanced ARM®-based 32-bit MCUs
更多有关QSPI配置及代码解读的内容细节可添加下方技术QQ群进行下载阅读。
技术QQ群:258644475

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表