发新帖我要提问
12
返回列表
打印
[应用相关]

stm32扩展外部SRAM总结

[复制链接]
楼主: externally
手机看帖
扫描二维码
随时随地手机跟帖
21
externally|  楼主 | 2020-7-21 20:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
我们FSMC控制SRAM为例来说明:

使用特权

评论回复
22
externally|  楼主 | 2020-7-21 20:56 | 只看该作者
你会发现居然和SRAM中的线居然高度统一(那是当然喏,我们就是讲的FSMC嘛!)

使用特权

评论回复
23
externally|  楼主 | 2020-7-21 20:57 | 只看该作者
1.FSMC_NBL[1:0]分别对应于LB#、UB#,有什么用呢?提供数据掩码信号。具体是怎么回事呢?

使用特权

评论回复
24
externally|  楼主 | 2020-7-21 20:57 | 只看该作者
还记得前面提到的行地址线吗?一根行地址线对应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的信号无效。这样是不是有一部分信号没有用呢?好像被掩盖了。因此它们被称为数据掩码信号。

使用特权

评论回复
25
externally|  楼主 | 2020-7-21 20:58 | 只看该作者
2.FSMC_NE[1:4]是个很有趣的东西,它决定了FSMC可以控制多个存储器。

使用特权

评论回复
26
externally|  楼主 | 2020-7-21 20:58 | 只看该作者
这里就要提及FSMC的地址映射啦!

使用特权

评论回复
27
externally|  楼主 | 2020-7-21 20:59 | 只看该作者
首先,有一点我们必须明白,对于32位的stm32单片机来说,它能够管理的地址大小为4GB,而stm32将4GB的地址空间中的0x60000000到0x9FFFFFFF共1GB的空间分给外部内存,所以这1GB的空间就成了我们的小天地,供我们自由玩耍。

使用特权

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

使用特权

评论回复
29
externally|  楼主 | 2020-7-21 21:00 | 只看该作者
细心的你肯定还会发现,每个Bnak中居然还有4x64MB这种文字,这是什么意思呢?

使用特权

评论回复
30
externally|  楼主 | 2020-7-21 21:01 | 只看该作者
Bank内部的256MB空间又被分成4个小块,每块64M,各自有相应的控制引脚用于连接片选信号。以Bank1为例,见下图:

使用特权

评论回复
31
externally|  楼主 | 2020-7-21 21:02 | 只看该作者
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就可以任由我们摆布啦。

使用特权

评论回复
32
externally|  楼主 | 2020-7-21 21:02 | 只看该作者
因此,对于你使用IS62WV51216来说,一定要注意你的CS端是接的FSMC的哪个FSMC_NE端,这决定你在程序访问哪个地址范围。

使用特权

评论回复
33
externally|  楼主 | 2020-7-21 21:04 | 只看该作者
下面来说一下在stm32F407中SRAM的硬件连接:

使用特权

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

使用特权

评论回复
35
externally|  楼主 | 2020-7-21 21:05 | 只看该作者
怎么样?用FSMC来控制IS62WV51216还是很简单吧!

使用特权

评论回复
36
externally|  楼主 | 2020-7-21 21:06 | 只看该作者
对于编程的具体细节我这里就不讲解了,懂了原理,写起代码来也很简单的。

使用特权

评论回复
37
externally|  楼主 | 2020-7-21 21:06 | 只看该作者

作者:沙子硅
链接:https://www.jianshu.com/p/2e61bfe215c3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则