秦臻 张鑫泉
摘 要:可变静态存储控制器(FSMC)是STM32系列中的一种存储器扩展方式,FSMC可以根据不同系统的设计应用需求,使其可以在外部连接不同类型的大容量静态存储器,依据外部存储器所独具的特色,满足不同的需求,例如静态随机访问存储器(SRAM),只读存储器(ROM),NOR Flash/NAND Flash,PSRAM等。文章从NOR Flash入手探究其与FSMC的连接通信。
关键词:FSMC;STM32;静态存储器;NOR Flash
中图分类号:TP368 文献标识码:A文章编号:2096-4706(2021)22-0048-03
Abstract: Variable static memory controller (FSMC) is a memory expansion mode in STM32 series. FSMC can connect different types of high-capacity static memory externally according to the design and application requirements of different systems, and meet different requirements according to the unique characteristics of external memory, such as static random access memory (SRAM), read only memory (ROM), NOR Flash/NAND Flash, PSRAM, etc. Starting with NOR Flash, this paper explores its connection and communication with FSMC.
Keywords: FSMC; STM32; static memory; NOR Flash
0 引 言
闪存设备主要由闪存介质、闪存控制器两部分构成,根据制作工艺,闪存存储器可 以分为NOR型和NAND型两种。前者是按位进行访问,具有可靠性高、随机读取速度快的优势,但擦除和写操作速度较慢、可用的容量小,主要用于存储可执行的程序代码。NAND型闪存存储器的容量相对前者大,适合数据的存储。
NOR Flash是非易失存储器,可以对称为块的存储模块单元进行擦写和再编程。任何Flash器件的写入操作只能在空或已擦除的单元内进行,且在进行写入操作之前必须先有擦除步骤。
1 应用技术介绍
1.1 基本介绍
STM32是意法半导体公司推出的基于ARM内核Cortex-M3的32位微处理控制器系列,该系列的微处理器是专为功耗较低且价格比较敏感的应用所设计,该系列微处理器在能耗和处理速度方面的优势突出,通过采用Thumb-2高密度指令集,对系统存储要求有所降低,基于此内核所设计的STM32系列的性价比使其可以应用于更广泛的应用领域。FSMC作为一种新型的存储器扩展技术,可以进行不同类型大容量静态存储器的扩展。
FSMC(可变静态存储控制器——Flexible Static Memory Controller),是STM32系列中内部集成256 KB以上Flash。“可变”是由于通过对特殊功能寄存器的设置。
1.2 技术优势
FSMC具备可以支持多种静态存储器类型的技术优势,STM32可以通过FSMC实现与ROM、NOR Flash、SRAM和NAND Flash等存储器的引脚直接连接,FSMC机制不仅支持多种数据宽度的异步读/写操作,且支持对NOR/PSRAM/NAND存储器的同步突发访问方式;支持同时扩展多种存储器以及更广泛的存储器型号,且支持代码从FSMC扩展的外部存储器中直接运行。
2 设计方案及具体功能
本项目主要完成的内容是使用客户指定的BGA模块,实现BGA模块中放入的S29GL芯片读取和写入功能,能够将该芯片的数据保存在指定的存储芯片中,并通过上位机读出,并且能够将数据从指定的存储芯片传输给BGA模块中放入的芯片,实现芯片中数据的复制。本方案的设计思路图如图1所示。
本方案主要采用STM32F407、W25Q64JVSSIQ、USB TO TTL模块和BGA48座模块(S29GL064S)。S29GL064S芯片作为读取目标,有64 MB的内存,可以进行8位或者16位的输入输出。采用64 MB的内存,单片机相连的常用存储器,故选用现有内存W25Q64JVSSIQ,将读取到的BGA48模块的数据存储在此芯片中,根据需要发给上位机或者BGA48模块。USB TO TTL模块用来连接STM32F409和上位机,数据通过UART从STM32F407ZGT输出给USB TO TTL模块,再将数据处理为上位机能接受的形式。STM32F407ZGT作为主控芯片,负责与S29GL064S和W25Q64JVSSIQ之间的数据传输,SPI传输与W25Q64JVSSIQ芯片相连,用UART传输数据给上位机。
3 硬件设计
硬件部分供电由USB得到5 V电压,再经过USB TO TTL模块,通过稳压芯片,输出稳定的3.3 V电压,且USB连接后可与STM32F407芯片通过USART传输数据。
STM32F407芯片内部有FSMC,不仅支持多种数据宽度的异步读/写操作,而且有支持对NOR Flash的同步突发访问方式。将BGA48模块与STM32的FSMC连接。
FSMC的地址线和数据线连接BGA48模块的数据输入输出引脚和地址输入引脚,将BYTE#输入为高电平,使之输出16位的数据,使用两个按键控制数据在BGA模块和W25Q64芯片中传输,使用两个LED小灯的闪烁状态表示正在进行的读取/写入操作。当按下右侧按钮时,数据从BGA模块中传输给W25Q64中,传输过程中能看到按钮对应的LED常亮,传输完成后,LED熄灭。当按下左侧按钮时,数据从W25Q64传输个BGA模块,传输过程中能看到对应的LED灯常亮,传输完成后,LED灯熄灭。
4 软件操作
4.1 上位机概述
上位机工作过程如下文所述:
(1)启动BGA48模块实现读取/写入功能,将数据从FLASH芯片W25Q64中传输到BGA48中或者将数据从BGA48传输到W25Q64。
(2)上位机直接读取BGA48或者W25Q64中的数据,并保存在C盘的FlashReadTxt文件夹中,并分别保存在对应的ReadInnerFlash和ReadNorFlash文件夹下,以当时读取的时间为文件名。
(3)直接从上位机中将数据写入到BGA模块中。
4.2 功能介绍
串口配置:波特率:115 200,数据位:8 bit,停止位:1 bit,奇偶校验位:无。选择对应的COM口后,点击“打开串口”按钮,上位机显示识别到的W25Q64和S29GL064的芯片型号。
点击“FLASH->BGA”按钮,上位机将控制单片机将数据从W25Q64中传输给BGA模块,同时进度条将记录传输进度,以及此次操作内容,并且右下角的读取LED会与单片机的LED对应,显示红色,传输完成后会变绿,并弹出提示完成的窗口。
点击“BGA->FLASH”按钮,上位机将控制单片机将数据从BGA中传输给W25Q64芯片,同时进度条将记录传输进度,以及此次操作内容,并且右下角的写入LED会与单片机的LED对应,显示红色,传输完成后会变绿,并弹出提示完成的窗口。
点击“FLASH->上位机”按钮,上位机将读取W25Q64中的数据,同时进度条将记录传输进度,以及此次操作内容,并且右下角的读取LED会与单片机的LED对应,显示红色,传输完成后会变绿,如图2所示,中央的界面会显示读取到的对应地址下的数据,然后弹出提示完成的窗口。
点击“BGA->上位机”按钮,上位机将读取BGA模块中的数据,同时进度条将记录传输进度,以及此次操作内容,并且右下角的写入LED会与单片机的LED对应,显示红色,传输完成后会变绿,中央的界面会显示读取到的对应地址下的数据,然后弹出提示完成的窗口。
点击“上位机->BGA”按钮,选取想要让BGA写入的文件,点击“打开”或者双击该文件,单片机就会将该文件数据写入到BGA模块中,同时进度条将记录传输进度,以及此次操作内容,并且右下角的写入LED会与单片机的LED对应,显示红色,传输完成后会变绿,并弹出提示完成的窗口。
4.3 串口通信协议
通讯方式:上下位机采用主从式通讯,上位机给下位机发送控制命令,下位机接收并执行完毕后立刻向上位机返回下位机当前的数据及状态。通讯格式及命令内容如表1、表2所示。
传输协议:
上位机发送(下位机接收):
下位机发送(上位机接收):
4.4 存储芯片FLASH的数据写入和读取
数据写入和读取界面截图如图3所示。
5 实验遇到的问题及解决措施
本项目在进行设计实验过程中遇到的主要问题是在使用BGA48时,BGA48的pin46和pin27发生短路,经过多次排错,发现芯片和座的引脚不对应。经过对比厂家发的原理图、实际PCB上芯片引脚的图片的对比,结果发现,厂家芯片的2个VSS与BGA的pin45和pin28相连,实际上VSS相连的是pin46和pin27,给出的解决办法是重新修改PCB板。
6 结 论
首先完成设计方案的设计,硬件部分使用STM32F407芯片为主控芯片,使用W25Q64为存储BGA模块数据的存储芯片,使用USB TO TTL模块作为上位机与单片机传输媒介,同时USB TO TTL连接USB成为电源。软件部分使用QT编写上位机,上位机主要实现的功能为控制单片机完成BGA和存储芯片之间的数据传输,并且能够读取BGA和存储芯片中的数据,以及将指定数据写入到BGA中。
STM32作为新一代ARM Cortex-M3核处理器,其卓越的性能和功耗控制能适用于广泛的应用领域。本文实验用STM32F407为主控芯片,且FMSC具有高度灵活性,通过实现STM32的FSMC和NOR Flash的对接,使用指定的BGA,将模块中的S29GL的读写功能,而且可以将芯片中的数据保存在指定的存储芯片,实现数据的复制。
参考文献:
[1] 潘辉.STM32-FSMC机制的NOR Flash存储器扩展技术 [J].单片机与嵌入式系统应用,2009(10):31-34.
[2] 石亮.闪存存储系统的性能优化研究 [D].合肥:中国科学技术大学,2013.
[3] 陆游游,舒继武.闪存存储系统综述 [J].计算机研究与发展,2013,50(1):49-59.
[4] 汤莉莉,黄伟.基于STM32的FSMC接口驱动TFT彩屏设计 [J].现代电子技术,2013,36(20):139-141+144.
[5] 王江涛,赖文豫,孟小峰.闪存数据库:现状、技术与展望 [J].计算机学报,2013,36(8):1549-1567.
作者简介:秦臻(1998—),女,汉族,山东济南人,硕士研究生在读,研究方向:电子与通信工程。