一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32與FPGA通信中FSMC操作實例

電子設(shè)計 ? 來源:FPGA技術(shù)江湖 ? 作者:FPGA技術(shù)江湖 ? 2021-01-08 09:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

STM32是ST(意法半導(dǎo)體)公司推出的基于ARM內(nèi)核Cortex-M3的32位微控制器系列。Cortex-M3內(nèi)核是為低功耗和價格敏感的應(yīng)用而專門設(shè)計的,具有突出的能效比和處理速度。通過采用Thumb-2高密度指令集,Cortex-M3內(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系列采用一種新型的存儲器擴(kuò)展技術(shù)——FSMC,在外部存儲器擴(kuò)展方面具有獨特的優(yōu)勢,可根據(jù)系統(tǒng)的應(yīng)用需要,方便地進(jìn)行不同類型大容量靜態(tài)存儲器的擴(kuò)展。

PART 2 FMSC 內(nèi)部結(jié)構(gòu)

2.1

FSMC技術(shù)優(yōu)勢

①支持多種靜態(tài)存儲器類型。STM32通過FSMC可以與SRAMROM、PSRAM、NORFlash和NANDFlash存儲器的引腳直接相連。

②支持豐富的存儲操作方法。FSMC不僅支持多種數(shù)據(jù)寬度的異步讀/寫操作,而且支持對NOR/PSRAM/NAND存儲器的同步突發(fā)訪問方式。

③支持同時擴(kuò)展多種存儲器。FSMC的映射地址空間中,不同的BANK是獨立的,可用于擴(kuò)展不同類型的存儲器。當(dāng)系統(tǒng)中擴(kuò)展和使用多個外部存儲器時,F(xiàn)SMC會通過總線懸空延遲時間參數(shù)的設(shè)置,防止各存儲器對總線的訪問沖突。

④支持更為廣泛的存儲器型號。通過對FSMC的時間參數(shù)設(shè)置,擴(kuò)大了系統(tǒng)中可用存儲器的速度范圍,為用戶提供了靈活的存儲芯片選擇空間。

⑤支持代碼從FSMC擴(kuò)展的外部存儲器中直接運(yùn)行,而不需要首先調(diào)入內(nèi)部SRAM。

2.2

FSMC 內(nèi)部結(jié)構(gòu)

STM32微控制器之所以能夠支持NORFlash和NANDFlash這兩類訪問方式完全不同的存儲器擴(kuò)展,是因為FSMC內(nèi)部實際包括NORFlash和NAND/PCCard兩個控制器,分別支持兩種截然不同的存儲器訪問方式。在STM32內(nèi)部,F(xiàn)SMC的一端通過內(nèi)部高速總線AHB連接到內(nèi)核Cortex-M3,另一端則是面向擴(kuò)展存儲器的外部總線。


內(nèi)核對外部存儲器的訪問信號發(fā)送到AHB總線后,經(jīng)過FSMC轉(zhuǎn)換為符合外部存儲器通信規(guī)約的信號,送到外部存儲器的相應(yīng)引腳,實現(xiàn)內(nèi)核與外部存儲器之間的數(shù)據(jù)交互。FSMC起到橋梁作用,既能夠進(jìn)行信號類型的轉(zhuǎn)換,又能夠進(jìn)行信號寬度和時序的調(diào)整,屏蔽掉不同存儲類型的差異,使之對內(nèi)核而言沒有區(qū)別。

2.3

FSMC映射地址空間

FSMC管理1GB的映射地址空間。該空間劃分為4個大小為256MB的BANK,每個BANK又劃分為4個64MB的子BANK,如表1所列。FSMC中的2個控制器管理的映射地址空間不同。NORFlash控制器管理第1個BANK,NAND/PCCard控制器管理第2~4個BANK。

由于兩個控制器管理的存儲器類型不同,擴(kuò)展時應(yīng)根據(jù)選用的存儲設(shè)備類型確定其映射位置。其中,BANK1的4個子BANK擁有獨立的片選線和控制寄存器,可分別擴(kuò)展一個獨立的存儲設(shè)備,而BANK2~BANK4只有一組控制寄存器。

PART 3 FSMC擴(kuò)展外部SRAM配置

3.1

FSMC擴(kuò)展外部SRAM配置

在STM32與FPGA進(jìn)行通信的時候,F(xiàn)PGA其實可以看做STM32外部的SRAM。因此相應(yīng)的配置可以參考對外部SRAM的配置。

SRAM/ROM、NORFlash和PSRAM類型的外部存儲器都是由FSMC的NORFlash控制器管理的,擴(kuò)展方法基本相同,其中NORFlash最為復(fù)雜。通過FSMC擴(kuò)展外部存儲器時,除了傳統(tǒng)存儲器擴(kuò)展所需要的硬件電路外,還需要進(jìn)行FSMC初始化配置。


FSMC提供大量、細(xì)致的可編程參數(shù),以便能夠靈活地進(jìn)行各種不同類型、不同速度的存儲器擴(kuò)展。外部存儲器能否正常工作的關(guān)鍵在于:用戶能否根據(jù)選用的存儲器型號,對配置寄存器進(jìn)行合理的初始化配置。

c52b9f0a-513b-11eb-8b86-12bb97331649.png

3.2

讀寫時序控制

異步通信模式1:SRAM/CRAM

c56293c0-513b-11eb-8b86-12bb97331649.png

3.3

配置存儲器基本特征

通過對FSMC特殊功能寄存器FSMC_BCRi(i為子BANK號,i=1,…,4)中對應(yīng)控制位的設(shè)置,F(xiàn)SMC根據(jù)不同存儲器特征可靈活地進(jìn)行工作方式和信號的調(diào)整。根據(jù)選用的存儲器芯片確定需要配置的存儲器特征,主要包括以下方面:

①存儲器類型(MTYPE)是SRAM/ROM、PSRAM,還是NORFlaSh;

②存儲芯片的地址和數(shù)據(jù)引腳是否復(fù)用(MUXEN),F(xiàn)SMC可以直接與AD0~AD15復(fù)用的存儲器相連,不需要增加外部器件;

③存儲芯片的數(shù)據(jù)線寬度(MWID),F(xiàn)SMC支持8位/16位兩種外部數(shù)據(jù)總線寬度;

④對于NORFlash(PSRAM),是否采用同步突發(fā)訪問方式(BURSTEN);

⑤對于NORFlash(PSRAM),NWAIT信號的特性說明(WAITEN、WAITCFG、WAITPOL);

⑥對于該存儲芯片的讀/寫操作,是否采用相同的時序參數(shù)來確定時序關(guān)系(EXTMOD)。

3.4

配置存儲器時序參數(shù)

FSMC通過使用可編程的存儲器時序參數(shù)寄存器,拓寬了可選用的外部存儲器的速度范圍。FSMC的SRAM控制器支持同步和異步突發(fā)兩種訪問方式。

選用同步突發(fā)訪問方式時,F(xiàn)SMC將HCLK(系統(tǒng)時鐘)分頻后,發(fā)送給外部存儲器作為同步時鐘信號FSMC_CLK。

c58bf6a2-513b-11eb-8b86-12bb97331649.jpg

此時需要的設(shè)置的時間參數(shù)有2個:

①HCLK與FSMC_CLK的分頻系數(shù)(CLKDIV),可以為2~16分頻;

②同步突發(fā)訪問中獲得第1個數(shù)據(jù)所需要的等待延遲(DATLAT)。

對于異步突發(fā)訪問方式,F(xiàn)SMC主要設(shè)置3個時間參數(shù):地址建立時間(ADDSET)、數(shù)據(jù)建立時間(DATAST)和地址保持時間(ADDHLD)。FSMC綜合了SRAM/ROM、PSRAM和NORFlash產(chǎn)品的信號特點,定義了4種不同的異步時序模型。選用不同的時序模型時,需要設(shè)置不同的時序參數(shù),如表2所列。

c5c0b086-513b-11eb-8b86-12bb97331649.jpg

在實際擴(kuò)展時,根據(jù)選用存儲器的特征確定時序模型,從而確定各時間參數(shù)與存儲器讀/寫周期參數(shù)指標(biāo)之間的計算關(guān)系;利用該計算關(guān)系和存儲芯片數(shù)據(jù)手冊中給定的參數(shù)指標(biāo),可計算出FSMC所需要的各時間參數(shù),從而對時間參數(shù)寄存器進(jìn)行合理的配置。

PART 4 STM32擴(kuò)展外部SRAM實例

4.1

難點解析

4.1.1 數(shù)據(jù)傳輸自動化

第一個角度理解STM32有FSMC(其實其他芯片基本都有類似的總線功能),F(xiàn)SMC的好處就是你一旦設(shè)置好之后,WR(寫)、RD(讀)、DB0-DB15這些控制線和數(shù)據(jù)線,都是FSMC自動控制的。打個比方,當(dāng)你在程序中寫到:

*(volatileunsignedshortint*)(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ù)具體情況來。

4.1.2 硬件連接

硬件平臺:(STM32F103VC+EP3C5E144C8N)

將圖中的IS61WV512BLL改為FPGA對應(yīng)的接口即,可按照模式A-SRAM/PSRAM進(jìn)行連接。

c5ec04d4-513b-11eb-8b86-12bb97331649.jpg

那么在硬件上面,我們需要做的,僅僅是MCU和LCD控制芯片的連接關(guān)系:

WE-WR,均為低電平有效

RD-RD,均為低電平有效

FSMC-D0-15接LCDDB0-15

FSMC_NE1--CS接PD7

連接好之后,讀寫時序都會被FSMC自動完成。但是還有一個很關(guān)鍵的問題,就是RS沒有接因為在FSMC里面,根本就沒有對應(yīng)RS。怎么辦呢?這個時候,有一個好方法,就是用某一根地址線來接RS。

比如我們選擇了A16這根地址線來接,那么當(dāng)我們要寫寄存器(備注:此處應(yīng)為數(shù)據(jù))的時候,我們需要RS,也就是A16(RS為高)置高。軟件中怎么做呢?也就是將FSMC要寫的地址改成0x60010000,如下:

*(volatileunsignedshortint*)(0x60010000)=val;

這個時候,A16在執(zhí)行其他FSMC的同時會被拉高,因為A0-A18要呈現(xiàn)出0x60010000。0x60010000里面的Bit17=1,就會導(dǎo)致A16為1。要讀數(shù)據(jù)(備注:此處為寄存器)時,地址由0x60010000改為了0x60000000,這個時候A16就為0了。

RS問題:RS為0表示;讀寫寄存器;RS為1,讀寫數(shù)據(jù)RAM;

4.2

STM32固件對FSMC進(jìn)行初始化配置

ST公司為用戶開發(fā)提供了完整、高效的工具和固件庫,其中使用C語言編寫的固件庫提供了覆蓋所有標(biāo)準(zhǔn)外設(shè)的函數(shù),使用戶無需使用匯編操作外設(shè)特性,從而提高了程序的可讀性和易維護(hù)性。

STM32固件庫中提供的FSMC的SRAM控制器操作固件,主要包括1個數(shù)據(jù)結(jié)構(gòu)和3個函數(shù)。

FSMC_NORSRAMInitStructure(調(diào)用庫函數(shù))

RCC_Configuration();(時鐘選擇)

NVIC_Configuration();(中斷優(yōu)先級)

FSMC_GPIO_Configuration();(連接IO口初始化)

FSMC_SRAM_Init();(FMSC配置)

USART_Initial();(UART1端口配置)

4.3

其他人調(diào)試遇到問題點(摘錄)

c616ac0c-513b-11eb-8b86-12bb97331649.jpg

項目中需要使用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ù)據(jù)線,數(shù)據(jù)寬度也改成了16位。

