前言 STM32提供了靈活多樣的外擴存儲器的訪問實現(xiàn)。本文將介紹如何利用QSPI(QuadSPI) 外擴串行NOR Flash存儲器的實現(xiàn)過程。首先對QSPI接口功能特性進行介紹,然后分別介紹硬件設計和軟件開發(fā)。并基于STM32CubeM提供訪問MICRON N25Q128A13EF840F的實現(xiàn)參考。 一 實現(xiàn)環(huán)境 開發(fā)板:STM32F469G-DISCO 開發(fā)庫:STM32CubeF4 v1.16.0 STM32CubeMX: v4.22.0 集成開發(fā)環(huán)境:IAR v7.70.1.11486 實現(xiàn)過程在STM32F469I-DISCO板上展開,利用板上已有的串行NORFlash存儲器(MICRON N25Q128A13EF840F),呈現(xiàn)整個開發(fā)環(huán)節(jié)。在本文中,首先根據(jù)QSPI接口,介紹QSPI與外擴串行存儲器的硬件連接。另外,Cube軟件包中包含QSPI實例,本文對庫中實現(xiàn)的QSPI例不做討論,讀者可參考這些QSPI例程進行設計。本文圍繞由STM32CubeMX生成的工程,介紹如何實現(xiàn)對外擴串行NOR Flash存儲器的訪問。
二 QSPI介紹 在呈現(xiàn)QSPI訪問外擴Flash的實例前, 需要對QSPI有一定的了解,在此對QSPI進行簡短的介紹。更多內(nèi)容請參考AN4760。 QSPI(Quad-SPI)支持四線串行訪問形式。同時,QSPI支持傳統(tǒng)SPI和Dual-SPI模式,Dual-SPI模式支持兩線串行訪問。與FMC/FSMC比較,QSPI支持更低成本、更小封裝外部串行Flash存儲器,更少的IO引腳占用,有效減少PCB面積,降低PCB設計復雜度。 下表是QSPI在不同系列STM32產(chǎn)品線的支持情況(僅部分羅列,未涵蓋所有支持型號)。
QSPI接口提供了靈活可配置的5個階段,如下圖所示(時序圖根據(jù)配置不同可能存在差異)。分別是命令階段、地址階段、復用字節(jié)階段、Dummy階段和數(shù)據(jù)階段。可以根據(jù)外擴Flash中命令時序對不同階段進行配置。后續(xù)會以實例進行呈現(xiàn)。更多內(nèi)容請參考AN4760。
QSPI支持三種模式,分別是: 間接模式 所有操作通過QSPI寄存器實現(xiàn),類似于傳統(tǒng)SPI,可以使用阻塞模式、中斷模式或者DMA模式進行讀寫等訪問。本文中提供的實現(xiàn)例為間接模式下的實現(xiàn)。 狀態(tài)輪詢模式 接口自動輪詢指定寄存器,直到回讀寄存器內(nèi)容與指定條件匹配。可應用于狀態(tài)檢測,從而實現(xiàn)忙等待等效果。本文不對此模式進行介紹,應用實現(xiàn)可參考Cube軟件包中QSPI例程。 存儲器映射模式 外擴Flash被視為內(nèi)部存儲器,支持AHB主器件直接訪問,CPU能夠直接運行位于QSPI存儲器的執(zhí)行代碼。內(nèi)部系統(tǒng)架構如下圖所示(以STM32F469/F479為例)。本文不對此模式進行介紹,應用實現(xiàn)可參考Cube軟件包中QSPI例程QSPI_ExecuteInPlace。
三 QSPI外擴串行Flash的實現(xiàn) 3.1 串行Flash介紹 以MICRON N25Q128A13EF840F為例,更多細節(jié)請參考存儲器手冊。N25Q128A13EF840F引腳圖、時序圖和電氣參數(shù)來源于N25Q128A13 手冊文檔。 支持協(xié)議: SPI, Dual I/O(對應Dual-SPI), Quad I/O(對應Quad-SPI) 支持訪問模式:單線訪問、雙線訪問、四線訪問,得益于QSPI接口的靈活可配性,三種訪問模式全部支持。 最大時鐘頻率:108MHz 存儲空間: 128Mb (16MB) 器件引腳示意圖如下所示。由兩根電源引腳和六根QSPI信號線構成。
下表為存儲器N25Q128A13xxx命令(未列出全部命令)。通過下表可知,存儲器提供了靈活的訪問實現(xiàn)形式,結合同樣靈活可配置的QSPI接口,能夠實現(xiàn)存儲器命令全支持。本文僅提供設計思路,呈現(xiàn)了部分命令在QSPI上的實現(xiàn)。
3.2 硬件設計 涉及到的信號線少,硬件設計簡單,只需直接將QSPI的六根信號線與存儲器連接即可。考慮到可測性,可以增加串行電阻或者測試點。硬件電路圖如下所示。
QSPI接口PCB設計遵循如下幾點,更多硬件設計內(nèi)容請參考AN4488。 a. 線阻 50Ω± 10% b. 最大線長 <120mm c. 避免在不同信號層走信號線 d. 時鐘線至少離其他信號線3倍線寬距離 e. 數(shù)據(jù)信號線長差 ≤10mm f. 避免時鐘線采用蛇形走線,同時盡量減少數(shù)據(jù)線上過孔。 3.3 軟件開發(fā)流程
3.4 軟件實現(xiàn)例 在環(huán)境搭建完成后,就可以利用STM32CubeMX根據(jù)硬件連接情況,進行QSPI配置,獲取IAR工程。具體軟件實現(xiàn)流程如下。
四 小結 STM32的QuadSPI接口靈活可配,對于命令階段、地址階段、復用字節(jié)階段、Dummy階段和數(shù)據(jù)階段都可以進行配置。基于這種靈活性,能夠實現(xiàn)市面上SPI、Dual IO、Quad IO的串行Flash支持。出于簡化考慮,QSPI支持的中斷訪問及DMA訪問等更多功能沒有在本文進行介紹,更多實現(xiàn)可以參考ST提供的Cube軟件包中的QSPI例程。另外,不同廠家的串行Flash命令及操作實現(xiàn)略有差異,具體以采用的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配置及代碼解讀的內(nèi)容細節(jié)可添加下方技術QQ群進行下載閱讀。 技術QQ群:258644475
|