<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32 FSMC學(xué)習筆記

STM32 FSMC學(xué)習筆記

作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò ) 收藏
FSMC全稱(chēng)“靈活靜態(tài)存儲器控制器”。
FSMC 包括4個(gè)模塊:

(1)AHB接口(包括FSMC配置寄存器)
(2)NOR閃存和PSRAM控制器(驅動(dòng)LCD的時(shí)候LCD就好像一個(gè)PSRAM的里面只有2個(gè)16位的存儲空間,一個(gè)是DATA RAM 一個(gè)是CMD RAM)
(3)NAND閃存和PC卡控制器
(4)外部設備接口
每個(gè)模塊通過(guò)片選信號控制
--------------------------------------------------------------------------------------------------
硬件電路(這里給出的是非復用連接)

可以這樣接
地址線(xiàn)A0 接 RS
NE接 CS
NEW –WR
NOE –RD

FSMC與外設連接好以后,就等于對于使用者屏蔽了對外設備的具體操作,只要對應類(lèi)型的映射地址空間寫(xiě)入數據,這些數據+地址就會(huì )被自動(dòng)翻譯,并寫(xiě)入外圍存儲設備。
對于寫(xiě)LCD來(lái)說(shuō),STM官方庫里有一些常用寫(xiě)法:
#define LCD_BASE((u32)(0x60000000 | 0x0C000000))//我解釋一下,地址是BANK1 的 第四塊
#define LCD((LCD_TypeDef *) LCD_BASE)

void LCD_WriteReg(u8 LCD_Reg,u16 LCD_RegValue)
{

LCD->LCD_REG = LCD_Reg;

LCD->LCD_RAM = LCD_RegValue;
}


u16 LCD_ReadReg(u8 LCD_Reg)
{

LCD->LCD_REG = LCD_Reg;

return (LCD->LCD_RAM);
}
當然也可以自己操作,完全在于自己。
--------------------------------------------------------------------------------------------------
初始化問(wèn)題:
1位寬:
主要是AHB到NOR/PSRAM位寬的,比如如果AHB設為32位,NOR為16位,他會(huì )分兩次傳輸

2:設置地址
手冊是這樣寫(xiě)的:在NOR/PSRAM模式下HADDR[27:26](HADDR are internal AHB address lines that are translated to external memory)用來(lái)片選NOR/PSRAM的四個(gè)分區。A[25:0]是地址線(xiàn),因為HADDR是字節地址但是存取其按字編址,所以根據位寬的不同由以下情況。
(1)當存儲數據設為8位時(shí),地址各位對應FSMC_A[25:0],數據位對應FSMC_D[7:0](存儲大小64MB * 8 = 512MB)
(2)當存儲數據設為16位時(shí),地址各位對應FSMC_A[25:1]>>1(即FSMC_A[24:0]),數據位對應FSMC_D[15:0]
(存儲大小 (64MB / 2) * 16 = 512MB)
注意:在16位外部存儲寬度下,FSMC內部會(huì )用A[25:1]去生成A[24:0]。不論8位或16位的情況,FSMC_A[0]必需連接外部存儲的A[0]。
--------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
FSMC的好處就是你一旦設置好之后,WR、RD、DB0-DB15這些控制線(xiàn)和數據線(xiàn),都是FSMC自動(dòng)控制的。打個(gè)比方,當你在程序中寫(xiě)到:
(volatile unsigned short int*)(0x60000000)=val;
那么FSMC就會(huì )自動(dòng)執行一個(gè)寫(xiě)的操作,其對應的主控芯片的WE、RD這些腳,就會(huì )呈現出寫(xiě)的時(shí)序出來(lái)(即WE=0,RD=1),數據val的值也會(huì )通過(guò) DB0-15自動(dòng)呈現出來(lái)(即FSMC-D0:FSMC-D15=val)。地址0x60000000會(huì )被呈現在數據線(xiàn)上(即A0-A25=0,地址線(xiàn)的對應最麻煩,要根據具體情況來(lái),好好看看FSMC手冊)。
連接好之后,讀寫(xiě)時(shí)序都會(huì )被FSMC自動(dòng)完成。但是還有一個(gè)很關(guān)鍵的問(wèn)題,就是RS沒(méi)有接,CS沒(méi)有接。因為在FSMC里面,根本就沒(méi)有對應RS和CS的腳。怎么辦呢?這個(gè)時(shí)候,有一個(gè)好方法,就是用某一根地址線(xiàn)來(lái)接RS。比如我們選擇了A16這根地址線(xiàn)來(lái)接,那么當我們要寫(xiě)寄存器的時(shí)候,我們需要RS,也就是A16置高。軟件中怎么做呢?也就是將FSMC要寫(xiě)的地址改成0x60020000,如下:
(volatile unsigned short int*)(0x60020000)=val;
這個(gè)時(shí)候,A16在執行其他FSMC的同時(shí)會(huì )被拉高,因為A0-A18要呈現出地址0x60020000。0x60020000里面的Bit17=1,就會(huì )導致A16為1。

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: STM32FSMC學(xué)習筆

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>