剛開始是讀取數(shù)據(jù)不正確,后來發(fā)現(xiàn)了問題,STM32在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)部訪問的地址,另外一個是實際地址線輸出的地址。

HADDR[27:0]對應(yīng)的是需要轉(zhuǎn)換到外部存儲器的內(nèi)部AHB地址線,其HADDR[27:26]位用于選擇四個存儲塊之一。HADDR[25:0]包含外部存儲器地址。HADDR是字節(jié)地址,而不同的外部存儲器數(shù)據(jù)長度也不一樣,因此在數(shù)據(jù)寬度為8位和16位時映射關(guān)系也不一樣。

在數(shù)據(jù)寬度為8位時HADDR[25:0]與FSMC_A[25:0]對應(yīng)相連,這時候在STM32中訪問的地址和實際地址線產(chǎn)生的地址是一致的。而在16位數(shù)據(jù)寬度時HADDR[25:1]與FSMC_A[24:0]對應(yīng)相連,HADDR[0]未接,這時候?qū)嶋H地址線上給出的地址為需要訪問的偏移地址的一半。

經(jīng)過測試,發(fā)現(xiàn)寫數(shù)據(jù)時實際上是進(jìn)行了多次寫入,導(dǎo)致把后面的地址也給寫上了,最終導(dǎo)致數(shù)據(jù)混亂,后來經(jīng)過學(xué)長提醒,決定把訪問的地址定義為16位的,原來是32位的,經(jīng)過測試問題解決。

