STM32 FSMC學(xué)習(xí)筆記
FSMC 包括4個(gè)模塊:
(1)AHB接口(包括FSMC配置寄存器)
(2)NOR閃存和PSRAM控制器(驅(qū)動(dòng)LCD的時(shí)候LCD就好像一個(gè)PSRAM的里面只有2個(gè)16位的存儲(chǔ)空間,一個(gè)是DATA RAM 一個(gè)是CMD RAM)
(3)NAND閃存和PC卡控制器
(4)外部設(shè)備接口
每個(gè)模塊通過片選信號(hào)控制
--------------------------------------------------------------------------------------------------
硬件電路(這里給出的是非復(fù)用連接)
可以這樣接
地址線A0 接 RS
NE接 CS
NEW –WR
NOE –RD
FSMC與外設(shè)連接好以后,就等于對(duì)于使用者屏蔽了對(duì)外設(shè)備的具體操作,只要對(duì)應(yīng)類型的映射地址空間寫入數(shù)據(jù),這些數(shù)據(jù)+地址就會(huì)被自動(dòng)翻譯,并寫入外圍存儲(chǔ)設(shè)備。
對(duì)于寫LCD來說,STM官方庫里有一些常用寫法:
#define LCD_BASE
#define LCD
void LCD_WriteReg(u8 LCD_Reg,u16 LCD_RegValue)
{
}
u16 LCD_ReadReg(u8 LCD_Reg)
{
}
當(dāng)然也可以自己操作,完全在于自己。
--------------------------------------------------------------------------------------------------
1位寬:
主要是AHB到NOR/PSRAM位寬的,比如如果AHB設(shè)為32位,NOR為16位,他會(huì)分兩次傳輸
2:設(shè)置地址
手冊(cè)是這樣寫的:在NOR/PSRAM模式下HADDR[27:26](HADDR are internal AHB address lines that are translated to external memory)用來片選NOR/PSRAM的四個(gè)分區(qū)。A[25:0]是地址線,因?yàn)镠ADDR是字節(jié)地址但是存取其按字編址,所以根據(jù)位寬的不同由以下情況。
(1)當(dāng)存儲(chǔ)數(shù)據(jù)設(shè)為8位時(shí),
(2)當(dāng)存儲(chǔ)數(shù)據(jù)設(shè)為16位時(shí),
(存儲(chǔ)大小 (64MB / 2) * 16 = 512MB)
注意:在16位外部存儲(chǔ)寬度下,F(xiàn)SMC內(nèi)部會(huì)用A[25:1]去生成A[24:0]。不論8位或16位的情況,F(xiàn)SMC_A[0]必需連接外部存儲(chǔ)的A[0]。
--------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
FSMC的好處就是你一旦設(shè)置好之后,WR、RD、DB0-DB15這些控制線和數(shù)據(jù)線,都是FSMC自動(dòng)控制的。打個(gè)比方,當(dāng)你在程序中寫到:
(volatile unsigned short int*)(0x60000000)=val;
那么FSMC就會(huì)自動(dòng)執(zhí)行一個(gè)寫的操作,其對(duì)應(yīng)的主控芯片的WE、RD這些腳,就會(huì)呈現(xiàn)出寫的時(shí)序出來(即WE=0,RD=1),數(shù)據(jù)val的值也會(huì)通過 DB0-15自動(dòng)呈現(xiàn)出來(即FSMC-D0:FSMC-D15=val)。地址0x60000000會(huì)被呈現(xiàn)在數(shù)據(jù)線上(即A0-A25=0,地址線的對(duì)應(yīng)最麻煩,要根據(jù)具體情況來,好好看看FSMC手冊(cè))。
(volatile unsigned short int*)(0x60020000)=val;
這個(gè)時(shí)候,A16在執(zhí)行其他FSMC的同時(shí)會(huì)被拉高,因?yàn)锳0-A18要呈現(xiàn)出地址0x60020000。0x60020000里面的Bit17=1,就會(huì)導(dǎo)致A16為1。
評(píng)論