STM32與FPGA+之間的FSMC通信_第1頁
STM32與FPGA+之間的FSMC通信_第2頁
STM32與FPGA+之間的FSMC通信_第3頁
免費預(yù)覽已結(jié)束,剩余5頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1. 引言STM32是ST意法半導(dǎo)體)公司推出的基于 ARM內(nèi)核Cortex M3的32位微控制器系列。CortexM3 內(nèi)核是為低功耗和價格敏感的應(yīng)用而專門設(shè)計的,具有突出的能效比和處理速 度。通過采用 Thumb 2 高密度指令集, CortexM3 內(nèi)核降低了系統(tǒng)存儲要求,同時快速 的中斷處理能夠滿足控制領(lǐng)域的高實時性要求,使基于該內(nèi)核設(shè)計的STM32 系列微控制器能夠以更優(yōu)越的性價比,面向更廣泛的應(yīng)用領(lǐng)域。STM32 系列微控制器為用戶提供了豐富的選擇,可適用于工業(yè)控制、智能家電、建筑 安防、醫(yī)療設(shè)備以及消費類電子產(chǎn)品等多方位嵌入式系統(tǒng)設(shè)計。STM32 系列采用一種新型的存儲器擴展技術(shù)

2、 一一FSMC,在外部存儲器擴展方面具有獨特的優(yōu)勢,可根據(jù)系統(tǒng)的應(yīng)用 需要,方便地進行不同類型大容量靜態(tài)存儲器的擴展。2. FSMC機制2.1 FSMC 技術(shù)優(yōu)勢 支持多種靜態(tài)存儲器類型。STM32 通過 FSMC 町以與 SRAM 、 ROM 、PSRAM 、NOR Flash 和 NANDFlash 存儲器的引腳直接相連。 支持豐富的存儲操作方法。 FSMC 不僅支持多種數(shù)據(jù)寬度的異步讀寫操作, 而且支 持對 NOR PSRAM NAND 存儲器的同步突發(fā)訪問方式。 支持同時擴展多種存儲器。 FSMC 的映射地址空間中,不同的 BANK 是獨立的,可 用于擴展不同類型的存儲器。 當(dāng)系統(tǒng)中擴

3、展和使用多個外部存儲器時, FSMC 會通過總線懸 空延遲時間參數(shù)的設(shè)置,防止各存儲器對總線的訪問沖突。 支持更為廣泛的存儲器型號。通過對FSMC的時間參數(shù)設(shè)置,擴大了系統(tǒng)中可用存儲器的速度范圍,為用戶提供了靈活的存儲芯片選擇空間。 支持代碼從 FSMC 擴展的外部存儲器中直接運行,而不需要首先調(diào)入內(nèi)部 SRAM 。2.2 FSMC 內(nèi)部結(jié)構(gòu)STM32微控制器之所以能夠支持 NOR Flash和NAND Flash這兩類訪問方式完全不同的存 儲器擴展,是因為 FSMC內(nèi)部實際包括 NOR Flash和NAND/PC Card兩個控制器,分別支持 兩種截然不同的存儲器訪問方式。在STM32內(nèi)部,

4、FSMC的一端通過內(nèi)部高速總線 AHB連 接到內(nèi)核 Cortex M3 ,另一端則是面向擴展存儲器的外部總線。內(nèi)核對外部存儲器的訪問信號發(fā)送到AHB總線后,經(jīng)過FSMC轉(zhuǎn)換為符合外部存儲器通信規(guī)約的信號,送到外部存儲器的相應(yīng)引腳,實現(xiàn)內(nèi)核與外部存儲器之間的數(shù)據(jù)交互。FSMC起到橋梁作用,既能夠進行信號類型的轉(zhuǎn)換, 又能夠進行信號寬度和時序的調(diào)整, 屏蔽掉不同存儲類型的差異, 使之對 內(nèi)核而言沒有區(qū)別。2.3 FSMC 映射地址空間FSMC管理1 GB的映射地址空間。該空間劃分為4個大小為256 MB的BANK,每個BANK 又劃分為4個64 MB的子BANK,如表1所列。FSMC的2個控制器管

