stm32扩展外部SRAM总结

SRAM

博客主页,欢迎访问:blog.spursgo.com

折腾过电脑的朋友都知道,当电脑运行比较卡的时候,我们可以通过给电脑加装内存条来改善电脑的性能。那么号称微型计算机的单片机能不能像电脑一样加装内存条呢?装内存条倒是不行,但是我们可以给单片机外加和内存条效果一样的SRAM来提升单片机的性能。下面以STM32F407ZGT6单片机来讲解一下来扩展外部SRAM。

原理:给STM32芯片扩展内存与给PC扩展内存的原理是一样的,只是PC上一般以内存条的形式扩展,内存条实质是由多个内存颗粒(即SRAM芯片)组成的通用标准模块,而STM32直接与SRAM芯片连接。

从上面的图片中我们可以看到,ARM芯片的下面就是我们今天的主角SRAM,具体型号为IS62WV51216。

黑黢黢的芯片我们也看不出什么东西来,下面就来看一看IS62WV51216的管脚图吧。


管脚图


哇!这么居然这么多管脚!别着急,下面我们来慢慢分析这些管脚。

除开基本的电源和地线,IS62WV51216的管脚大概可以这么来分类:


管脚说明

看吧!这样一分类,是不是就没有那么恐怖啦。

所以IS62WV51216的管脚总的来说大致分为:电源线、地线、地址线、数据线、片选线、写使能端、读使能端和数据掩码信号线。

从这个图中我们可以看出IS62WV51216有19根地址线和16根数据线,从这些数据中我们可以分析出IS62WV51216的存储大小为1M,那么这个1M是怎么分析出来的呢?

我们得来说说IS62WV51216的存储原理。

首先,我们来谈一谈一般的SRAM的存储原理:


sram存储矩阵模型

sram的存储模型我们可以用矩阵来说明:

SRAM内部包含的存储阵列,可以把它理解成一张表格,数据就填在这张表格上。和表格查找一样,指定一个行地址和列地址,就可以精确地找到目标单元格,这是SRAM芯片寻址的基本原理。这样的每个单元格被称为存储单元,而这样的表则被称为存储矩阵。地址译码器把N根地址线转换成2的N次方根信号线,每根信号线对应一行或一列存储单元,通过地址线找到具体的存储单元,实现寻址。如果存储阵列比较大,地址线会分成行和列地址,或者行、列分时复用同一地址总线,访问数据寻址时先用地址线传输行地址再传输列地址。

但是呢?你会发现,这个原理好像不太适用于IS62WV51216,为什么呢?

其实不然,因为我们使用的SRAM比较小,IS62WV51216没有列地址线。它只有19根行地址线,那么,我们就可以这么来解释:IS62WV51216有16根数据线,也就是说它的数据宽度为16位,一个行地址也就对应16位,即2字节空间。好,那现在来计算一下IS62WV51216有多少个行地址。2的19次方等于512K,在512K的基础之上在乘我们之前计算的2字节,不正好是1024K,也就是1M吗?1M后面的单位是B,即Byte,而不是Bit哦。

这样的话你就会发现IS62WV51216这个名字中本身就包含了大量的信息:IS62WV51216共有512K个行地址,数据宽度为16位,再加以计算就可以得到它的存储大小为1M啦,有趣吧!

SRAM的大致原理我们讲完了,但是SRAM到底在stm32中到底是怎么被使用的呢?

下面,一位大神即将登场,FSMC。

STM32F407系列芯片使用FSMC外设来管理扩展的存储器

FSMC是Flexible StaticMemory Controller的缩写,就是灵活的静态存储控制器。它可以用于驱动包括SRAM、NOR FLASH以及NAND FLSAH类型的存储器

其他我们不用管,从上面我们可以总结的是,stm32雇佣FSMC这个管家来管理我们的IS62WV51216。

来来来,我们来看看FSMC的庐山真面目:


FSMC控制器框图

蒙了吧!又是这么多信号线,不要怕,我们还是来总结归纳一下。

我们FSMC控制SRAM为例来说明:

