秦臻 張鑫泉




摘? 要:可變靜態存儲控制器(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—),女,漢族,山東濟南人,碩士研究生在讀,研究方向:電子與通信工程。