[STM32F1]

FSMC地址线问题

[复制链接]
1468|18
手机看帖
扫描二维码
随时随地手机跟帖
张1239|  楼主 | 2019-10-13 17:15 | 显示全部楼层 |阅读模式
本帖最后由 张1239 于 2019-10-13 17:18 编辑

今天学习STM32中fsmc对于地址对应问题理解不了,就像下面这张图说的,可是明明只有26根地址线,怎么输出一个32位的地址,小白一个,还望大佬详细指点一下
7I7ZE1}IE2O33~4TZ{$0I2H.png

使用特权

评论回复
张1239|  楼主 | 2019-10-13 17:16 | 显示全部楼层
[img][/img]

使用特权

评论回复
张1239|  楼主 | 2019-10-13 17:25 | 显示全部楼层
有没有大佬指点一下,一天了,还是没整明白

使用特权

评论回复
张1239|  楼主 | 2019-10-13 20:58 | 显示全部楼层
不要沉,自己顶

使用特权

评论回复
张1239|  楼主 | 2019-10-13 20:59 | 显示全部楼层
求大佬指导

使用特权

评论回复
又东风| | 2019-10-13 23:39 | 显示全部楼层
STM32存储器地址是32位。它分配NOR_flash的空间,地址是60000000~6FFFFFFF,还是32位表示,这是STM32存储器地址。然后这么多地址,一个地址一个字节,可以存2^28个字节,就是2^8M字节,就是256M字节。而这么大存储空间我把他分成四块,能接4个flash。每个就是64M字节,64M字节需要2^26个地址就可以,(这个地址手册上说是HADDR,是需要转换到外部存储器的内部AHB地址线),估计就是起到一个将NOR_Flash地址HADDR转化成内部存储器地址作用(偏移),理解成两个不同的地址,AHB起到转换作用。HADDR[26:27]位用选择存储块的。就是2^2,4个存储块,每块64M字节。如果你用16位的NOR_flash,实际原理图中,也是地址0对0。STM32内部自动给他左移。

使用特权

评论回复
zchong| | 2019-10-14 07:45 | 显示全部楼层
你说的地址是对CPU内核说的,外部不一定非要32根地址线,这不难理解啊

使用特权

评论回复
mylonelyman| | 2019-10-14 07:51 | 显示全部楼层
学习学习。。

使用特权

评论回复
zilanwy| | 2019-10-14 10:07 | 显示全部楼层
本帖最后由 zilanwy 于 2019-10-14 10:08 编辑

地址线多少位只和你的外部SRAM大小有关,和32位或16位数据无关,你可以看一下SRAM的芯片手册,不同大小的SRAM对应不同数量的地址线。例如是1Mx8位的SRAM,你需要20根地址线,如果是64Kx8位的SRAM,你需要16根地址线。

使用特权

评论回复
张1239|  楼主 | 2019-10-14 11:53 | 显示全部楼层
又东风 发表于 2019-10-13 23:39
STM32存储器地址是32位。它分配NOR_flash的空间,地址是60000000~6FFFFFFF,还是32位表示,这是STM32存储器 ...

嗯嗯,好像有点懂了,谢谢大佬解答

使用特权

评论回复
张1239|  楼主 | 2019-10-14 11:55 | 显示全部楼层
zchong 发表于 2019-10-14 07:45
你说的地址是对CPU内核说的,外部不一定非要32根地址线,这不难理解啊

我是STM32小白,总想着32位地址就要32根地址线,所以有点转不过来

使用特权

评论回复
chunk| | 2019-10-16 11:55 | 显示全部楼层
你给出一个地址0x60000000,那26根地址线都是0,更高位的地址用来驱动NE1这个信号。

你需要了解外部存储器芯片是如何控制的,特别是那个“片选”信号是如何通过高位地址译码出来的。

搜一下“8031 74hc138 地址译码”这些关键字。

使用特权

评论回复
七颗咖啡豆| | 2019-10-16 14:28 | 显示全部楼层
偏移地址

使用特权

评论回复
张1239|  楼主 | 2019-10-16 16:40 | 显示全部楼层
chunk 发表于 2019-10-16 11:55
你给出一个地址0x60000000,那26根地址线都是0,更高位的地址用来驱动NE1这个信号。

你需要了解外部存储器 ...

好的,谢谢谢谢

使用特权

评论回复
张1239|  楼主 | 2019-10-16 20:00 | 显示全部楼层

嗯嗯,那26根线是不是就是用来送偏移地址的?

使用特权

评论回复
七颗咖啡豆| | 2019-10-17 08:59 | 显示全部楼层
ARM核给的指令当然是 还是0x06000000,FMC外设给你取0~25
FMC可以配置映射哪一段地址。如SDRAM可映射到0x40000000,SDRAM地址0就是ARM核0x40000000,

使用特权

评论回复
评论
张1239 2019-10-17 15:01 回复TA
嗯嗯,差不多理解了,哈哈哈,谢谢哥 
coshi| | 2019-11-13 13:20 | 显示全部楼层
会不会高位就是固定的值啊

使用特权

评论回复
晓伍| | 2019-11-13 13:50 | 显示全部楼层
我也长知识了

使用特权

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

本版积分规则

4

主题

26

帖子

0

粉丝