OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4721|回复: 9

关于FSMC扩展SRAM实验有些问题想要请教

[复制链接]

22

主题

61

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2021-2-28
在线时间
22 小时
发表于 2021-3-25 17:35:28 | 显示全部楼层 |阅读模式
5金钱
①FSMC扩展SRAM的时候,好处很明显,他让SRAM的内存变大了,运行速度快了,可是那些内存哪里来
的?是FSMC本身的内存分给SRAM的吗?
②如果是FSMC分给SRAM的,那么FSMC会进行片选,会选择不同的地址,那么假设,FSMC选的地址是
ox68000000-Ox6BFFFFFF,那这个是SRAM本身的地址呢还是FSMC和SRAM一起的地址呢?
③如果是FSMC本身的地址,那么SRAM自身的内存还能够使用吗?

最佳答案

查看完整内容[请看2#楼]

(1)FSMC中文翻译是灵活的静态存储控制器,首先FSMC是控制器,不是内存,你想扩大内存需要加内存芯片。例如IS61WV102416ALL芯片!其中SRAM部分有四个片选对应四片SRAM地址从6000000h-6fffffffh对应扩展内存256MB,也就是说扩展SRAM单片最大容量是64MB一共可以扩展出4片。也就是你要用扩展SRAM方法来画图做电路板你想将内存扩展到256MB,那么你必须要买1片STM32F103ZET6和4片IS61WV102416ALL,通过不同的片选信号来访问地址6000000h ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2021-3-13
在线时间
4 小时
发表于 2021-3-25 17:35:29 | 显示全部楼层
(1)FSMC中文翻译是灵活的静态存储控制器,首先FSMC是控制器,不是内存,你想扩大内存需要加内存芯片。例如IS61WV102416ALL芯片!其中SRAM部分有四个片选对应四片SRAM地址从6000000h-6fffffffh对应扩展内存256MB,也就是说扩展SRAM单片最大容量是64MB一共可以扩展出4片。也就是你要用扩展SRAM方法来画图做电路板你想将内存扩展到256MB,那么你必须要买1片STM32F103ZET6和4片IS61WV102416ALL,通过不同的片选信号来访问地址6000000h-6fffffffh这段地址空间。如果你不买3片IS61WV102416ALL贴在板子上,程序也能编译通过,但是你访问地址空间是虚的。就像你用银行卡在ATM机中取钱,虽然你输入密码正确了,但是你卡里没钱,你就没法取得正确数据。(2)FSMC控制器可以NOR/PSRAM可寻址的空间是6000000h-6fffffffh,一共是4*64MB,对应4个片选信号,你可以1号片选挂NORFLASH 2号片选挂SRAM,3号片选挂NORFLASH,4号片选挂SRAM,等等想怎么挂就怎么挂。FSMC总线的总寻址空间是1GB,60000000h-9fffffffh,一共四个BANK,每个bank又对应4个片选,其中您问的是bank1,bank1可以挂载4片NORFLASH/SRAM.这并不是谁分享给谁的问题,这是FSMC寻址问题,只要FSMC要访问地址6000000h-6fffffffh,那么你只能用NORFLASH芯片或者SRAM芯片。不挂载芯片不能实现功能,挂载非NORFLASH芯片或者SRAM芯片也不行。同样道理bank2和bank3只能挂载nandflah芯片,如果挂的不是nandflash芯片是实现不了功能的,bank4只能挂载PC card,挂载的不是PC card功能是实现不了的。
(3)FSMC寻址能力是60000000h-9fffffffh,你可想象一下这是1GB个门牌号,就像你们公司在一个科技园区,这个园区一共有1GB个公司,那么FSMC可以找到门派号是60000000h的公司,也可找到60000001h,也可以找到9fffffffh公司,但是你要是想进入这些公司,那么这些公司就是必须存在的,60000000h-9fffffffh只是门牌号,门派号对应的公司就是你挂载的IS61WV102416ALL芯片,如果你板子上没焊接IS61WV102416ALL芯片,你也可以找到门牌号,但是你不能进入公司。
(4)这个东西就是电脑的寻址总线,你的电脑可扩展16GB内存,但是你只给他在内存条卡槽上插了一个8GB内存条,你的电脑寻址能力还是16GB,但是你只能在8GB范围内进行操作,这不是电脑寻址能力不行,是你只插了一根8GB内存条。
(5)对应的微机原理和C语言就是指针问题,一个是取地址符号& ,一个是*取值符号,在60000000h-9fffffffh,你可以用&寻址符号去寻址,但是你不能用*取值符号去取值,一旦取值那么你得到数据是不确定的,如果你向60000000h地址写入了0x05,但是你要是没焊接IS61WV102416ALL芯片,你再去读取的时候,读回来的数据99.99999%不是0x05!
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2021-3-25 22:00:08 | 显示全部楼层
32位,正常寻址2^32=4Gbyte   除去自带的内存等信息  有些地址总线用fsmc控制了 等于外部内存映射到内部地址  实际还是用的2^32的地址
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-3-26 02:00:21 | 显示全部楼层
1,内存是外扩了内存芯片,不是FSMC自带的。而是通过FSMC访问外部SRAM芯片而已。
2,是FSMC访问SRAM的地址,SRAM本身没有地址的。
3,SRAM自身的内存是指?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

22

主题

61

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2021-2-28
在线时间
22 小时
 楼主| 发表于 2021-3-26 15:49:14 | 显示全部楼层
正点原子 发表于 2021-3-26 02:00
1,内存是外扩了内存芯片,不是FSMC自带的。而是通过FSMC访问外部SRAM芯片而已。
2,是FSMC访问SRAM的地址 ...

SRAM是一个存储器,首先假设SRAM的内存是112KB,通过FSMC的外扩,扩大了SRAM的内存,变成了1M。首先,在不使用FSMC的时候,SRAM能够使用的内存只有112KB,但是使用FSMC之后,内存达到了1M。那是不是我可以理解为原来把SRAM的内存只是设置为了112KB,通过FSMC强行把内存扩展为1M,也就是不管这112KB,还是这1M,都是完完全全在SRAM中的,只是原来内存小只是因为设置的小而已?就像是一亩地,我有一亩,但是我没有使用FSMC之前我只能使用1/3,但是使用FSMC之后,我就能受用他的2/3了?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-3-27 02:35:40 | 显示全部楼层
zhaohaitao 发表于 2021-3-26 15:49
SRAM是一个存储器,首先假设SRAM的内存是112KB,通过FSMC的外扩,扩大了SRAM的内存,变成了1M。首先,在 ...

不对。
112K是STM32内部的,是芯片自带的
1M是外部的,得另外外扩一个IC
很容易理解差异吧?
他们的速度完全不一样,内部速度快很多。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

22

主题

61

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2021-2-28
在线时间
22 小时
 楼主| 发表于 2021-3-27 11:52:42 | 显示全部楼层
正点原子 发表于 2021-3-27 02:35
不对。
112K是STM32内部的,是芯片自带的
1M是外部的,得另外外扩一个IC

那也就是说,平常运行使用的内存就是stm32自带的,根本没有使用到SRAM,扩展内存的时候,才使用到他来增加空间?
回复

使用道具 举报

22

主题

61

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2021-2-28
在线时间
22 小时
 楼主| 发表于 2021-3-27 14:49:31 | 显示全部楼层
LightSource 发表于 2021-3-26 01:08
(1)FSMC中文翻译是灵活的静态存储控制器,首先FSMC是控制器,不是内存,你想扩大内存需要加内存芯片。例 ...

OK,懂了,谢谢大神
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-3-28 01:44:09 | 显示全部楼层
zhaohaitao 发表于 2021-3-27 11:52
那也就是说,平常运行使用的内存就是stm32自带的,根本没有使用到SRAM,扩展内存的时候,才使用到他来增 ...

内部的内存也叫SRAM啊。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

22

主题

61

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2021-2-28
在线时间
22 小时
 楼主| 发表于 2021-3-29 18:16:11 | 显示全部楼层
正点原子 发表于 2021-3-28 01:44
内部的内存也叫SRAM啊。。。。

OK,懂了,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 10:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表