一,FSMC簡
FSMC,即靈活的靜態(tài)存儲控制器,能夠與同步或異步存儲器和 16 位 PC 存儲器卡連接,
STM32 的 FSMC 接口支持包括 SRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存儲器。
二,FSMC存儲塊
STM32F767的FMC將外部存儲器劃分為6個固定大小的256M的存儲區(qū)域,如下圖
如圖:
FSMC分為4塊,每塊256M字節(jié)又被劃分為4*64,即四個片選
NOR / PSRAM使用塊1,共256M
NAND閃存使用塊2,3,共512M
PC卡使用塊4,共256M
三,存儲塊1(Bank1)寄存器
STM32 的 FSMC 存儲塊 1(Bank1)被分為 4 個區(qū),每個區(qū)管理 64M 字節(jié)空間,每個區(qū)都
有獨立的寄存器對所連接的存儲器進行配置。Bank1 的 256M 字節(jié)空間由 28 根地址線
(HADDR[27:0])尋址。
這里 HADDR 是內部 AHB 地址總線,其中HADDR[25:0]來自外部存儲器地址
FSMC_A[25:0],而 HADDR[26:27]對 4 個區(qū)進行尋址。
我們要特別注意 HADDR[25:0]的對應關系:
當 Bank1 接的是 16 位寬度存儲器的時候:HADDR[25:1]對應 FSMC-A[24:0]。
當 Bank1 接的是 8 位寬度存儲器的時候:HADDR[25:0]對應FSMC_A[25:0]。
比如外部存儲器接到FMC_NE1上面,那么外部存儲器的地址為HADDR[26:27] +FMC_A[25:0]=0x60000000+FMC_A[25:0]。
注:不論外部接 8 位/16 位寬設備,FSMC_A[0] 永遠接在外部設備地址 A[0] 。
HADDR[25:0] 位包含外部存儲器地址,由于 HADDR 為字節(jié)地址,而存儲器按字尋址,所以根據存儲器數據寬度不同,
實際向存儲器發(fā)送的地址也將有所不同,如圖:
一個地址對應一個字節(jié)的數據,所以64M字節(jié)的地址量,就可以表示64x8=512M的數據,也就是說外部儲存器的最大容量為512M.
當 Bank1 接的是 16 位寬度存儲器的時候:HADDR[25:1]對應 FSMC-A[24:0]。
:一個地址就可以操作一個字(16位)的數據那么就不需要26根地址線了,HADDR[0]就沒有用到,所以: HADDR[25:1] = FMC _A[24:0] 。
即:
0000對應FSMC_A[0]=0 (2字節(jié))
0010對應FSMC_A[0]=1 (2字節(jié))
0100對應FSMC_A[1]=1 (2字節(jié))
所以對應關系需要除以2,內部右移一位對齊
此時最低位沒用,訪問最低位需要使用UB/LB
當 Bank1 接的是 8 位寬度存儲器的時候:HADDR[25:0]對應 FSMC_A[25:0]。
:一個地址正好可以操作一個字節(jié)(8位)的數據,需要26根地址線:那么 HADDR[25:0] = FMC _A [25:0]。
-
存儲器
+關注
關注
38文章
7492瀏覽量
163834 -
STM32
+關注
關注
2270文章
10900瀏覽量
356005 -
FSMC
+關注
關注
0文章
55瀏覽量
38151
發(fā)布評論請先 登錄
相關推薦
評論