OpenEdv-开源电子网

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

关于STM32f4 fsmc地址映射

[复制链接]

10

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2019-1-14
在线时间
49 小时
发表于 2019-3-15 17:52:35 | 显示全部楼层 |阅读模式
       哈哈哈本人比较菜,看了原子哥的视频还是稀里糊涂的,于是就来论坛逛逛,http://www.openedv.com/forum.php?mod=viewthread&tid=268608看了这个老哥发的帖子恍然大悟,但是感觉好多人还是不懂,于是补充说明一下。大家可以两边对照着看。
       废话不多说,言归正传。
       以BANK1第一区域为例,HADDR[27:00]总共28根地址线,对应FSMC分配为[27:26]作为片选由cpu置为00,[25:0]作为FSMC_A。根据手册1194页图404,FSMC NOR/PSRAM起始地址为0x6000 0000h,因此第一区也就从改地址开始,可寻址地址线为26根,因此可寻址地址范围也就是0x6000 0000h~0x63FF FFFFh(这个不懂的童鞋自己补一下)。stm32 FSMC一个地址表示一个存储单元就是一个字节,如果外部SRAM也是一个地址对应一个字节的话,很显然两者地址一一对应即可:
       ....
       0x6000 0001 ---------- 0x0000 0001
       0x6000 0000 ---------- 0x0000 0000

       以此类推。简单来说就是,你对FSMC操作地址0x6000 0000,他就知道你其实是要访问外部SRAM 0x0000 0001 地址!没错~
       但是问题来了,如果外部SRAM一个地址对应两个字节的话,明显FSMC跟外部SRAM的地址访问就肯定不一样了。为了说明这个情况的地址映射,我举个简单的例子,外部SRAM只有4个字节,也就是只有两个地址:0x0000 0000和0x0000 0001(一个地址对应两个字节),这个时候地址空间映射就变成了:
       ....
       0x6000 0002 和 0x6000 0003 ---------- 0x0000 0001
       0x6000 0000 和 0x6000 0001 ---------- 0x0000 0000

       那这个时候我们要怎么访问外部SRAM呢?!!
       STM32的设计是这样的:配置stm32寄存器告诉他外部SRAM是16位宽的,你对FSMC操作地址时由32对地址自动右移一位完成外部SRAM访问。比如说,对于0x6000 0000这个地址进行16位数据操作时,假设32没有对地址进行右移操作时,访问到的外部SRAM地址是0x0000 0000,好像是没啥问题!但是如果是0x6000 0001,这个时候访问的就是外部SRAM 0x0000 0001了,明显不对了!
       我们在进行右移操作后看看:0x6000 0000对应地址0x0000 0000,0x0000 0000右移一位还是0x0000 0000,对上了!0x6000 0002 对应 0x0000 0002,右移一位变成0x0000 0001,同样也对上了!
       但这个时候我们发现了,FSMC 只能利用偶数地址对SRAM进行访问,那奇数地址咋办,如果是0x6000 0001,对应0x0000 0001,0x0000 0001右移一位是0x0000 0000,跟0x6000 0000重复了!为了解决这个问题,需要利用LB UB信号帮忙。
       如果地址是偶数地址,UB LB均为0,信号无效,寻址地址右移一位直接进行16位数据访问。如果地址是奇数地址,为了不跟偶数地址重复,利用UB LB信号区分高低字节访问,UB=0,LB=1时,奇数地址访问对应外部SRAM地址(比如0x6000 0001时对应0x0000 0000)的高字节。同理 UB=1,LB=0的情况。
       可能我自己理解的也不全对,错的地方还请大家指出,一起学习学习。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14436
金钱
14436
注册时间
2018-8-3
在线时间
1157 小时
发表于 2019-3-15 18:37:42 | 显示全部楼层
啊哈~加油!!
回复 支持 反对

使用道具 举报

头像被屏蔽

0

主题

207

帖子

0

精华

禁止发言

积分
276
金钱
276
注册时间
2019-3-4
在线时间
4 小时
发表于 2019-3-16 08:15:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 20:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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