5、理的映射地址空間不 同。NOR Flash控制器管理第1個BANK, NAND/ PC Card控制器管理第 24個BANK。由于 兩個控制器管理的存儲器類型不同, 擴展時應(yīng)根據(jù)選用的存儲設(shè)備類型確定其映射位置。 其 中,BANK1的4個子BANK擁有獨立的片選線和控制寄存器,可分別擴展一個獨立的存儲設(shè)備,而BANK2BANK4只有一組控制寄存器。3. FSMC擴展外部 SRAM配置在STM32與FPGA進行通信的時候, FPGA其實可以看做 STM32外部的SRAM, 因此相應(yīng)的配置可以參考對外部SRAM的配置。SRAM/ROM、NOR Flash和PSRAM類型的外部存儲器都是由 FSMC

6、的NOR Flash控制器 管理的,擴展方法基本相同,其中NOR Flash最為復(fù)雜。通過FSMC擴展外部存儲器時,除了傳統(tǒng)存儲器擴展所需要的硬件電路外,還需要進行FSMC初始化配置。FSMC提供大量、細致的可編程參數(shù), 以便能夠靈活地進行各種不同類型、 不同速度的存儲器擴展。 外部存儲 器能否正常工作的關(guān)鍵在于: 用戶能否根據(jù)選用的存儲器型號, 對配置寄存器進行合理的初 始化配置3.1地址映射空間AddressBanksSupiported memory typefloorBoriK 14x 64 MBNOR f PSRAM孫卜卜FFFFh7000 COCOhBank 27FFFFFFF11

7、42 MB> rND Fusn3000 COCO liBark 3SFFFFFFFli4x54 MB/9O0Q CCKOh9FFFFFFFIBdfik 44> B4 MBPC Cart311 471D3.2讀寫時序控制異步通信模式仁SRAM/CRAM述寫操作配置一&補4W1.EIT1HMJF*fiaiSTJ- frAwAag"*nHQ.h ekrKfHZL c押I科3.3配置存儲器基本特征通過對FSMC特殊功能寄存器 FSMC_BCRi(i 為子BANK號,i=1 ,,4)中對應(yīng)控制位的設(shè)置,F(xiàn)SMC根據(jù)不同存儲器特征可靈活地進行工作方式和信號的調(diào)整。根據(jù)選用 的

8、存儲器芯片確定需要配置的存儲器特征,主要包括以下方面: 存儲器類型(MTYPE)是 SRAM / ROM、PSRAM,還是 NOR FlaSh ; 存儲芯片的地址和數(shù)據(jù)引腳是否復(fù)用(MUXEN) , FSMC可以直接與AD0AD15復(fù)用的存儲器相連,不需要增加外部器件; 存儲芯片的數(shù)據(jù)線寬度(MWID) , FSMC支持8位/ 16位兩種外部數(shù)據(jù)總線寬 度; 對于NOR Flash(PSRAM),是否采用同步突發(fā)訪問方式 (B URSTEN); 對于 NOR Flash(PSRAM), NWAIT 信號的特性說明(WAITEN、WAITCFG、WAITPOL); 對于該存儲芯片的讀/寫操作,是

9、否采用相同的時序參數(shù)來確定時序關(guān)系(EXTMOD)。3.4配置存儲器時序參數(shù)FSMC通過使用可編程的存儲器時序參數(shù)寄存器,拓寬了可選用的外部存儲器的速度范圍。FSMC的SRAM控制器支持同步和異步突發(fā)兩種訪問方式。選用同步突發(fā)訪問方式時,F(xiàn)SMC將HCLK(系統(tǒng)時鐘)分頻后,發(fā)送給外部存儲器作為同步時鐘信號FSMC_CLK。此時需要的設(shè)置的時間參數(shù)有 2個: HCLK與FSMC_CLK 的分頻系數(shù)(CLKDIV),可以為216分頻; 同步突發(fā)訪問中獲得第 1個數(shù)據(jù)所需要的等待延遲 (DATLAT)。對于異步突發(fā)訪問方式, FSMC主要設(shè)置3個時間參數(shù):地址建立時間(ADDSET)、 數(shù)據(jù)建立時

