STM32接口FSMC/FMC难点详解
STM32接口FSMC/FMC难点详解
STM32F767的FMC将外部存储器划分为6个固定大小的256M的存储区域,如下图
STM32F767的FMC 存储块 1(Bank1 )被分为 4个区,每个区管理64M 字节空间,每个 区都有独立的寄存器对所连接储进行配置。Bank1 的 256M 字节空间由 28 根地址线 根地址线(HADDR[27:0] )寻址。 这里 HADDR[27:0]是内部AHB地址总线,其中地址总线HADDR[25:0]来自外部存储器地址FMC_A[25:0](FMC_A[25:0]会接到外部存储器的地址线上,也就是HADDR内部总线的[25:0]来自外部存储器地址线), 而 HADDR[26:27] 对4个区进行寻址。如表 18.1.2.1所示:
比如外部存储器接到FMC_NE1上面,那么外部存储器的地址为HADDR[26:27] +FMC_A[25:0]=0x60000000+FMC_A[25:0]。
HADDR[25:0] 位包含外部存储器地址,由于 HADDR 为字节地址,而存储器按字寻址,所以根据存储器数据宽度不同,实际向存储器发送的地址也将有所不同,如下表所示。
因为一个地址对应1个字节数据,所以64M字节的地址量,就能表示64x8=512Mb的数据,也就是外部存储器最大容量为512Mb。
当接的是8位宽度存储器的时候,也就是一个地址正好可以操作一个字节(8位)的数据,需要26根地址线:那么 HADDR[25:0] = FMC _A [25:0] ,就可以了。
当接的是16位宽度存储器的时候,那么一个地址就可以操作一个字(16位)的数据那么就不需要26根地址线了,HADDR[0]就没有用到,所以: HADDR[25:1] = FMC _A[24:0] 。
例如TFTLCD屏(16位宽存储器)的RS脚接到FMC_A18上面,使用FMC_NE1(就是使用BANK1的子bank1),
外部存储器地址线寻址到A18为0时也即是FMC_A[24:0]=0x3FFFF,左移一位付给内部总线HADDR[25:1]=00 0000 0111 1111 1111 1111 1110=0x7fffe,所以内部总线读写外部存储器命令(REG)的地址(寻址)就变为0x60000000+0X7FFFE(FMC_A18即RS为0时);
部存储器地址线寻址到A18为1时也即是FMC_A[24:0]=0x40000,左移一位付给内部总线HADDR[25:1]=00 0000 1000 0000 0000 0000 0000 =0x8000,内部总线读写外部存储器数据(RAM)的地址变为0x60000000+0X80000(FMC_A18即RS为1时)。
32位宽的存储器也是如此。
无论外部接8位/16位/32位宽设备,FMC_A[0]永远接在外部设备地址A[0],HADDR[27:26]的设置,是不需要我们干预的,比如当你使用Bank1的第一个区,即使用FMC_NE1连接外部设备的时候,即对应了HADDR[27:26]=00,然后我们需要配置第一区的寄存器组,就可以使用了。
STM32接口FSMC/FMC难点详解的更多相关文章
- STM32开发 -- 4G模块开发详解(转)
STM32开发 -- 4G模块开发详解(1) STM32开发 -- 4G模块开发详解(2) STM32开发 -- 4G模块开发详解(3) STM32开发 -- 4G模块开发详解(4)
- 【python3+request】python3+requests接口自动化测试框架实例详解教程
转自:https://my.oschina.net/u/3041656/blog/820023 [python3+request]python3+requests接口自动化测试框架实例详解教程 前段时 ...
- OpenCV学习C++接口 Mat像素遍历详解
OpenCV学习C++接口 Mat像素遍历详解
- 微信JS接口汇总及使用详解
这篇文章主要介绍了微信JS接口汇总及使用详解,十分的全面.详尽,包含分享到朋友圈,分享给朋友,分享到QQ,拍照或从手机相册中选图,识别音频并返回识别结果,使用微信内置地图查看位置等接口,有需要的小伙伴 ...
- “全栈2019”Java第六十五章:接口与默认方法详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- python+requests接口自动化测试框架实例详解
python+requests接口自动化测试框架实例详解 转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实 ...
- Jmeter接口之响应断言详解
响应断言 : 对服务器的响应进行断言校验 Apply to 应用范围: main sample and sub sample, main sample only , sub-sample only , ...
- 接口测试之HTTP协议详解
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...
- STM32的时钟树深入详解以及RCC配置
在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法 如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理: 1)对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT ...
随机推荐
- hdu 1528 Card Game Cheater (二分匹配)
Card Game Cheater Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- Oracle-RAC原理
Oracle-RAC原理 来源 https://blog.csdn.net/qq_34556414/article/details/79001267 单点数据库 VS RAC 单节点数据库,如果实例宕 ...
- 【倍增】LCM QUERY
给一个序列,每次给一个长度l,问长度为l的区间中lcm最小的. 题解:因为ai<60,所以以某个点为左端点的区间的lcm只有最多60种的情况,而且相同的lcm区间的连续的. 所以就想到一个n*6 ...
- [2018国家集训队][UOJ449] 喂鸽子 [dp+组合数学]
题面 传送门 思路 首先,这道题是可以暴力min-max反演+NTT做出来的......但是这个不美观,我来讲一个做起来舒服一点的做法 一个非常basic的idea:我们发现在一只鸽子吃饱以后再喂给它 ...
- 信息工程学院技能大赛 计算机程序设计(Java)大赛试题
前期准备与后期上传工作: (1)必须先建立项目和包,项目名为"JavaContest",包结构为:"contest.c+序号+姓名",其中序号为两位为本人大赛报 ...
- [bzoj 1594]猜数游戏
主要是怎么处理矛盾 矛盾的条件有$2$种: 第一种是当把所有相等的$a$都全部找到后,他们并没有全联通,所以矛盾,因为没有两个是相同的 第二种是在2组$(l,r,a)$,$(l1,r1,a1)$中,$ ...
- python3.5安装pycrypto
在python中使用AES加密是一种有效的加密方式,如果你研究过微信公众号api就会发现,它也用的是这个加密的.在写代码的时候,要安装crypto模块,在linux或者mac上都好说,但是在windo ...
- [zhuan]Dalvik 分析 - Class加载篇
http://blog.csdn.net/zhangyun438/article/details/17192787 内容如下: Java 源代码经过编译后会生成后缀为class的文件,也即字节码文件. ...
- Tomcat7项目迁移到Tomcat8中文乱码问题
我打算开始使用Tomcat8了,先解决中文乱码问题,在解决其它的问题! 个人推荐:修改server.xml方式 对于SpringMVC报的错误我稍后在补充问题 1.问题描述 Tomcat 7下项目切换 ...
- python 面试题(2)
1.Python是如何进行内存管理的? 答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制 一.对象的引用计数机制 Python内部使用引用计数,来保持追踪内存中的对象,所有对象都 ...