STM32单片机

文章数:1121 被阅读:2938180

账号入驻

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

最新更新时间:2017-10-08
    阅读数:

前言

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配置及代码解读的内容细节可点击左下方“阅读原文”进行下载阅读。


================================

往期话题链接:

1、如何在IAR中配置CRC参数

2、一个使用外部 SRAM 导致死机的案例

3、STM32L4中STOP2 模式下的漏电流分析

4、利用USB DFU实现IAP功能之演示讲解

5、获取ST MCU技术资料及相关支持的方式与途径



最新有关STM32单片机的文章

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved