在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

標簽 > FSMC

FSMC簡介

  FSMC(Flexible Static Memory Controller,可變靜態存儲控制器)是STM32系列采用的一種新型的存儲器擴展技術。在外部存儲器擴展方面具有獨特的優勢,可根據系統的應用需要,方便地進行不同類型大容量靜態存儲器的擴展。

  STM32是ST(意法半導體)公司推出的基于ARM內核Cortex-M3的32位微控制器系列。Cortex-M3內核是為低功耗和價格敏感的應用而專門設計的,具有突出的能效比和處理速度。通過采用Thumb-2高密度指令集,Cortex-M3內核降低了系統存儲要求,同時快速的中斷處理能夠滿足控制領域的高實時性要求,使基于該內核設計的STM32系列微控制器能夠以更優越的性價比,面向更廣泛的應用領域。

  STM32系列微控制器為用戶提供了豐富的選擇,可適用于工業控制、智能家電、建筑安防、醫療設備以及消費類電子產品等多方位嵌入式系統設計。STM32系列采用一種新型的存儲器擴展技術——FSMC,在外部存儲器擴展方面具有獨特的優勢,可根據系統的應用需要,方便地進行不同類型大容量靜態存儲器的擴展。

FSMC百科

  FSMC(Flexible Static Memory Controller,可變靜態存儲控制器)是STM32系列采用的一種新型的存儲器擴展技術。在外部存儲器擴展方面具有獨特的優勢,可根據系統的應用需要,方便地進行不同類型大容量靜態存儲器的擴展。

  STM32是ST(意法半導體)公司推出的基于ARM內核Cortex-M3的32位微控制器系列。Cortex-M3內核是為低功耗和價格敏感的應用而專門設計的,具有突出的能效比和處理速度。通過采用Thumb-2高密度指令集,Cortex-M3內核降低了系統存儲要求,同時快速的中斷處理能夠滿足控制領域的高實時性要求,使基于該內核設計的STM32系列微控制器能夠以更優越的性價比,面向更廣泛的應用領域。

  STM32系列微控制器為用戶提供了豐富的選擇,可適用于工業控制、智能家電、建筑安防、醫療設備以及消費類電子產品等多方位嵌入式系統設計。STM32系列采用一種新型的存儲器擴展技術——FSMC,在外部存儲器擴展方面具有獨特的優勢,可根據系統的應用需要,方便地進行不同類型大容量靜態存儲器的擴展。

  機制

  FSMC(Flexible Static Memory Controller,可變靜態存儲控制器)是STM32系列中內部集成256 KB以上FlaSh,后綴為xC、xD和xE的高存儲密度微控制器特有的存儲控制機制。之所以稱為“可變”,是由于通過對特殊功能寄存器的設置,FSMC能夠根據不同的外部存儲器類型,發出相應的數據/地址/控制信號類型以匹配信號的速度,從而使得STM32系列微控制器不僅能夠應用各種不同類型、不同速度的外部靜態存儲器,而且能夠在不增加外部器件的情況下同時擴展多種不同類型的靜態存儲器,滿足系統設計對存儲容量、產品體積以及成本的綜合要求。FSMC技術優勢①支持多種靜態存儲器類型。STM32通過FSMC可以與SRAM、ROM、PSRAM、NOR Flash和NANDFlash存儲器的引腳直接相連。②支持豐富的存儲操作方法。FSMC不僅支持多種數據寬度的異步讀/寫操作,而且支持對NOR/PSRAM/NAND存儲器的同步突發訪問方式。③支持同時擴展多種存儲器。FSMC的映射地址空間中,不同的BANK是獨立的,可用于擴展不同類型的存儲器。當系統中擴展和使用多個外部存儲器時,FSMC會通過總線懸空延遲時間參數的設置,防止各存儲器對總線的訪問沖突。④支持更為廣泛的存儲器型號。通過對FSMC的時間參數設置,擴大了系統中可用存儲器的速度范圍,為用戶提供了靈活的存儲芯片選擇空間。⑤支持代碼從FSMC擴展的外部存儲器中直接運行,而不需要首先調入內部SRAM。FSMC內部結構STM32微控制器之所以能夠支持NOR Flash和NAND Flash這兩類訪問方式完全不同的存儲器擴展,是因為FSMC內部實際包括NOR Flash和NAND/PC Card兩個控制器,分別支持兩種截然不同的存儲器訪問方式。在STM32內部,FSMC的一端通過內部高速總線AHB連接到內核Cortex-M3,另一端則是面向擴展存儲器的外部總線。內核對外部存儲器的訪問信號發送到AHB總線后,經過FSMC轉換為符合外部存儲器通信規約的信號,送到外部存儲器的相應引腳,實現內核與外部存儲器之間的數據交互。FSMC起到橋梁作用,既能夠進行信號類型的轉換,又能夠進行信號寬度和時序的調整,屏蔽掉不同存儲類型的差異,使之對內核而言沒有區別。FSMC映射地址空間FSMC管理1 GB的映射地址空間。該空間劃分為4個大小為256 MB的BANK,每個BANK又劃分為4個64 MB的子BANK,如表1所列。FSMC的2個控制器管理的映射地址空間不同。NOR Flash控制器管理第1個BANK,NAND/PC Card控制器管理第2~4個BANK。由于兩個控制器管理的存儲器類型不同,擴展時應根據選用的存儲設備類型確定其映射位置。其中,BANK1的4個子BANK擁有獨立的片選線和控制寄存器,可分別擴展一個獨立的存儲設備,而BANK2~BANK4只有一組控制寄存器。

  

  表1:FSMC映射地址空間

  配置

  FSMC擴展NOR Flash配置SRAM/ROM、NOR Flash和PSRAM類型的外部存儲器都是由FSMC的NOR Flash控制器管理的,擴展方法基本相同,其中NOR Flash最為復雜。通過FSMC擴展外部存儲器時,除了傳統存儲器擴展所需要的硬件電路外,還需要進行FSMC初始化配置。FSMC提供大量、細致的可編程參數,以便能夠靈活地進行各種不同類型、不同速度的存儲器擴展。外部存儲器能否正常工作的關鍵在于:用戶能否根據選用的存儲器型號,對配置寄存器進行合理的初始化配置。確定映射地址空間根據選用的存儲器類型確定擴展使用的映射地址空間。NOR Flash只能選用BANK1中的4個子BANK。選定映射子BANK后,即可確定以下2方面內容:①硬件電路中用于選中該存儲器的片選線FSMC_NEi(i為子BANK號,i=1,…,4);②FSMC配置中用于配置該外部存儲器的特殊功能寄存器號(如表1所列)。配置存儲器基本特征通過對FSMC特殊功能寄存器FSMC_BCRi(i為子BANK號,i=1,…,4)中對應控制位的設置,FSMC根據不同存儲器特征可靈活地進行工作方式和信號的調整。根據選用的存儲器芯片確定需要配置的存儲器特征,主要包括以下方面:①存儲器類型(MTYPE)是SRAM/ROM、PSRAM,還是NOR FlaSh;②存儲芯片的地址和數據引腳是否復用(MUXEN),FSMC可以直接與AD0~AD15復用的存儲器相連,不需要增加外部器件;③存儲芯片的數據線寬度(MWID),FSMC支持8位/16位兩種外部數據總線寬度;④對于NOR Flash(PSRAM),是否采用同步突發訪問方式(B URSTEN);⑤對于NOR Flash(PSRAM),NWAIT信號的特性說明(WAITEN、WAITCFG、WAITPOL);⑥對于該存儲芯片的讀/寫操作,是否采用相同的時序參數來確定時序關系(EXTMOD)。配置存儲器時序參數FSMC通過使用可編程的存儲器時序參數寄存器,拓寬了可選用的外部存儲器的速度范圍。FSMC的NORFlash控制器支持同步和異步突發兩種訪問方式。選用同步突發訪問方式時,FSMC將HCLK(系統時鐘)分頻后,發送給外部存儲器作為同步時鐘信號FSMC_CLK。此時需要的設置的時間參數有2個:①HCLK與FSMC_CLK的分頻系數(CLKDIV),可以為2~16分頻;②同步突發訪問中獲得第1個數據所需要的等待延遲(DATLAT)。對于異步突發訪問方式,FSMC主要設置3個時間參數:地址建立時間(ADDSET)、數據建立時間(DATAST)和地址保持時間(ADDHLD)。FSMC綜合了SRAM/ROM、PSRAM和NOR Flash產品的信號特點,定義了4種不同的異步時序模型。選用不同的時序模型時,需要設置不同的時序參數,如表2所列。在實際擴展時,根據選用存儲器的特征確定時序模型,從而確定各時間參數與存儲器讀/寫周期參數指標之間的計算關系;利用該計算關系和存儲芯片數據手冊中給定的參數指標,可計算出FSMC所需要的各時間參數,從而對時間參數寄存器進行合理的配置。3 STM32擴展S29GL系列NOR Flash實例S29GL系列NOR Flash簡介Spansion公司的S29GL系列芯片是采用90nm技術制造的高集成度NOR Flash存儲芯片,提供16~128 MB可選容量,支持最快25 ns的頁訪問速度和110 ns的隨機訪問速度,帶有最大64字節的寫緩沖區,以提供更快、更高效的編程,是嵌入式系統設計中大容量存儲器擴展的理想選擇。本文選用的型號為S29GL512P,容量為512×64K字(總容量64 MB),擴展到NOR Flash控制器管理的BANK1的第2個子BANK。STM32與S29GL512P的電路連接S25GL512P可通過控制引腳BYTE選擇對芯片的訪問單位(字/字節),區別在于:①對于芯片引腳DQ15,字模式時傳送最高數據位D15;字節模式時傳送最低地址A-1。②字模式時,數據引腳D0~D15上傳送數據信號;字節模式時,只有D0~D7上有信號。此處,將BYTE上拉到高電平,選擇16位的字訪問單位。FSMC數據線FSMC_D[15:0]與S29GL512P的D15~D0對應連接;FSMC地址線FSMC_A[25:0]的低25根與S29GL512P的地址線A[24:0]對應連接。由于S29GL512P芯片映射到BANK1的子BANK2,可確定其片選線應連接FSMC片選控制線FSMC_NE2。S29GL512P的RY/BY引腳連接FSMC的FSMC_NWAIT引腳,提供等待信號。FSMC的配置根據S29GL512P的映射位置,需要對FSMC_BCR2和FSMC_BTR2/BWTR2寄存器進行配置。(1)FSMC_BCR2配置S29GL512P的讀/寫采用統一時間參數,只需要設置時間寄存器FSMC_BTR2。配置存儲器類型為NORFlash,數據總線寬度為16位(字),不采用地址/數據復用,使能BANK1的子BANK2。(2)FSMC_BTR2由表2可知,異步NOR Flash時序模型Mode2/B需要設置時間參數DATAST和ADDSET。根據時序圖,兩個參數的計算公式如下:式中:Twc和Trc為所選存儲芯片的寫周期長度和讀操作周期長度;Twp為所選存儲芯片的寫信號持續長度。根據S29GL512P用戶手冊,可知參數Twc=Trc=130 ns,Twp=35 ns。設STM32微控制器采用72 MHz主頻,則HCLK=(1/72×10-6)s。通過上述公式計算,可取值為:DATAST=2,ADDSET=5。為了達到更好的控制效果,還應考慮FSMC自身延遲問題,使用校正公式:式中:TAVQV為所選存儲芯片訪問過程中,從地址有效至數據有效的時間域;Tsu(Data_NE)為STM32特征參數,從數據有效到FSMC_NE(片選)失效時間域;Ttv(A_NE)為STM32特征參數,從FSMC_NE有效至地址有效的時間域。TAVQV=130 ns,Tsu(Data_NE)+Ttv(A_NE]=36 ns,對DATAST參數進行校正,可得DATAST=3。應用STM32固件對FSMC進行初始化配置ST公司為用戶開發提供了完整、高效的工具和固件庫,其中使用C語言編寫的固件庫提供了覆蓋所有標準外設的函數,使用戶無需使用匯編操作外設特性,從而提高了程序的可讀性和易維護性。STM32固件庫中提供的FSMC的NOR Flash控制器操作固件,主要包括2個數據結構和3個函數。數據結構FSMC_NORSRAMTimingInitTypeDef對應 時間參數寄存器FSMC_BTR和FSMC_BWTR的結構定義;FSMC_NORSRAMinitTypeDef對應特征配置寄存器FSMC_BCR的結構定義,并包含2個指向對應BANK的FSMC_BTR和FSMC_BWTR寄存器的FSMC_NORSRAMTimingInitTypeDef結構指針。針對上述S29GL512P芯片擴展要求,利用固件庫進行的主要初始化操作如下:

  結語

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

  STM32探秘 之FSMC

  STM32的FSMC真是一個萬能的總線控制器,不僅可以控制SRAM,NOR FLASH,NAND FLASH,PC Card,還能控制LCD,TFT.

  一般越是復雜的東西,理解起來就很困難,但是使用上卻很方便,如USB.

  不過FSMC也有很詭異的地方。如

  *(volatile uint16_t *)0x60400000=0x0;

  // 實際地址A21=1,而非A22.[注:0x60400000=0x60000000|(1UL《《22) ]

  *(volatile uint16_t *)0x60800000=0x0;

  // 實際地址A22=1,而非A23 [注:0x60800000=0x60000000|(1UL《《23) ]1234

  為什么呢?那時我還以為軟件或硬件還是芯片有BUG,

  我就是從上面的不解中開始研究FSMC的…。。

  1.FSMC信號引腳

  STM32的管腳排列很沒有規律,而且分布在多個不同端口上,初始化要十分小心。需要用到的引腳都要先初始化成”復用功能推挽輸出”模式。(GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP )

  并且開啟時鐘 (RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx, ENABLE); ) 像STM32F103Z(144腳)芯片有獨立的地址和數據總線,而STM32F103V(100腳)就沒有, 地址和數據總線要像51單片機一樣分時復用,而在STM32F103R系列(64腳)就沒有FSMC模塊。

  復用總線時管腳:

  PD14,//FSMC_DA0

  PD15,//FSMC_DA1

  PD0 ,//FSMC_DA2

  PD1 ,//FSMC_DA3

  PE7 ,//FSMC_DA4

  PE8 ,//FSMC_DA5

  PE9 ,//FSMC_DA6

  PE10,//FSMC_DA7

  PE11,//FSMC_DA8

  PE12,//FSMC_DA9

  PE13,//FSMC_DA10

  PE14,//FSMC_DA11

  PE15,//FSMC_DA12

  PD8 ,//FSMC_DA13

  PD9 ,//FSMC_DA14

  PD10,//FSMC_DA15

  PD11,//FSMC_A16

  PD12,//FSMC_A17

  PD13,//FSMC_A18

  PE3 ,//FSMC_A19

  PE4 ,//FSMC_A20

  PE5 ,//FSMC_A21

  PE6 ,//FSMC_A22

  PE2 ,//FSMC_A23

  PG13,//FSMC_A24//STM32F103Z

  PG14,//FSMC_A25//STM32F103Z

  獨立的地址總線管腳:

  [注:總線是16Bit情況下,FSMC通過FSMC_NBL1,FSMC_NBL0,區分高低字節。下面W代表WORD,即16BIT字。]

  PF0 ,//FSMC_A0 //2^1=2W =4 Bytes //144PIN STM32F103Z

  PF1 ,//FSMC_A1 //2^2=4W =8 Bytes//144PIN STM32F103Z

  PF2 ,//FSMC_A2 //2^3=8W= 16 Bytes //144PIN STM32F103Z

  PF3 ,//FSMC_A3 //2^4=16W =32 Bytes//144PIN STM32F103Z

  PF4 ,//FSMC_A4 //2^5=32W =64 Bytes//144PIN STM32F103Z

  PF5 ,//FSMC_A5 //2^6=64W =128 Bytes//144PIN STM32F103Z

  PF12,//FSMC_A6 //2^7=128W =256 Bytes //144PIN STM32F103Z

  PF13,//FSMC_A7 //2^8=256W =512 Bytes //144PIN STM32F103Z

  PF14,//FSMC_A8 //2^9= 512W =1k Bytes//144PIN STM32F103Z

  PF15,//FSMC_A9 //2^10=1kW =2k Bytes//144PIN STM32F103Z

  PG0 ,//FSMC_A10 //2^11=2kW =4k Bytes//144PIN STM32F103Z

  PG1 ,//FSMC_A11 //2^12=4kW =8k Bytes//144PIN STM32F103Z

  PG2 ,//FSMC_A12 //2^13=8kW =16k Bytes//144PIN STM32F103Z

  PG3 ,//FSMC_A13 //2^14=16kW =32k Bytes//144PIN STM32F103Z

  PG4 ,//FSMC_A14 //2^15=32kW =64k Bytes//144PIN STM32F103Z

  PG5 ,//FSMC_A15 //2^16=64kW =128k Bytes//144PIN STM32F103Z

  PD11,//FSMC_A16 //2^17=128kW =256k Bytes

  PD12,//FSMC_A17 //2^18=256kW =512k Bytes

  PD13,//FSMC_A18 //2^19=512kW =1M Bytes

  PE3 ,//FSMC_A19 //2^20=1MW =2M Bytes

  PE4 ,//FSMC_A20 //2^21=2MW =4M Bytes

  PE5 ,//FSMC_A21 //2^22=4MW =8M Bytes

  PE6 ,//FSMC_A22 //2^23=8MW =16M Bytes

  PE2 ,//FSMC_A23 //2^24=16MW =32M Bytes //100PIN STM32F103V MAX

  PG13,//FSMC_A24 //2^25=32MW =64M Bytes //144PIN STM32F103Z

  PG14,//FSMC_A25 //2^26=64MW =128M Bytes //144PIN STM32F103Z

  獨立的數據總線管腳:

  PD14,//FSMC_D0

  PD15,//FSMC_D1

  PD0 ,//FSMC_D2

  PD1 ,//FSMC_D3

  PE7 ,//FSMC_D4

  PE8 ,//FSMC_D5

  PE9 ,//FSMC_D6

  PE10,//FSMC_D7

  PE11,//FSMC_D8

  PE12,//FSMC_D9

  PE13,//FSMC_D10

  PE14,//FSMC_D11

  PE15,//FSMC_D12

  PD8 ,//FSMC_D13

  PD9 ,//FSMC_D14

  PD10,//FSMC_D15

  控制信號

  PD4,//FSMC_NOE,/RD

  PD5,//FSMC_NWE,/WR

  PB7,//FSMC_NADV,/ALE

  PE1,//FSMC_NBL1,/UB

  PE0,//FSMC_NBL0,/LB

  PD7,//FSMC_NE1,/CS1

  PG9,//FSMC_NE2,/CS2

  PG10,//FSMC_NE3,/CS3

  PG12,//FSMC_NE4,/CS4

  //PD3,//FSMC_CLK

  //PD6,//FSMC_NWAIT

  2.地址的分配

  地址與片選是掛勾的,也就是說器件掛載在哪個片選引腳上,就固定了訪問地址范圍和FsmcInitStructure.FSMC_Bank

  //地址范圍:0x60000000~0x63FFFFFF,片選引腳PD7(FSMC_NE1),最大支持容量64MB,

  //[在STM32F103V(100腳)上地址范圍為A0~A23,最大容量16MB]

  FsmcInitStructure.FSMC_Bank =FSMC_Bank1_NORSRAM1;

  //地址范圍:0x64000000~0x67FFFFFF, 片選引腳PG9(FSMC_NE2),最大支持容量64MB

  FsmcInitStructure.FSMC_Bank =FSMC_Bank1_NORSRAM2;

  //地址范圍:0x68000000~0x6BFFFFFF,片選引腳PG10(FSMC_NE3),最大支持容量64MB

  FsmcInitStructure.FSMC_Bank =FSMC_Bank1_NORSRAM3;

  //地址范圍:0x6C000000~0x6FFFFFFF,片選引腳(PG12 FSMC_NE4),最大支持容量64MB

  FsmcInitStructure.FSMC_Bank =FSMC_Bank1_NORSRAM4;

  12345678910111213

  3.時序測量

  簡單原理草圖

  原理草圖

  寫數據的時序

  寫數據的時序

  這里寫圖片描述

  讀數據的時序

  這里寫圖片描述

  1.數據總線設定為16位寬情況下測量FSMC時序,即

  FsmcInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; 1

  使用邏輯分析儀測量(循環執行下面這條語句,下同)的波形

  *(volatile uint16_t *)(0x60002468UL)=0xABCD;

  12

  這里寫圖片描述

  可以看出NADV下降沿瞬間DATABUS上的數據被鎖存器鎖存,接著NWE低電平,總線輸出0xABCD,數據0xABCD被寫入0x1234這個地址。

  *(volatile uint16_t*)(0x60002469UL )=0xABCD;

  12

  這里寫圖片描述

  what?向這個地址寫出現了兩次總線操作。

  為了一探究竟,我引出了控制線。

  *(volatile uint16_t*)(0x60000468UL )=0xABCD;

  12

  向0x60000468UL寫入0xABCD到底會發什么?

  這里寫圖片描述

  從時序圖中我們可以看到, 向0x60000468UL在地址(在范圍:0x60000000~0x63FFFFFF內)寫入數據,片選引腳PD7(FSMC_NE1)被拉低。而在這之前,數據總線上先產生0x234,于是在NADV下降沿瞬間,數據被鎖存在地址鎖存器上(A0~A15),與A16~A25(如果有配置的話,會在NE1下降沿同時送出)組合成完整的地址信號。然而有人會問這個0x234是哪來的,你是否注意到它正好等于0x468/2,難道是巧合嗎?不是的,在16位數據總線情況下(NORSRAMInitStrc.FSMC_MemoryDataWidth=FSMC_MemoryDataWidth_16b;),

  像這樣

  *(volatile uint16_t*)(0x60000000|addr)=0xABCD;

  12

  寫入一個值,實際在地址線上產生的值是addr/2(即addr》》2),

  所以如果我們一定要向addrx寫入0xABCD則我們要這樣寫

  *(volatile uint16_t*)(0x60000000|addrx《《1)=0xABCD;1

  NADV為高電平時, NEW被拉低,NOE為高,且NBL1,NBL0為低,隨后數據總線線上產生0xABCD于是0xABCD被寫進SRAM的地址0x234中

  那如果我們向一個奇數地址像這樣

  *(volatile uint16_t*)(0x60000469UL )=0xABCD;寫入值會發生什么呢?

  12

  這里寫圖片描述

  從圖中我們可以看到,STM32其實分成了兩次字節寫的過程,第一次向0x469/2寫入0xCD,第二次向0x469/2+1寫入0xAB,

  有人會問你為什么這樣說,NWE為低時總線上不是0xCDAB嗎?沒錯,但是注意NBL1,NBL0的電平組合,NBL1連接到SRAM的nUB,NBL0連接到SRAM的nLB.第一次NEW為低時NBL1為低,NBL0為高,0xCDAB的高位被寫入SRAM的0x234,第二次NWE為低時NBL1為高,NBL0為低,0xCDAB的低位被寫入SRAM的0x235.

  當我們查看反匯編時發現,指令是相同的

  0x080036C4 0468 DCW 0x0468

  0x080036C6 6000 DCW 0x6000

  MOVW r0,#0xABCD

  LDR r1,[pc,#420] ; @0x080036C4//r1=0x60000468

  STRH r0,[r1,#0x00]

  0x080036C4 0469 DCW 0x0469

  0x080036C6 6000 DCW 0x6000

  MOVW r0,#0xABCD

  LDR r1,[pc,#420] ; @0x080036C4//r1=0x60000469

  STRH r0,[r1,#0x00]123456789101112

  以上是寫入的時序,下面測量讀取的時序

  首先我們向SRAM的真實地址0x234,0x235分別寫入0x8824,0x6507

  *(volatile uint16_t*)(0x60000000UL |0x234 《《1 )=0x8824;

  *(volatile uint16_t*)(0x60000000UL |0x235 《《1 )=0x6507;

  *(volatile uint16_t*)(0x60000000UL |0x236 《《1 )=0x6735;

  *(volatile uint16_t*)(0x60000000UL |0x237 《《1 )=0x2003;

  *(volatile uint16_t*)(0x60000000UL |0x238 《《1 )=0x6219;12345

  然后讀取:

  tmp=*(volatile uint16_t*)(0x60000468UL );

  12

  這里寫圖片描述

  如圖tmp結果為0x8824

  再試

  tmp=*(volatile uint16_t*)(0x60000469UL );

  12

  這里寫圖片描述

  nUB=nLB=0;按16bit讀

  從0x234讀得0X8824取高字節”88”作tmp低8位

  從0x235讀得0X6507取低字節”07”作tmp高8位

  最終tmp=0x0788

  接下來驗證更特殊的

  *(volatile uint8_t*)(0x60000469UL )=0xABCD;

  12

  這里寫圖片描述

  由于NBL1=0,NBL0=1,0xCD被寫入0x234的高地址,

  數據總線上出現的值是0xCDNN, NN是隨機數據,不過一般是和高位一樣的值

  *(volatile uint8_t*)(0x60000468UL )=0xABCD;

  12

  這里寫圖片描述

  由于NBL1=1,NBL0=0,0xCD被寫入0x234的低地址,

  數據總線上出現的值是0xNNCD,NN是隨機數據

  驗證字節讀取的

  首先我們向SRAM的真實地址0x234,0x235分別寫入0x8824,0x6507

  *(volatile uint16_t*)(0x60000000UL |0x234 《《1 )=0x8824;

  *(volatile uint16_t*)(0x60000000UL |0x235 《《1 )=0x6507;12

  然后這樣讀取

  tmp=*(volatile uint8_t*)(0x60000469UL );//對奇地址的單字節讀取,數據總線的高8位被返回 tmp=0x88

  12

  這里寫圖片描述

  tmp=*(volatile uint8_t*)(0x60000468UL );//對偶地址的單字節讀取,數據總線的低8位被返回 tmp=0x24

  12

  這里寫圖片描述

  還有更特殊的沒有,有!

  *(volatile int64_t*)(0x60000468UL)=0XABCDEF1234567890;//0XABCD EF12 3456 7890,如圖,分別進行了4次操作才寫完:

  12

  這里寫圖片描述

  *(volatile int64_t*)(0x60000469UL)=0XABCDEF1234567890;//0XABCD EF12 3456 7890,如圖,對奇地址寫比偶地址多一次操作:

  12

  這里寫圖片描述

  *(volatile uint16_t*)(0x60000000UL |0x234 《《1 )=0x8824;

  *(volatile uint16_t*)(0x60000000UL |0x235 《《1 )=0x6507;

  *(volatile uint16_t*)(0x60000000UL |0x236 《《1 )=0x6735;

  *(volatile uint16_t*)(0x60000000UL |0x237 《《1 )=0x2003;

  *(volatile uint16_t*)(0x60000000UL |0x238 《《1 )=0x6219;12345

  tmp=*(volatile int64_t*)(0x60000469UL);// tmp=0x1920036735650788

  12

  這里寫圖片描述

  tmp=*(volatile int64_t*)(0x60000468UL); //tmp=0x2003673565078824

  12

  這里寫圖片描述

  1.數據總線設定為8位寬情況下測量FSMC時序,即

  FsmcInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;

  *(volatile uint16_t*)(0x60000468UL )=0xABCD;

  12

  這里寫圖片描述

  *(volatile uint16_t*)(0x60000469UL )=0xABCD;

  12

  這里寫圖片描述

  *(volatile uint16_t*)(0x60000468UL )=0x3344;

  *(volatile uint16_t*)(0x60000469UL )=0xABCD;

  123

  tmp=(volatile uint16_t)(0x60000469UL ); //tmp=0xabcd

  這里寫圖片描述

  tmp=*(volatile uint16_t*)(0x60000468UL );

  12

  tmp=0xcd44這里寫圖片描述

  tmp=*(volatile uint8_t*)(0x60000468UL );

  12

  tmp=0x44

  這里寫圖片描述

  tmp=*(volatile uint8_t*)(0x60000469UL );

  tmp=0xcd

  123

  這里寫圖片描述

  *(volatile uint8_t*)(0x60000469UL )=0xABCD;

  12

  這里寫圖片描述

  *(volatile uint8_t*)(0x60000468UL )=0xABCD;

  12

  這里寫圖片描述

  tmp=*(volatile uint64_t*)(0x60000468UL );

  tmp=0x2003673565ABCD44

  123

  這里寫圖片描述

  tmp=*(volatile uint64_t*)(0x60000469UL );//tmp=0x192003673565ABCD

  12

  這里寫圖片描述

  *(volatile uint64_t*)(0x60000469UL )=0XABCDEF1234567890;

  12

  這里寫圖片描述

  *(volatile uint64_t*)(0x60000468UL )=0XABCDEF1234567890;

  12

  這里寫圖片描述

  鼓搗這么多,看得頭都大了,先寫到這,以后有發現再補充了

查看詳情

fsmc知識

展開查看更多

fsmc技術

FPGA與STM32通過FSMC總線通信的實驗

FPGA與STM32通過FSMC總線通信的實驗

FSMC總線通信簡介 FSMC是STM32系列采用的一種新型存儲器擴展技術。在外部存儲器擴展方面具有獨特的優勢,可根據系統的應用需要,方便進行不 同類型...

2024-11-12 標簽:FPGA通信STM32 1088 0

CKS32F4xx系列FSMC功能簡介

CKS32F4xx系列FSMC功能簡介

本課講為大家講解CKS32F4xx系列產品的FSMC應用實例,FSMC全稱是Flexible Static Memory Controller,讀作靈活...

2024-04-14 標簽:寄存器存儲器Nand flash 948 0

STM32F1系列MCU硬件電路FSMC接口設計

STM32F1系列MCU硬件電路FSMC接口設計

FSMC是STM32F1提供的一個靜態存儲控制器,是MCU用來擴展存儲器,可用來驅動SRAM、Nor Flash、NAND Flash。這里先簡單講解下...

2023-09-27 標簽:NANDSRAM存儲器靜態存儲控制器 3151 0

使用MM32F3270 FSMC驅動TFT-LCD

使用MM32F3270 FSMC驅動TFT-LCD

使用MM32F3270 FSMC驅動TFT-LCD

2023-09-27 標簽:控制器lcdTFT 1041 0

使用MM32F3270 FSMC驅動外部NOR Flash

使用MM32F3270 FSMC驅動外部NOR Flash

使用MM32F3270 FSMC驅動外部NOR Flash

2023-09-21 標簽:芯片NOR flashFSMC 951 0

使用MM32F3270 FSMC驅動OLED

使用MM32F3270 FSMC驅動OLED

使用MM32F3270 FSMC驅動OLED

2023-09-27 標簽:控制器OLED人機界面 954 0

淺析STM32 FSMC操作LCD的過程

淺析STM32 FSMC操作LCD的過程

FSMC稱為靈活的靜態存儲器,它能夠與同步或異步存儲器和16位PC存儲器卡連接,STM32F4的FSMC接口支持包括SRAM、NAND FLASH、NO...

2023-07-22 標簽:NAND靜態存儲器STM32F4 4016 0

基于MM32F5微控制器的FSMC接口外接SRAM存儲器的用法

基于MM32F5微控制器的FSMC接口外接SRAM存儲器的用法

MM32F5微控制器基于Arm STAR-MC1微控制器,最高主頻可達120MHz,集成了FPU單元和DSP擴展指令集,有不錯的算力。

2023-07-17 標簽:微控制器SRAM存儲器FSMC 1470 0

STM32驅動LCD的原理介紹

STM32驅動LCD的原理介紹

TFTLCD即薄膜晶體管液晶顯示器。它與無源TN-LCD、STN-LCD的簡單矩陣不同,它在液晶顯示屏的每一個像素上都設置有一個薄膜晶體管(TFT),可...

2023-07-11 標簽:STM32薄膜晶體管TFTLCD 2053 0

SystemVerilog的覆蓋率建模方式

為了確保驗證的完備性,我們需要量化驗證目標。SystemVerilog提供了一套豐富的覆蓋率建模方式。

2023-06-25 標簽:有限狀態機FIFO存儲FSMC 1172 0

查看更多>>

fsmc資訊

北京革新創展科技有限公司STM32+FPGA異構多核+樹莓派擴展綜合項目設計開發套件全新發布

北京革新創展科技有限公司STM32+FPGA異構多核+樹莓派擴展綜合項目設計開發套件全新發布

北京革新創展科技有限公司目前已經擁有基于嵌入式Linux系統的STM32MP157、AM4378、FPGA開發板和異構多核綜合創新實驗平臺。GX-ARM...

2022-03-17 標簽:fpga樹莓派FSMC 1829 0

為什么可以利用FSMC來使用外部RAM

為什么可以利用FSMC來使用外部RAM呢,首先了解一下STM32里的FSMC。大容量且引腳數在100腳以上的STM32F103芯片都帶有FSMC接口。F...

2022-04-28 標簽:STM32FSMC偉凌創芯 1930 0

使用MM32F3270單片機FSMC驅動外部NORFlash

在某些應用中,需要較大容量的存儲空間用于存儲數據;可以通過SPI 外擴NOR Flash,NAND Flash, 或者通過SDIO擴展SD Card或T...

2021-12-07 標簽:單片機32位MCUFSMC 805 0

深度解析STM32驅動LCD原理

深度解析STM32驅動LCD原理

TFTLCD即薄膜晶體管液晶顯示器。它與無源TN-LCD、STN-LCD的簡單矩陣不同,它在液晶顯示屏的每一個像素上都設置有一個薄膜晶體管(TFT),可...

2021-04-25 標簽:lcdSTM32FSMC 7265 0

STM32F1_ FSMC讀寫外部SRAM

STM32F1_ FSMC讀寫外部SRAM

STM32F1_FSMC讀寫外部SRAM

2020-04-08 標簽:sramSTM32F10FSMC 5632 0

STM32系列微控制器新型存儲器擴展技術--FSMC有什么優點?

STM32系列微控制器新型存儲器擴展技術--FSMC有什么優點?

FSMC管理1 GB的映射地址空間。該空間劃分為4個大小為256 MB的BANK,每個BANK又劃分為4個64 MB的子BANK,如表1所列。FSMC的...

2018-07-19 標簽:微控制器存儲器fsmc 2944 0

什么是FMSC_STM32_FMSC使用理解

什么是FMSC_STM32_FMSC使用理解

fsmc就是為了擴展內存的,如我們在STM32芯片外添加一個sram芯片,那么我們只需要把 sram芯片的地址線和數據線和STM32連接后,然后將內核規...

2017-11-14 標簽:存儲器fsmc 7809 0

查看更多>>

fsmc數據手冊

相關標簽

相關話題

換一批
  • 8K
    8K
    +關注
    8K分辨率是一種實驗中的數字視頻標準,由日本放送協會(NHK)、英國廣播公司(BBC)及意大利廣播電視公司(RAI)等機構所倡議推動 。
  • IGZO
    IGZO
    +關注
    IGZO的中文名叫氧化銦鎵鋅。簡單來說,IGZO是一種新型半導體材料,有著比非晶硅(α-Si)更高的電子遷移率。
  • 裸眼3D
    裸眼3D
    +關注
    3d是three-dimensional的縮寫,就是三維圖形。在計算機里顯示3d圖形,就是說在平面里顯示三維圖形。不像現實世界里,真實的三維空間,有真實的距離空間。
  • 三星
    三星
    +關注
    作為全球知名的公司,三星電子在2005 年宣布了“三星五大經營原則”,展現了其對企業社會責任的承諾。這些原則也是三星電子遵守法律與道德準則、履行企業社會責任和全球行為準則的基礎。
  • 點陣屏
    點陣屏
    +關注
    點陣屏技術以全彩為例是將192顆LED芯片三色一組封裝在一個模塊上,由模塊組成單元板,由單元板組成顯示屏。
  • 國產芯片
    國產芯片
    +關注
  • HT1621
    HT1621
    +關注
  • 天馬微電子
    天馬微電子
    +關注
    天馬微電子股份有限公司成立于1983年,1995年在深交所上市(股票代碼000050),是專業生產、經營液晶顯示器(LCD)及液晶顯示模塊(LCM)的高科技企業。經過三十多年的發展,現已發展成為一家集液晶顯示器的研發、設計、生產、銷售和服務為一體的大型公眾上市公司。
  • 8K電視
    8K電視
    +關注
    8K電視具有8K分辨率,8K超高清分辨率(7680×4320)足足比1920×1080分辨率大了16倍,也足足比3840×2160分辨率大了4倍,清晰度將是藍光版的16倍。
  • 浪涌電流
    浪涌電流
    +關注
  • THD
    THD
    +關注
  • LCP
    LCP
    +關注
      鏈路控制協議,簡稱LCP(Link Control Protocol)。它是PPP協議的一個子集,在PPP通信中,發送端和接收端通過發送LCP包來確定那些在數據傳輸中的必要信息。
  • 3D掃描
    3D掃描
    +關注
  • 車載顯示
    車載顯示
    +關注
    車載顯示器分有兩種一種是放置在客車上面觀看的電視,實質上就是車載電視一般有兩路視頻輸入,一路可以接車載DVD用,另一路接倒車影像車載攝像頭用,有的還帶有MP5視頻播放和藍牙功能,能夠在汽車同類運動工具上使用的顯示器,方便在汽車運動中使用。
  • 智慧照明
    智慧照明
    +關注
    智慧照明又叫智慧公共照明管理平臺或智慧路燈,是通過應用先進、高效、可靠的電力線載波通信技術和無線GPRS/CDMA通信技術等,實現對路燈的遠程集中控制與管理,具有根據車流量自動調節亮度、遠程照明控制、故障主動報警、燈具線纜防盜、遠程抄表等功能,能夠大幅節省電力資源,提升公共照明管理水平,節省維護成本。
  • TMS320LF2407A
    TMS320LF2407A
    +關注
  • 電子皮膚
    電子皮膚
    +關注
    早在2003年,日本東京大學的研究團隊利用低分子有機物——并五苯分子制成薄膜,通過其表面密布的壓力傳感器,實現了電子皮膚感知壓力。研究人員已經打造出一種能夠感知疼痛和觸感的電子皮膚,包裹這種電子皮膚的假體能夠幫助截肢患者避免受到傷害。
  • FRC
    FRC
    +關注
  • 量子點技術
    量子點技術
    +關注
    量子點是一種重要的低維半導體材料,其三個維度上的尺寸都不大于其對應的半導體材料的激子玻爾半徑的兩倍。量子點一般為球形或類球形,其直徑常在2-20nm之間。常見的量子點由IV、II-VI,IV-VI或III-V元素組成。具體的例子有硅量子點、鍺量子點、硫化鎘量子點、硒化鎘量子點、碲化鎘量子點、硒化鋅量子點、硫化鉛量子點、硒化鉛量子點、磷化銦量子點和砷化銦量子點等。
  • 柔宇科技
    柔宇科技
    +關注
    柔宇科技是全球柔性電子行業的領航者,致力于讓人們更好地感知世界。柔宇通過自主研發的核心柔性電子技術生產全柔性顯示屏和全柔性傳感器,以及包括折疊屏手機和其他智能設備在內的全系列新一代人機互動產品。
  • iPad2
    iPad2
    +關注
  • LCM模組
    LCM模組
    +關注
  • 億光
    億光
    +關注
    億光電子工業股份有限公司(Everlight Electronics., Ltd.)于1983年創立于臺灣臺北,在全球LED產業中具有關鍵性地位。追求卓越品質,我們致力于認證、研發、制造、質量管理、營銷及全球顧客服務。
  • 柔性顯示屏
    柔性顯示屏
    +關注
  • 線性恒流
    線性恒流
    +關注
  • LG Display
    LG Display
    +關注
  • dji
    dji
    +關注
    DJI 大疆創新致力于持續推動人類進步,自 2006 年成立以來,在無人機、手持影像、機器人教育及更多前沿創新領域不斷革新技術產品與解決方案,重塑人們的生產和生活方式。DJI 大疆創新與全球合作伙伴攜手開拓空間智能時代,讓科技之美超越想象。
  • PDP技術
    PDP技術
    +關注
  • 手機面板
    手機面板
    +關注
  • 抬頭顯示器
    抬頭顯示器
    +關注
      抬頭顯示器一般指平視顯示器,平視顯示器,是指將主要駕駛儀表姿態指引指示器和主要飛行參數投影到駕駛員的頭盔前或風擋玻璃上的一種顯示設備。

關注此標簽的用戶(0人)

編輯推薦廠商產品技術軟件/工具OS/語言教程專題

主站蜘蛛池模板: 色偷偷88欧美精品久久久| 人人入人人爱| 在线视频观看一区| mmmxxx69日本| 99久久国产免费中文无字幕| 亚洲国产成人精彩精品| 日韩国产片| 狠狠干亚洲色图| 天天躁狠狠躁| 成人免费久久精品国产片久久影院| 成人免费国产gav视频在线| xxxx性xxxx| 久久噜国产精品拍拍拍拍| 777777777妇女亚洲| 理论片午午伦夜理片影院99| 免费视频在线观看1| 正在播放久久| 欧美一级特黄啪啪片免费看| 国产高清色播视频免费看| 手机看片日韩永久福利盒子| 三级欧美在线| 亚洲免费网| 久久久久久99| 狠狠的操| 美女三级黄| 色妞网站| brazzersvideosex欧美最| 黄网观看| 婷婷在线影院| 国产精品9999久久久久仙踪林| a4yy私人毛片在线| 亚洲天堂免费在线| 成人在线a| 2019天天操夜夜操| 一品毛片| 国产一级aa大片毛片| 牛牛碰在线视频| 福利片午夜| 毛片色毛片18毛片美女| 天堂8中文在线最新版在线| 调教双性学霸美人|