一,FSMC簡(jiǎn)
FSMC,即靈活的靜態(tài)存儲(chǔ)控制器,能夠與同步或異步存儲(chǔ)器和 16 位 PC 存儲(chǔ)器卡連接,
STM32 的 FSMC 接口支持包括 SRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存儲(chǔ)器。
二,FSMC存儲(chǔ)塊
STM32F767的FMC將外部存儲(chǔ)器劃分為6個(gè)固定大小的256M的存儲(chǔ)區(qū)域,如下圖
如圖:
FSMC分為4塊,每塊256M字節(jié)又被劃分為4*64,即四個(gè)片選
NOR / PSRAM使用塊1,共256M
NAND閃存使用塊2,3,共512M
PC卡使用塊4,共256M
三,存儲(chǔ)塊1(Bank1)寄存器
STM32 的 FSMC 存儲(chǔ)塊 1(Bank1)被分為 4 個(gè)區(qū),每個(gè)區(qū)管理 64M 字節(jié)空間,每個(gè)區(qū)都
有獨(dú)立的寄存器對(duì)所連接的存儲(chǔ)器進(jìn)行配置。Bank1 的 256M 字節(jié)空間由 28 根地址線
(HADDR[27:0])尋址。
這里 HADDR 是內(nèi)部 AHB 地址總線,其中HADDR[25:0]來(lái)自外部存儲(chǔ)器地址
FSMC_A[25:0],而 HADDR[26:27]對(duì) 4 個(gè)區(qū)進(jìn)行尋址。
我們要特別注意 HADDR[25:0]的對(duì)應(yīng)關(guān)系:
當(dāng) Bank1 接的是 16 位寬度存儲(chǔ)器的時(shí)候:HADDR[25:1]對(duì)應(yīng) FSMC-A[24:0]。
當(dāng) Bank1 接的是 8 位寬度存儲(chǔ)器的時(shí)候:HADDR[25:0]對(duì)應(yīng)FSMC_A[25:0]。
比如外部存儲(chǔ)器接到FMC_NE1上面,那么外部存儲(chǔ)器的地址為HADDR[26:27] +FMC_A[25:0]=0x60000000+FMC_A[25:0]。
注:不論外部接 8 位/16 位寬設(shè)備,F(xiàn)SMC_A[0] 永遠(yuǎn)接在外部設(shè)備地址 A[0] 。
HADDR[25:0] 位包含外部存儲(chǔ)器地址,由于 HADDR 為字節(jié)地址,而存儲(chǔ)器按字尋址,所以根據(jù)存儲(chǔ)器數(shù)據(jù)寬度不同,
實(shí)際向存儲(chǔ)器發(fā)送的地址也將有所不同,如圖:
一個(gè)地址對(duì)應(yīng)一個(gè)字節(jié)的數(shù)據(jù),所以64M字節(jié)的地址量,就可以表示64x8=512M的數(shù)據(jù),也就是說(shuō)外部?jī)?chǔ)存器的最大容量為512M.
當(dāng) Bank1 接的是 16 位寬度存儲(chǔ)器的時(shí)候:HADDR[25:1]對(duì)應(yīng) FSMC-A[24:0]。
:一個(gè)地址就可以操作一個(gè)字(16位)的數(shù)據(jù)那么就不需要26根地址線了,HADDR[0]就沒(méi)有用到,所以: HADDR[25:1] = FMC _A[24:0] 。
即:
0000對(duì)應(yīng)FSMC_A[0]=0 (2字節(jié))
0010對(duì)應(yīng)FSMC_A[0]=1 (2字節(jié))
0100對(duì)應(yīng)FSMC_A[1]=1 (2字節(jié))
所以對(duì)應(yīng)關(guān)系需要除以2,內(nèi)部右移一位對(duì)齊
此時(shí)最低位沒(méi)用,訪問(wèn)最低位需要使用UB/LB
當(dāng) Bank1 接的是 8 位寬度存儲(chǔ)器的時(shí)候:HADDR[25:0]對(duì)應(yīng) FSMC_A[25:0]。
:一個(gè)地址正好可以操作一個(gè)字節(jié)(8位)的數(shù)據(jù),需要26根地址線:那么 HADDR[25:0] = FMC _A [25:0]。
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7530瀏覽量
164407 -
STM32
+關(guān)注
關(guān)注
2273文章
10926瀏覽量
357774 -
FSMC
+關(guān)注
關(guān)注
0文章
55瀏覽量
38224
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
淺析STM32 FSMC操作LCD的過(guò)程
![淺析<b class='flag-5'>STM32</b> <b class='flag-5'>FSMC</b>操作LCD的過(guò)程](https://file1.elecfans.com/web2/M00/8D/7F/wKgaomS7evOAYa5UAAEvy6-TMx8967.jpg)
FSMC_Bank1和FSMC_Bank1E沒(méi)有定義是怎么回事?
stm32的sdio接口中的"數(shù)據(jù)通道"和"命令通道",通道兩個(gè)字該怎么理解
STM32的FSMC和FMC有什么區(qū)別?
如何使用STM32的FSMC接口驅(qū)動(dòng)LCD屏
基于FPGA和STM32的FSMC通信
STM32單片機(jī)的FSMC對(duì)TFT的驅(qū)動(dòng)
![<b class='flag-5'>STM32</b>單片機(jī)的<b class='flag-5'>FSMC</b>對(duì)TFT的驅(qū)動(dòng)](https://file.elecfans.com/web1/M00/7E/63/pIYBAFwQrqSAU1xyAAB1C7FG5iY252.jpg)
STM32 FSMC驅(qū)動(dòng)TFTLCD 難點(diǎn)解析資料下載
![<b class='flag-5'>STM32</b> <b class='flag-5'>FSMC</b>驅(qū)動(dòng)TFTLCD <b class='flag-5'>難點(diǎn)</b>解析資料下載](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
為什么可以利用FSMC來(lái)使用外部RAM
AN5507_STM32H7 系列閃存接口中的循環(huán)冗余校驗(yàn)
![AN5507_<b class='flag-5'>STM32</b>H7 系列閃存<b class='flag-5'>接口中</b>的循環(huán)冗余校驗(yàn)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
AN3241 如何應(yīng)用STM32F10XX的FSMC接口驅(qū)動(dòng)QVGA_TFT-LCD屏幕
![AN3241 如何應(yīng)用<b class='flag-5'>STM32</b>F10XX的<b class='flag-5'>FSMC</b><b class='flag-5'>接口</b>驅(qū)動(dòng)QVGA_TFT-LCD屏幕](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
TFT LCD與FSMC的硬件連接大容量STM32F10xxx FSMC接口
![TFT LCD與<b class='flag-5'>FSMC</b>的硬件連接大容量<b class='flag-5'>STM32</b>F10xxx <b class='flag-5'>FSMC</b><b class='flag-5'>接口</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論