10、間(DATAST)和地址保持時間(ADDHLD) 。FSMC綜合了 SRAM / ROM、 PSRAM和NOR Flash產(chǎn)品的信號特點,定義了 4種不同的異步時序模型。選用不同的時 序模型時,需要設(shè)置不同的時序參數(shù),如表2所列。在實際擴展時,根據(jù)選用存儲器的特征確定時序模型,從而確定各時間參數(shù)與存儲器讀/寫周期參數(shù)指標(biāo)之間的計算關(guān)系;利用該計算關(guān)系和存儲芯片數(shù)據(jù)手冊中給定的參數(shù)指標(biāo),可計算出FSMC所需要的各時間參數(shù),從而對時間參數(shù)寄存器進行合理的配置。Table 4 SRAM timingsSymbohParamelcrValueUnitWrite cycle time12ns'p

11、cReid cycle lime12nsWeiWnte Enable low pulse WKitli3inslAAAdJrtibh 血口匕気 liiTie12nsUsing Itie above described formulae, the memory timings (in labie 4 and I he STM32F1 Oxxk parameters (in 殆Die 2), we liave: Address cotup time: 0x0 Address hold time: 0x0 Data setup time: 0x2表2 NOR Flash S制器支持的時序僅型時序模玳

12、簡單描述斤Mode ISRAM/CRAMDATAST .AUDSETMoJtrASRAM-CRAM UK逛通型時洋LUFAST.AUDSKTNQR Fhih 時序DATAST, ADDSETModeCFOR Klftsh OE選通呷時序DATAST.ADDSKT延長胞址保持時問的界步DATAST. ADDSETADDHW可步突發(fā)糧整FSMC-CI點,前疋誡取 生個聽洋單元的數(shù)霍CLKD型4. STM32擴展外部 SRAM實例4.1難點解析數(shù)據(jù)傳輸自動化第一個角度理解STM32有FSMQ其實其他芯片基本都有類似的總線功能),F(xiàn)SMC的好處就是你一旦設(shè)置好之后, WR寫)、RD(讀)、DB0-DB