所以這兒也算是長了經(jīng)驗,因為我只用了8根地址線,為了避免可能的問題,地址最好定義成對應(yīng)的位數(shù)。但是還是很納悶為什么之前八位數(shù)據(jù)線讀寫的時候沒有這個問題。

PART 5 結(jié)語

STM32作為新一代ARMCortex-M3核處理器,其卓越的性能和功耗控制能夠適用于廣泛的應(yīng)用領(lǐng)域;而其特殊的可變靜態(tài)存儲技術(shù)FSMC具有高度的靈活性,對于存儲容量要求較高的嵌入式系統(tǒng)設(shè)計,能夠在不增加外部分立器件的情況下,擴(kuò)展多種不同類型和容量的存儲芯片,降低了系統(tǒng)設(shè)計的復(fù)雜性,提高了系統(tǒng)的可靠性。

原文標(biāo)題:FSMC | STM32與FPGA通信

文章出處:【微信公眾號:FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1645

    文章

    22034

    瀏覽量

    617875
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6205

    瀏覽量

    137748
  • 存儲
    +關(guān)注

    關(guān)注

    13

    文章

    4529

    瀏覽量

    87376
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11031

    瀏覽量

    364396
  • FSMC
    +關(guān)注

    關(guān)注

    0

    文章

    55

    瀏覽量

    38668

