<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32的FSMC學(xué)習(xí)手記(一)

          STM32的FSMC學(xué)習(xí)手記(一)

          作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
          FSMC應(yīng)用簡(jiǎn)介
          FSMC全稱(chēng)“靜態(tài)存儲(chǔ)器控制器”,STM32可以通過(guò)FSMC與SRAM、ROM、PSRAM、Nor Flash和NandFlash存儲(chǔ)器的引腳相連,從而進(jìn)行數(shù)據(jù)的交換。

          一、FSMC的特點(diǎn):

          1、 FSMC的一大特點(diǎn)是支持不同位寬的異步讀寫(xiě)操作。
          2、 FSMC的映射地址空間中,不同的BANK是獨(dú)立的,可用于擴(kuò)展不同類(lèi)型的存儲(chǔ)器。當(dāng)FSMC同時(shí)使用多個(gè)外部存儲(chǔ)器時(shí),F(xiàn)SMC會(huì)通過(guò)總線懸空延時(shí)時(shí)間參數(shù),來(lái)防止訪問(wèn)沖突發(fā)生。
          3、 支持代碼從FSMC擴(kuò)展的外部存儲(chǔ)器中直接運(yùn)行。不需要首先調(diào)入內(nèi)部SRAM。

          二、FSMC的結(jié)構(gòu)組成:

          如圖所示,F(xiàn)SMC主要分為四部分:
          1、 FSMC一端連接著AHB高速總線,與Cortex-M3內(nèi)核相連接。
          2、 FSMC內(nèi)部實(shí)際上包括Nor Flash和Nand/PC Card兩個(gè)控制器,支持兩種不同的存儲(chǔ)方式。
          3、 外部設(shè)備接口。
          4、 配置寄存器,用于選擇FSMC的功能。

          三、FSMC的映射空間

          FSMC管理1GB的映射地址空間??梢詣澐譃?個(gè)256M的BANK,每個(gè)BANK又劃分為4個(gè)64M的子BANK,如下表所示。

          FAMC對(duì)每個(gè)存儲(chǔ)塊分配一個(gè)唯一的片選信號(hào)NE[4:1]。

          四、FSMC的初始化

          在使用SRAM之前,我們需要對(duì)SRAM使用的FSMC BANK進(jìn)行參數(shù)配置,使之與SRAM芯片的要求相符合。
          FSMC所占用的引腳初始化
          在STM32技術(shù)手冊(cè)中,針對(duì)FSMC引腳的GPIO模式配置,已經(jīng)進(jìn)行了說(shuō)明,具體FSMC總線配置方法如下。下表指的是整個(gè)FSMC接口的引腳初始化配置說(shuō)明,應(yīng)該根據(jù)實(shí)際初始化相關(guān)的引腳。

          完成FSMC引腳初始化后,要配置可編程存儲(chǔ)器的參數(shù),包括時(shí)序,是否支持非對(duì)齊訪問(wèn)和等待周期管理(只針對(duì)突發(fā)模式訪問(wèn)PSRAM和NOR閃存
          。


          p.FSMC_AddressSetupTime = 0; //地址建立時(shí)間
          p.FSMC_AddressHoldTime = 0; //地址保持時(shí)間
          p.FSMC_DataSetupTime = 2; //數(shù)據(jù)建立時(shí)間
          p.FSMC_BusTurnAroundDuration = 0; //總線恢復(fù)時(shí)間
          p.FSMC_CLKDivision = 0; // 時(shí)鐘分頻因子
          p.FSMC_DataLatency = 0; //數(shù)據(jù)產(chǎn)生時(shí)間
          p.FSMC_AccessMode = FSMC_AccessMode_A; //FSMC NOR控制器時(shí)序
          存儲(chǔ)器類(lèi)型、RAM數(shù)據(jù)寬度、AM地址范圍、用的FSMC BANK、FSMC工作模式的初始化等。

          FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM3; //使用了FSMC的BANK1的子板塊3
          FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;//禁止地址數(shù)據(jù)線復(fù)用
          FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM; //存儲(chǔ)器類(lèi)型為SRAM
          FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; //存儲(chǔ)器數(shù)據(jù)寬度為16位
          FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; //關(guān)閉突發(fā)模式訪問(wèn)
          //等待信號(hào)優(yōu)先級(jí),只有在使能突發(fā)訪問(wèn)模式才有效
          FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
          //關(guān)閉Wrapped burst access mode,只有在使能突發(fā)訪問(wèn)模式才有效
          FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
          //等待信號(hào)設(shè)置,只有在使能突發(fā)訪問(wèn)模式才有效
          FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
          FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; //使能這個(gè)BANK的寫(xiě)操作
          //使能/關(guān)閉等待信息設(shè)置,只在使能突發(fā)訪問(wèn)模式才有效
          FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
          FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; //關(guān)閉Extend Mode
          FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; //關(guān)閉Write Burst Mode
          FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p; //讀操作時(shí)序參數(shù)
          FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p; //寫(xiě)操作時(shí)序參數(shù)





          關(guān)鍵詞: STM32FSMC學(xué)習(xí)手

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();