13、15這些控制線和數(shù)據(jù)線, 都是FSMC自 動控制的。打個比方,當(dāng)你在程序中寫到:*(volatile un sig ned short int *)(0x60000000)=val;那么FSMC就會自動執(zhí)行一個寫的操作,其對應(yīng)的主控芯片的WE、RD這些腳,就會呈現(xiàn)出寫的時序出來(即 WE=0,RD=1),數(shù)據(jù)val的值也會通過DB0-15自動呈現(xiàn)出來(即FSMC-D0:FSMC-D15=val )。地址0x60000000會被呈現(xiàn)在數(shù)據(jù)線上 (即A0-A25=0,地址線的對應(yīng)最麻煩,要根據(jù)具體情況來。硬件連接硬件平臺:(STM32F103VC + EP3C5E144C8N )將圖中的IS61W

14、V512BLL改為FPGA對應(yīng)的接口即,可按照模式 A-SRAM/PSRAM進行連接Figure 8 16-bit SRAM; IS61WV5121SBLL connection to STMI32F10xxx< PCI; CWTfTFTF伽A rcr uz>tsmtnblTA-X】匚WFPI411 HL三-.:X3S 7 65 4 JI I fl r-E V - - -1 LJUjllju如齬juAlAIAlMJUMAdMAIJJzAIAO噩一迂匹口西DiLiXhF"2-*1 - - A -丄 IFSMC-D0-15 接 LCD DBO-15FSMC_NE1-CS 接

15、PD7連接好之后,讀寫時序都會被FSMC自動完成。但是還有一個很關(guān)鍵的問題,就是RS沒有接因為在FSMC里面,根本就沒有對應(yīng) RS怎么辦呢?這個時候,有一個好方法,就是用某一根地址線來接RS比如我們選擇了 A16這根地址線來接,那么當(dāng)我們要寫寄存器(備注:此處應(yīng)為數(shù)據(jù))的時候,我們需要RS也就是A16(RS為高)置高。軟件中怎么做呢?也就是 將FSMC要寫的地址改成0x60010000,如下:*(volatile unsigned short int *)(0x60010000)=val;這個時候,A16在執(zhí)行其他FSMC的同時會被拉高,因為A0-A18要呈現(xiàn)出地0x60010000。 0x6

16、0010000里面的Bit17=1,就會導(dǎo)致A16為1。當(dāng)要讀 數(shù)據(jù)(備注:此處為寄存器)時, 地址由0x60010000改為了 0x60000000,這個時候 A16就為0了。RS問題:RS為0表示;讀寫寄存器;RS為1,讀寫數(shù)據(jù)RAM4.2應(yīng)用STM32固件對FSMC進行初始化配置ST公司為用戶開發(fā)提供了完整、高效的工具和固件庫,其中使用C語言編寫的固件庫提供了覆蓋所有標(biāo)準外設(shè)的函數(shù), 使用戶無需使用匯編操作外設(shè)特性, 從而提高了程序的可 讀性和易維護性。STM32固件庫中提供的FSMC的SRAM控制器操作固件,主要包括1個數(shù)據(jù)結(jié)構(gòu)和3個函數(shù)FSMC_NORSRAMI ni tStruct

17、ure (調(diào)用庫函數(shù)) RCC_Co nfigurati on ();(時鐘選擇)NVIC_Co nfiguratio n();(中斷優(yōu)先級)FSMC_GPIO_Configuration();(連接 IO 口初始化)FSMC_SRAM_Init();( FMSC配置)USART_Initial();( UART1 端口配置 )4.2其他人調(diào)試遇到問題點(摘錄)度連到曲菩的堆址找大訪問存鎮(zhèn)#空閤(程)對應(yīng)忸逵寧方 x « 51216扯唄茨:匕與.4工刃審吃謹址罐WUTU 3 x 1G = 512 媲并且無論外部存儲器的寬度是務(wù)少位tFSMC_A0始終連接到外部存儲器的AW;項目中需要

18、使用 STM32和FPGA通信,使用的是地址線和數(shù)據(jù)線,在FPGA中根據(jù)STM32的讀寫模式A的時序完成寫入和讀取。之前的PCB設(shè)計中只使用了 8跟數(shù)據(jù)線和8 根地址線,調(diào)試過程中沒有發(fā)現(xiàn)什么問題,在現(xiàn)在的PCB中使用了 8根地址線和16根數(shù)STM32 在據(jù)線,數(shù)據(jù)寬度也改成了16位,剛開始是讀取數(shù)據(jù)不正確,后來發(fā)現(xiàn)了問題,16位數(shù)據(jù)寬度下有個內(nèi)外地址映射的問題,只需要把FPGA中的設(shè)定的地址乘以 2在STM32中訪問就可以了,但是在寫操作的時候會出現(xiàn)寫當(dāng)前地址的時候把后面的地址寫成 0的情況,比如說我給 FPGA中定義的偏移地址 0x01寫一個16位數(shù)據(jù),按照地址映射, 在STM32中我把地址寫入 0x02,。實際測試發(fā)現(xiàn)這個地址上的數(shù)據(jù)是對的,但是FPGA中0x02地址上的數(shù)據(jù)也變成了 00。塊1存儲區(qū)被劃分為 4個NOR/PSRAM 區(qū),這四個區(qū)在內(nèi)部地址上是連續(xù)排列的。但是實際上每個區(qū)共用的是同一組地址線與數(shù)據(jù)線,因此需要有內(nèi)外的一個地址映射,因此在STM32中實際上有兩個地址,一個是在內(nèi)部訪問的地址,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論