STM32F103X datasheet學習筆記---Flexible static memory controller (FSMC)

1.前言

FSMC模塊可以與同步或異步存儲器和16位PC存儲器卡接口,它的主要做用是:編程

  • 將AHB傳輸信號轉換到適當的外部設備協議 
  • 知足訪問外部設備的時序要求

全部的外部存儲器共享控制器輸出的地址、數據和控制信號,每一個外部設備能夠經過一個惟一的片選信號加以區分。FSMC在任一時刻只訪問一個外部設備。異步

2.FMSC的主要功能

  • 與具備靜態存儲器接口的器件接口,包括:

─ 靜態隨機存儲器(SRAM)spa

─ 只讀存儲器(ROM)3d

─ NOR閃存blog

─ PSRAM(4個存儲器塊)接口

  • 兩個NAND閃存塊,支持硬件ECC並可檢測多達8K字節數據
  • 16位的PC卡兼容設備
  • 支持對同步器件的成組(Burst)訪問模式,如NOR閃存和PSRAM
  • 8或16位數據總線
  • 每個存儲器塊都有獨立的片選控制
  • 每個存儲器塊均可以獨立配置
  • 時序可編程以支持各類不一樣的器件:

─ 等待週期可編程(多達15個週期)同步

─ 總線恢復週期可編程(多達15個週期)軟件

─ 輸出使能和寫使能延遲可編程(多達15週期)配置

─ 獨立的讀寫時序和協議,可支持寬範圍的存儲器和時序硬件

  • PSRAM和SRAM器件使用的寫使能和字節選擇輸出
  • 將32位的AHB訪問請求,轉換到連續的16位或8位的,對外部16位或8位器件的訪問
  • 具備16個字,每一個字32位寬的寫入FIFO,容許在寫入較慢存儲器時釋放AHB進行其它操做。

注:[1]若是當前FIFO正在被佔用,此時其餘的FIFO操做將等待,直到當前的FIFO操做完成

       [2]一般在系統復位或上電時,應該設置好全部定義外部存儲器類型和特性的FSMC寄存器,並保持它們的內容不變;固然,也能夠在任什麼時候候改變這些設置。

3. FMSC框圖

圖 FMSC框圖

FSMC包含四個主要模塊:

● AHB接口(包含FSMC配置寄存器)

● NOR閃存和PSRAM控制器
● NAND閃存和PC卡控制器

● 外部設備接口

4. AHB接口

AHB接口爲內部CPU和其它總線控制設備訪問外部靜態存儲器提供了通道。 AHB操做被轉換到外部設備的操做。

當選擇的外部存儲器的數據通道是16或8位時,在AHB上的32位數據會被分割成連續的16或8位的操做。 AHB時鐘(HCLK)是FSMC的參考時鐘。

4.1 支持的存儲器和操做

  • 通常的操做規則

請求AHB操做的數據寬度能夠是8位、16位或32位,而外部設備則是固定的數據寬度,此時須要保障實現數據傳輸的一致性。 所以,FSMC執行下述操做規則:

● AHB操做的數據寬度與存儲器數據寬度相同:無數據傳輸一致性的問題。

● AHB操做的數據寬度大於存儲器的數據寬度:此時FSMC將AHB操做分割成幾個連續的較小數據寬度的存儲器操做,以適應外部設備的數據寬度。 
● AHB操做的數據寬度小於存儲器的數據寬度: 依據外部設備的類型,異步的數據傳輸有可能不一致。

─ 與具備字節選擇功能的存儲器(SRAM、ROM、PSRAM等)進行異步傳輸時,FSMC執行讀寫操做並經過它的字節通道BL[1:0]訪問正確的數據。

─ 與不具備字節選擇功能的存儲器(NOR和16位NAND等)進行異步傳輸時,即須要對16位寬的閃存存儲器進行字節訪問;顯然不能對存儲器進行字節模式訪問(只容許16位的數據傳輸),所以:

  a. 不容許進行寫操做

  b. 能夠進行讀操做(控制器讀出完整的16位存儲器數據,只使用須要的字節)。

  •  配置寄存器

FSMC由一組寄存器進行配置

 5. 外部設備地址映像

 

 圖 FMSC存儲BANK

從FSMC的角度看,能夠把外部存儲器劃分爲固定大小爲256M字節的四個存儲塊:

  • 存儲塊1用於訪問最多4個NOR閃存或PSRAM存儲設備。這個存儲區被劃分爲4個NOR/PSRAM區並有4個專用的片選。
  • 存儲塊2和3用於訪問NAND閃存設備,每一個存儲塊鏈接一個NAND閃存。
  • 存儲塊4用於訪問PC卡設備 每個存儲塊上的存儲器類型是由用戶在配置寄存器中定義的。

 5.1 NOR和PSRAM地址映像

  • HADDR[27:26]位用於選擇四個存儲塊之一

 

注:(1) HADDR是須要轉換到外部存儲器的內部AHB地址線。

表 NOR/PSRAM存儲塊選擇

  • HADDR[25:0]包含外部存儲器地址

HADDR是字節地址,而存儲器訪問不都是按字節訪問,所以接到存儲器的地址線依存儲器的數據寬度有所不一樣

注:(1) 對於16位寬度的外部存儲器,FSMC將在內部使用HADDR[25:1]產生外部存儲器的地址FSMC_A[24:0]。不論外部存儲器的寬度是多少(16位或8位),FSMC_A[0]始終應該連到外部存儲器的地址線A[0]。

表 外部存儲器地址

5.2 NAND和PC卡地址映像

  • 三個存儲塊能夠用於NAND或PC卡的操做,每一個存儲塊被劃分爲下述訪問空間:

 

表 存儲器映像和時序寄存器

  • 對於NAND閃存存儲器,通用和屬性空間又能夠在低256K字節部分劃分爲3個區

表 NAND存儲塊選擇

注:數據區(通用/屬性空間的前64K字節區域)

      命令區(通用/屬性空間的第2個64K字節區域) 

     地址區(通用/屬性空間的第2個128K字節區域)

應用軟件使用這3個區訪問NAND閃存存儲器:

● 發送命令到NAND閃存存儲器:軟件只需對命令區的任意一個地址寫入命令便可。

● 指定操做NAND閃存存儲器的地址:軟件只需對地址區的任意一個地址寫入命令便可。由於一個NAND地址能夠有4或5個字節(依實際的存儲器容量而定),須要連續地執行對地址區的寫才能輸出完整的操做地址。

● 讀寫數據:軟件只需對數據區的任意一個地址寫入或讀出數據便可。 由於NAND閃存存儲器自動地累加其內部的操做地址,讀寫數據時沒有必要變換數據區的地址,即沒必要對連續的地址區操做。

 

6. NOR閃存和PSRAM控制器

//TODO

7. NAND閃存和PC卡控制器

//TODO

 

8.FSMC寄存器地址映象

//TODO

9. 參考文獻

相關文章
相關標籤/搜索