MM32系列微控制器為用戶提供了豐富的選擇,可適用于工業(yè)控制、智能家電、建筑安防、醫(yī)療設(shè)備以及消費(fèi)類電子產(chǎn)品等多方位嵌入式系統(tǒng)設(shè)計(jì)。在一些應(yīng)用中,使用MM32F3270系列的片內(nèi)SRAM還不夠支持應(yīng)用的需要,就要用外擴(kuò)SRAM/PSRAM的方式來擴(kuò)展。這時(shí)可以采用MM32F3270片內(nèi)的FSMC接口來擴(kuò)展SRAM/PSRAM。
因?yàn)镾RAM和PSRAM的異步讀寫接口完全相同,只是時(shí)序方面需要根據(jù)不同的芯片所規(guī)定的參數(shù)不同而做相關(guān)的設(shè)置即可。本文接下來就使用SRAM來代指對(duì)SRAM和PSRAM芯片的支持。
前文已經(jīng)介紹了MM32F3270的FMSC的接口功能與特色。結(jié)合MM32F3270 的FMSC外部接口信號(hào),可使用異步方式訪問SRAM,可以選用復(fù)用或非復(fù)用方式擴(kuò)展SRAM,還可以通過配置實(shí)現(xiàn)外擴(kuò)8位總線或16位總線接口的SRAM。
表1、FSMC控制器外部信號(hào)
MM32F3270系列MCU因?yàn)榉庋b的原因,導(dǎo)致只有部分MCU產(chǎn)品可以通過硬件復(fù)用出全部或部分的FSMC接口的相關(guān)GPIO,才能支持外接SRAM存儲(chǔ)器擴(kuò)展存儲(chǔ)空間。其中LQFP144引腳封裝MCU芯片支持連接地址數(shù)據(jù)非復(fù)用和復(fù)用方式外擴(kuò)并行SRAM;而LQFP100引腳封裝芯片因地址線縮減,僅支持連接地址數(shù)據(jù)復(fù)用方式外擴(kuò)并行SRAM。LQFP64因?yàn)闊o法引出足夠的地址與數(shù)據(jù)總線,不支持外擴(kuò)并行SRAM。
表2、MM32F3270不同封裝芯片與SRAM接口
目前市場(chǎng)上非復(fù)用型16位數(shù)據(jù)總線接口的SRAM/PSRAM較為普遍,下面就非復(fù)用方式,介紹MCU與SRAM的硬件原理圖設(shè)計(jì)和軟件寄存器配置。
在此用MM32F3270擴(kuò)展ISSI的SRAM :IS62WV51216,其原理框圖如下:
圖1、SRAM原理框圖
表3、SRAM引腳信號(hào)
IS62WV51216的數(shù)據(jù)按 16 位的Half Word尋址,容量1M字節(jié)。IS62WV51216可以通過CS, OE, WR, UB, LB控制電路,結(jié)合Address與Data I/O實(shí)現(xiàn)數(shù)據(jù)的高速讀寫。
01、FSMC非復(fù)用方式控制SRAM的硬件設(shè)計(jì)
表4、SRAM信號(hào)對(duì)應(yīng)的電源、復(fù)位與MCU接口的引腳說明
外部設(shè)備地址映像從FSMC的角度看,F(xiàn)MSC外擴(kuò)尋址空間用于訪問最多4個(gè)FSMC地址映射空間,可以用于訪問4個(gè)NOR閃存或SRAM/PSRAM存儲(chǔ)設(shè)備,并對(duì)應(yīng)的有4個(gè)專用的片選FSMC_NE[4:1]。
外部存儲(chǔ)器劃分為固定大小為64M字節(jié)的四個(gè)存儲(chǔ)塊,見下圖。
存儲(chǔ)區(qū)塊與片選信號(hào)對(duì)應(yīng)關(guān)系:
HADDR是需要轉(zhuǎn)換到外部存儲(chǔ)器的內(nèi)部AHB地址線。HADDR[25:0]包含外部存儲(chǔ)器地址。HADDR是字節(jié)地址,而存儲(chǔ)器訪問不都是按字節(jié)訪問,因此接到存儲(chǔ)器的地址線依存儲(chǔ)器的數(shù)據(jù)寬度有所不同,如下表:
對(duì)于16位寬度的外部存儲(chǔ)器,F(xiàn)SMC將在內(nèi)部使用HADDR[25:1]產(chǎn)生外部存儲(chǔ)器的地址FSMC_A[24:0]。不論外部存儲(chǔ)器的寬度是多少(16位或8位),F(xiàn)SMC_A[0]始終應(yīng)該連到外部存儲(chǔ)器的地址線A[0]。
根據(jù)外部SRAM設(shè)計(jì)原理圖:
02、FSMC非復(fù)用方式控制SRAM的硬件設(shè)計(jì)
根據(jù)配置的接口電路配置GPIO初始化程序與FSMC初始化程序。
void FSMC_SRAM_Init(void) { FSMC_InitTypeDef FSMC_InitStructure; FSMC_NORSRAM_Bank_InitTypeDef FSMC_BankInitStructure; FSMC_NORSRAM_BankStructInit( FSMC_BankInitStructure); FSMC_NORSRAMStructInit( FSMC_InitStructure); RCC_AHB3PeriphClockCmd(RCC_AHB3ENR_FSMC, ENABLE); FSMC_BankInitStructure.FSMC_SMReadPipe = 0; FSMC_BankInitStructure.FSMC_ReadyMode = 0; FSMC_BankInitStructure.FSMC_WritePeriod = 7; FSMC_BankInitStructure.FSMC_WriteHoldTime = 0; FSMC_BankInitStructure.FSMC_AddrSetTime = 1; FSMC_BankInitStructure.FSMC_ReadPeriod = 9; FSMC_BankInitStructure.FSMC_DataWidth = FSMC_DataWidth_16bits; FSMC_NORSRAM_Bank_Init( FSMC_BankInitStructure, FSMC_NORSRAM_BANK1); FSMC_InitStructure.FSMC_Mode = FSMC_Mode_NorFlash; FSMC_InitStructure.FSMC_TimingRegSelect = FSMC_TimingRegSelect_0; FSMC_InitStructure.FSMC_MemSize = FSMC_MemSize_64MB; FSMC_InitStructure.FSMC_MemType = FSMC_MemType_NorSRAM; FSMC_InitStructure.FSMC_AddrDataMode = FSMC_AddrDataDeMUX; FSMC_NORSRAMInit( FSMC_InitStructure); }
GPIO初始化
void SRAM_PIN_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOB | RCC_AHBENR_GPIOC | RCC_AHBENR_GPIOA | RCC_AHBENR_GPIOD | RCC_AHBENR_GPIOE | RCC_AHBENR_GPIOF | RCC_AHBENR_GPIOG, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); GPIO_PinAFConfig(GPIOD, GPIO_PinSource0, GPIO_AF_12); //DA2 GPIO_PinAFConfig(GPIOD, GPIO_PinSource1, GPIO_AF_12); //DA3 // ……部分代碼請(qǐng)參考樣例程序 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, GPIO_InitStructure); }
從選擇的片選信號(hào)與FSMC外擴(kuò)存儲(chǔ)映像空間可以得出Bank1地址為0x64000000,使用該地址作為讀寫外部SRAM的基地址。
#define Bank1_SRAM3_ADDR ((uint32_t)(0x64000000)) //used NE2 PG9 p = (vu16*)Bank1_SRAM3_ADDR; for (i = 0x00; i < BUFFERLEN; i++) { *p++ = (u16)writebuffer[i]; } p = (vu16*)Bank1_SRAM3_ADDR; for (i = 0x00; i < BUFFERLEN; i++) { readbbuffer[i] = *p++; }
讀寫外部SRAM與讀寫片內(nèi)SRAM是一樣的操作,不同的是從不同的對(duì)應(yīng)地址讀寫數(shù)據(jù)。通過上述代碼可以觀察到寫入數(shù)據(jù)與讀出的數(shù)據(jù)相同,表明配置準(zhǔn)確,Demo實(shí)驗(yàn)成功。
審核編輯:彭菁
-
芯片
+關(guān)注
關(guān)注
459文章
51831瀏覽量
432311 -
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7595瀏覽量
165688 -
sram
+關(guān)注
關(guān)注
6文章
778瀏覽量
115459 -
接口信號(hào)
+關(guān)注
關(guān)注
0文章
9瀏覽量
9064
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
請(qǐng)問串口SRAM和并口SRAM的引腳區(qū)別?
靈動(dòng)微課堂 (第189講) | 使用MM32F3270 FSMC驅(qū)動(dòng)SRAM
對(duì)SRAM時(shí)序進(jìn)行分析
AT32 支持的幾種與SRAM/PSRAN/NOR FLASH界面簡(jiǎn)介
可以將SRAM/pSRAM與QUAD SPI上的STM32L496控制器接口嗎?
PSRAM/SRAM與XMC硬件連接的推薦方法
新一代NV SRAM技術(shù)
SRAM,SRAM原理是什么?
sram作用
同步SRAM技術(shù)的特性和優(yōu)勢(shì),為應(yīng)用而選擇正確的存儲(chǔ)器

評(píng)論