原文標(biāo)題:FSMC | STM32與FPGA通信

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    淺析STM32 FSMC操作LCD的過程

    FSMC稱為靈活的靜態(tài)存儲器,它能夠與同步或異步存儲器和16位PC存儲器卡連接,STM32F4的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存儲器。
    發(fā)表于 07-22 14:46 ?4966次閱讀
    淺析<b class='flag-5'>STM32</b> <b class='flag-5'>FSMC</b><b class='flag-5'>操作</b>LCD的過程

    STM32通過FSMCFPGA通信

    各位朋友好,STM32通過FSMCFPGA通信,我該怎樣測試通信是正常的? FPGA代碼如下[
    發(fā)表于 07-07 14:31

    求助100腳STM32FSMC用法 與FPGA的FIFO通信

    現(xiàn)在在做一塊主控板,板子搭載DSP的28335芯片,利用FPGA的颶風(fēng)2代EP2C144芯片橋接100腳STM32F103,起初規(guī)劃是用雙口RAM通信,后來改用FIFO通信,現(xiàn)在的情況
    發(fā)表于 08-29 11:11

    STM32FSMC接口讀取FPGA的FIFO

    現(xiàn)在做一個項目,需要用FSMCFPGA通信,但是FSMC接口沒有讀取FIFO的模式,希望大牛能給個思路,也可以一塊討論討論
    發(fā)表于 03-19 22:00

    STM32FPGA是怎樣進(jìn)行通信

    FSMC存儲器有哪些技術(shù)優(yōu)勢呢?STM32FPGA是怎樣進(jìn)行通信的?
    發(fā)表于 11-22 07:21

    STM32FPGA通過fsmc通信的實現(xiàn)方法

    前言本文介紹STM32FPGA通過fsmc通信的實現(xiàn)方法。一、fsmc介紹FSMC(Flexi
    發(fā)表于 01-18 06:32

    FPGA和ARM通信使用FSMC通常需要幾根線相連

    FPGA和ARM通信使用FSMC,通常需要幾根線相連。我這邊FPGA和ARM通信是12根線連,不知道是什么方式
    發(fā)表于 11-22 14:55

    異步FIFO在FPGA與DSP通信中的運(yùn)用

    異步FIFO在FPGA與DSP通信中的運(yùn)用
    發(fā)表于 05-19 11:17 ?0次下載

    FPGA語音通信平臺設(shè)計實例

    Xilinx FPGA工程例子源碼:FPGA語音通信平臺設(shè)計實例
    發(fā)表于 06-07 14:13 ?13次下載

    基于異步FIFO在FPGA與DSP通信中的運(yùn)用

    基于異步FIFO在FPGA與DSP通信中的運(yùn)用
    發(fā)表于 10-19 10:30 ?10次下載
    基于異步FIFO在<b class='flag-5'>FPGA</b>與DSP<b class='flag-5'>通信中</b>的運(yùn)用

    基于FPGASTM32FSMC通信

    FSMC簡介:FSMC即靈活的靜態(tài)存儲控制器,FSMC管理1GB空間,擁有4個Bank連接外部存儲器,每個Bank有獨立的片選信號和獨立的時序配置;支持的存儲器類型有SRAM、PSRAM、NOR/ONENAND、ROM、LCD接
    發(fā)表于 07-28 09:35 ?1.2w次閱讀

    STM32學(xué)習(xí)教程之FSMC模塊

    STM32學(xué)習(xí)教程之FSMC模塊
    發(fā)表于 03-16 15:47 ?53次下載
    <b class='flag-5'>STM32</b>學(xué)習(xí)教程之<b class='flag-5'>FSMC</b>模塊

    FPGA MCU FSMC通信接口——NAND Flash模式

    FPGA MCU通信——異步接口(仿NAND Flash)FPGA MCU通信——異步接口MCU側(cè)開發(fā)注意事項FPGA側(cè)注意事項
    發(fā)表于 10-26 11:51 ?28次下載
    <b class='flag-5'>FPGA</b> MCU <b class='flag-5'>FSMC</b><b class='flag-5'>通信</b>接口——NAND Flash模式

    stm32_FSMC機(jī)制

    stm32_FSMC機(jī)制,介紹FSMC機(jī)制入門
    發(fā)表于 02-21 15:16 ?18次下載

    FPGASTM32通過FSMC總線通信的實驗

    FSMC總線通信簡介 FSMCSTM32系列采用的一種新型存儲器擴(kuò)展技術(shù)。在外部存儲器擴(kuò)展方面具有獨特的優(yōu)勢,可根據(jù)系統(tǒng)的應(yīng)用需要,方便進(jìn)行不 同類型大容量靜態(tài)存儲器的擴(kuò)展。
    的頭像 發(fā)表于 11-12 17:20 ?3797次閱讀
    <b class='flag-5'>FPGA</b>與<b class='flag-5'>STM32</b>通過<b class='flag-5'>FSMC</b>總線<b class='flag-5'>通信</b>的實驗