FSMC中的SRAM控制信号线

你会发现居然和SRAM中的线居然高度统一(那是当然喏,我们就是讲的FSMC嘛!)

1.FSMC_NBL[1:0]分别对应于LB#、UB#,有什么用呢?提供数据掩码信号。具体是怎么回事呢?

还记得前面提到的行地址线吗?一根行地址线对应16位的数据,我们可以把16位的数据分为高字节和低字节。当要访问宽度为16位的数据时,使用行地址线指出地址,然后把UB#和LB#线都设置为低电平(FSMC_NBL0和FSMC_NBL1为低电平),那么I/O0-I/O15线(FSMC_D0到FSMC_D15)都有效,它们一起输出该地址的16位数据(或者接收16位数据到该地址);当要访问宽度为8位的数据时,使用行地址线指出地址,然后把UB#(FSMC_NBL0)设置为低电平,I/O8-I/O15(FSMC_D8到FSMC_D15)会对应输出该地址的高8位,I/O0-I/O7的信号无效(或者把LB#(FSMC_NBL1)设置为低电平,I/O0-I/O7(FSMC_D0到FSMC_D7)会对应输出该地址的低8位,I/O8-I/O15的信号无效。这样是不是有一部分信号没有用呢?好像被掩盖了。因此它们被称为数据掩码信号。

2.FSMC_NE[1:4]是个很有趣的东西,它决定了FSMC可以控制多个存储器。

这里就要提及FSMC的地址映射啦!


FSMC地址映射

首先,有一点我们必须明白,对于32位的stm32单片机来说,它能够管理的地址大小为4GB,而stm32将4GB的地址空间中的0x60000000到0x9FFFFFFF共1GB的空间分给外部内存,所以这1GB的空间就成了我们的小天地,供我们自由玩耍。

然后强势的FSMC就接管了这1GB的空间,FSMC将图中的1GB大小的External RAM存储区域分成了4个Bank区域,每个Bank对应于stm32内部寻址空间的不同地址范围。那么为什么要分为不同的Bank区域呢?因为不同的Bank可以来管理不同的外部存储设备,比如NOR Flash及SRAM存储器只能使用Bank1的地址,NAND Flash存储器只能使用Bank2和Bank3的地址,等。

细心的你肯定还会发现,每个Bnak中居然还有4x64MB这种文字,这是什么意思呢?


Bank内部的256MB空间又被分成4个小块,每块64M,各自有相应的控制引脚用于连接片选信号。以Bank1为例,见下图:


Bank1内部的小块地址分配

OK!重点来了!

刚刚前面提到的FSMC_NE[4:1]信号线就分别对应图中的FSMC bank1 NOR/PSRAM4到FSMC bank1 NOR/PSRAM1。当STM32访问0x6C000000-0x6FFFFFFF地址空间时,会访问到Bank1的第3小块区域:FSMC bank1 NOR/PSRAM3相应的FSMC_NE3信号线会输出控制信号(即片选信号),如果这个时候FSMC_NE3处刚好接上IS62WV51216的CS端,那么IS62WV51216就可以任由我们摆布啦。

因此,对于你使用IS62WV51216来说,一定要注意你的CS端是接的FSMC的哪个FSMC_NE端,这决定你在程序访问哪个地址范围。

下面来说一下在stm32F407中SRAM的硬件连接:


外部SRAM硬件连接图

图中需要注意的是,除了PG12的连接不固定外,其他的管脚都要按照图中的方式连,为什么呢?因为对于FSMC来说,它已经集成到了单片机内部,它的提供给的管脚已经确定了,是不能改动的。唯一具有灵活性的就是FSMC_NE,具体用哪个FSMC_NE管脚来和你的SRAM相连,当然是你的自由,但是不要忘了,你要找到你选的FSMC_NE所对应的地址范围,不然写程序的时候就搞不清喏!

怎么样?用FSMC来控制IS62WV51216还是很简单吧!

对于编程的具体细节我这里就不讲解了,懂了原理,写起代码来也很简单的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容