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