大連做網(wǎng)站建設(shè)電腦編程培訓(xùn)學(xué)校哪家好
目錄
概述
1 認(rèn)識FSMC
1.1 應(yīng)用介紹
1.2?FSMC的主要功能
1.2.1?FSMC用途
1.2.2?FSMC的功能
2?FSMC的框架結(jié)構(gòu)
2.1?AHB 接口
2.1.1 AHB 接口的Fault
2.1.2?支持的存儲器和事務(wù)
2.2?外部器件地址映射
3 地址映射
3.1 NOR/PSRAM地址映射
3.2 NAND/PC卡地址映射
概述
本文主要介紹靈活的靜態(tài)存儲控制器 (FSMC)的基本概念,包括其支持主要器件,架構(gòu)特點,以及在MCU內(nèi)部AHB接口的特性,還介紹了其和外部NOR Flash,Nand flash, 以及SRAM的地址映射關(guān)系等內(nèi)容。
1 認(rèn)識FSMC
1.1 應(yīng)用介紹
FSMC 能夠連接同步、異步存儲器和 16 位 PC 存儲卡。其主要用途如下:
● 將 AHB 數(shù)據(jù)通信事務(wù)轉(zhuǎn)換為適當(dāng)?shù)耐獠科骷f(xié)議
● 滿足外部器件的訪問時序要求
所有外部存儲器共享地址、數(shù)據(jù)和控制信號,但有各自的片選信號。 FSMC 一次只能訪問一個外部器件。
總結(jié)如下:
1)所有的外部存儲器共享地址、數(shù)據(jù)和控制信號
2)通過片選CS使能各自的片選
3)FSMC每一次只能選擇一個器件
1.2?FSMC的主要功能
1.2.1?FSMC用途
FSMC 能夠連接同步、異步存儲器和 16 位 PC 存儲卡。其主要用途如下:
● 將 AHB 數(shù)據(jù)通信事務(wù)轉(zhuǎn)換為適當(dāng)?shù)耐獠科骷f(xié)議
● 滿足外部器件的訪問時序要求
所有外部存儲器共享地址、數(shù)據(jù)和控制信號,但有各自的片選信號。 FSMC 一次只能訪問一個外部器件。
1.2.2?FSMC的功能
FSMC 具有以下主要功能:
1)連接靜態(tài)存儲器映射的器件:
— 靜態(tài)隨機(jī)訪問存儲器 (SRAM)
— 只讀存儲器 (ROM)
— NOR Flash/OneNAND Flash
— PSRAM( 4 個存儲區(qū)域)
2)外圍器件支持
兩個帶有 ECC 硬件的 NAND Flash 存儲區(qū)域,可檢查多達(dá) 8 KB 的數(shù)據(jù)。16 位 PC 卡兼容設(shè)備,支持對同步器件( NOR Flash 和 PSRAM)的突發(fā)模式訪問;8 或 16 位寬的數(shù)據(jù)總線;每個存儲區(qū)域有獨立的片選控制,每個存儲區(qū)域可獨立配置。
3) 可對時序進(jìn)行編程,以支持各種器件:
— 等待周期可編程(最多 15 個時鐘周期)
— 總線周轉(zhuǎn)周期可編程(最多 15 個時鐘周期)
— 輸出使能和寫入使能延遲可編程(最多 15 個時鐘周期)
— 獨立的讀和寫時序和協(xié)議,以支持各種存儲器和時序
4)其他功能
● 寫使能和字節(jié)通道選擇輸出,可配合 PSRAM 和 SRAM 器件使用
● 將 32 位的 AHB 事務(wù)轉(zhuǎn)換為針對外部 16 位或 8 位器件進(jìn)行的連續(xù) 16 位或 8 位訪問。
● 用于寫入的 FIFO, 2 字長(對于 STM32F42x 和 STM32F43x,為 16 字長),每個字為32 位寬,僅用于存儲數(shù)據(jù),而不存儲地址。因此,此 FIFO 僅會緩沖 AHB 批量寫事務(wù)。從而可對慢速存儲器執(zhí)行寫入操作后能快速釋放 AHB,以供其它操作使用。每次僅緩沖一個突發(fā)事務(wù):如果在有操作正在進(jìn)行時發(fā)生一個新的 AHB 突發(fā)事務(wù)或者一個單獨事務(wù),則 FIFO 將會清空。 FSMC 將插入等待周期,直至當(dāng)前存儲器訪問已完成)。
5)外部異步等待控制
定義外部器件類型和其特性的 FSMC 寄存器通常在啟動時進(jìn)行設(shè)置,并且在下次上電或復(fù)位前保持不變。但也可隨時更改這些設(shè)置。
2?FSMC的框架結(jié)構(gòu)
FSMC 包含四個主要模塊:
1)AHB 接口(包括 FSMC 配置寄存器)
2)NOR Flash/PSRAM 控制器
3)NAND Flash/PC 卡控制器
4)外部器件接口
2.1?AHB 接口
CPU 和其它 AHB 總線主設(shè)備可通過該 AHB 從設(shè)備接口訪問外部靜態(tài)存儲器。AHB 事務(wù)會轉(zhuǎn)換為外部器件協(xié)議。尤其是當(dāng)所選外部存儲器的寬度為 16 位或 8 位時, AHB中的 32 位寬事務(wù)將被劃分成多個連續(xù)的 16 或 8 位訪問。片選將在每次訪問時進(jìn)行切換。
2.1.1 AHB 接口的Fault
出現(xiàn)以下條件時, FSMC 將產(chǎn)生 AHB 錯誤:
● 讀取或?qū)懭胛词鼓艿?FSMC 存儲區(qū)域
● 在 FSMC_BCRx 寄存器中的 FACCEN 位復(fù)位時讀取或?qū)懭?NOR Flash 存儲區(qū)域
● 在輸入引腳 FSMC_CD( Card Presence Detection)為低電平時讀取或?qū)懭?PC 卡存儲區(qū)域此 AHB 錯誤的影響具體取決于嘗試進(jìn)行讀寫訪問的 AHB 主設(shè)備:
● 如果為 Cortex?-M4F CPU,則會生成硬性故障 (hard fault) 中斷
● 如果為 DMA,則會生成 DMA 傳輸錯誤,并會自動禁用相應(yīng)的 DMA 通道AHB 時鐘 (HCLK) 是 FSMC 的參考時鐘。
2.1.2?支持的存儲器和事務(wù)
1)通用事務(wù)規(guī)則
所請求的 AHB 事務(wù)傳輸大小可以是 8、 16 或 32 位,但訪問的外部器件具有固定的數(shù)據(jù)寬度。這可能會導(dǎo)致不一致的數(shù)據(jù)寬度。因此,必須遵循一些簡單的事務(wù)規(guī)則:
● AHB 事務(wù)數(shù)據(jù)寬度和存儲器數(shù)據(jù)寬度相等沒有任何問題。
● AHB 事務(wù)數(shù)據(jù)寬度大于存儲器寬度在此情況下, FSMC 會將 AHB 事務(wù)分為多個較小的連續(xù)存儲器訪問,以便符合外部數(shù)據(jù)寬度。
對具有字節(jié)選擇功能的器件( SRAM、 ROM、 PSRAM)進(jìn)行異步訪問。
a) FSMC 允許寫入事務(wù)通過其字節(jié)選擇通道 NBL[1:0] 訪問恰當(dāng)?shù)臄?shù)據(jù)
b) 允許讀取事務(wù)。會讀取所有存儲器字節(jié),并將丟棄無用的存儲器字節(jié)。 NBL[1:0]在讀取事務(wù)期間保持為低電平。
對不具有字節(jié)選擇功能的器件( 16 位 NOR 和 NAND Flash)進(jìn)行異步訪問。
當(dāng)請求對 16 位寬的 Flash 存儲器進(jìn)行字節(jié)訪問時會發(fā)生此情形。顯然,不能在字節(jié)模式下訪問此器件(只能針Flash 存儲器讀取或?qū)懭?16 位字),因此:
a) 不允許寫入事務(wù)
b) 允許讀取事務(wù)。會讀取所有存儲器字節(jié),并將丟棄無用的存儲器字節(jié)。 NBL[1:0]在讀取事務(wù)期間保持低電平。
2)配置寄存器
FSMC 可通過一個寄存器組進(jìn)行配置。有關(guān) NOR Flash/PSRAM 控制寄存器的詳細(xì)說明
2.2?外部器件地址映射
從 FSMC 的角度,外部存儲器被劃分為 4 個固定大小的存儲區(qū)域,每個存儲區(qū)域的大小為256 MB(請參見下圖 ):
● 存儲區(qū)域 1 可連接多達(dá) 4 個 NOR Flash 或 PSRAM 存儲器器件。此存儲區(qū)域被劃分為 4 個NOR/PSRAM 區(qū)域,帶 4 個專用片選信號。
● 存儲區(qū)域 2 和 3 用于連接 NAND Flash 器件(每個存儲區(qū)域一個器件)
● 存儲區(qū)域 4 用于連接 PC 卡設(shè)備
對于每個存儲區(qū)域,所要使用的存儲器類型由用戶在配置寄存器中定義。
3 地址映射
3.1 NOR/PSRAM地址映射
HADDR[27:26] 位用于從表 185 中所示的四個存儲區(qū)域之中選擇其中一個存儲區(qū)域。
NOR/PSRAM 存儲區(qū)域選擇
?HADDR[25:0] 包含外部存儲器地址。由于 HADDR 為字節(jié)地址,而存儲器按字尋址,所以根據(jù)存儲器數(shù)據(jù)寬度不同,實際向存儲器發(fā)送的地址也將有所不同,如下表所示。
外部存儲器地址
如果外部存儲器的寬度為 16 位, FSMC 將使用內(nèi)部的 HADDR[25:1] 地址來作為對外部存儲器的尋址地址
FSMC_A[24:00]。
無論外部存儲器的寬度為 16 位還是 8 位, FSMC_A[0] 都應(yīng)連接到外部存儲器地址 A[0]。
?
NOR Flash/PSRAM 的回卷支持
不支持同步存儲器的回繞突發(fā)模式。存儲器必須按未定義長度的線性突發(fā)模式進(jìn)行配置。
3.2 NAND/PC卡地址映射
在此情況下,有三個存儲區(qū)域,每個存儲區(qū)域分為各個存儲空間,如下表所示。
存儲器映射和時序寄存器
?對于 NAND Flash 存儲器,通用區(qū)和特性區(qū)存儲空間分為三個部分,均位于低位 256 KB 中(見下面的表):
● 數(shù)據(jù)區(qū)域(通用/特性存儲空間中的第一個 64 KB)
● 命令區(qū)域(通用/特性存儲空間中的第二個 64 KB)
● 地址區(qū)域(通用/特性存儲空間中的下一個 128 KB)
NAND 存儲區(qū)域選擇
應(yīng)用程序軟件使用這 3 個區(qū)域來訪問 NAND Flash 存儲器:
● 向 NAND Flash 存儲器發(fā)送命令:軟件可以向命令區(qū)域中的任意存儲器位置寫入命令值。
● 指定讀取或?qū)懭氲?NAND Flash 地址:軟件可以向地址區(qū)域中的任意存儲位置寫入地址值。由于地址的長度可以是 4 或 5 個字節(jié)(具體取決于實際存儲器大小),要指定完整的地址,需要對地址區(qū)域執(zhí)行多個連續(xù)寫入操作。
● 讀取或?qū)懭霐?shù)據(jù):軟件將從數(shù)據(jù)區(qū)域中的任意存儲器位置讀取數(shù)據(jù)值,或者向其中寫入數(shù)據(jù)值。
由于 NAND Flash 存儲器會自動遞增地址,所以在訪問連續(xù)存儲器位置時,無需遞增數(shù)據(jù)區(qū)域
的地址。
?