新闻中心

EEPW首页 > 嵌入式系统 > 牛人业话 > FSMC使用之外扩RAM的妙用

FSMC使用之外扩RAM的妙用

作者:liklon时间:2013-10-23来源:电子产品世界收藏

  在上跑UCOS_II和UCGUI时,要想让屏幕稳定不闪,显示效果多样化,而且分配给每个任务的堆栈空间足够,内部的肯定是不足的。最好的方法就是配置使内部作为堆栈使用,而外部作为变量存储和UCOS_II的任务堆栈。现在介绍以及如何配置,并写出启动文件中需要修改的地方。

本文引用地址:http://www.eepw.com.cn/article/182411.htm

  简介

  为什么可以利用FSMC来使用外部RAM呢,先了解一下里的FSMC。大容量且引脚数在100脚以上的STM32F103芯片都带有FSMC接口。FSMC是灵活的静态存储控制器,能够与同步或异步存储器和16位PC存储器卡接口,STM32的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存储器。FSMC框图:

  FSMC管理1 GB的映射地址空间。该空间划分为4个大小为256 MB的BANK,每个BANK又划分为4个64 MB的子BANK,FSMC的2个控制器管理的映射地址空间不同。NOR Flash控制器管理第1个BANK,NAND/PC Card控制器管理第2~4个BANK。如图是FSMC的存储空间地址映射:

  这次的重点是用上外部的RAM,所以只介绍Bank1。STM32的FSMC存储块1被分为4个区,每个区管理64M字节空间,每个区都有独立的寄存器对连接的存储器进行配置。Bank1的256M字节空间由28根地址先寻址。当Bank1接的是16位宽的设备,HADDR[25:1]->FSMC[24:0]。当Bank1接的是8为宽度存储器的时候:HADDR[25:0]->FSMC[25:0]。

  对FSMC的基本信息介绍就是上面这几点,重点是关注每一个区的地址范围。因为在下面的内容会用到。

  FSMC配置

  根据此原理图进行配置:

  如图是以FSMC的BANK1区域3来控制IS63WV51216这个1M字节容量的SRAM芯片。开始配置FSMC,现在是利用FSMC来操作外部SRAM。所以在选择存储器类型时就选择SRAM。上图可以看出地址总线和数据总线是分开的,所以配置的时候选择不复用总线。也要注意的是芯片的数据宽度是16位。在配置完成后使能控制块就可以了。如下是配置代码

  LDR R0,= 0x00000114
  LDR R1,= 0x40021014
  STR R0,[R1] ;使能FSMC时钟
  LDR R0, =0X000001E0
  LDR R1, =0X40021018
  STR R0,[R1] ;GPIOD,GPIOE,GPIOF,GPIOG时钟使能
  LDR R0,= 0x44BB44BB
  LDR R1,= 0x40011400
  STR R0,[R1]
  LDR R0,= 0xBBBBBBBB
  LDR R1,= 0x40011404
  STR R0,[R1] ;配置GPIOD
  LDR R0,= 0xB44444BB
  LDR R1,= 0x40011800
  STR R0,[R1]
  LDR R0,= 0xBBBBBBBB
  LDR R1,= 0x40011804
  STR R0,[R1] ;配置GPIOE
  LDR R0,= 0x44BBBBBB
  LDR R1,= 0x40011C00
  STR R0,[R1]
  LDR R0,= 0xBBBB4444
  LDR R1,= 0x40011C04
  STR R0,[R1] ;配置GPIOF
  LDR R0,= 0x44BBBBBB
  LDR R1,= 0x40012000
  STR R0,[R1]
  LDR R0,= 0x44444B44
  LDR R1,= 0x40012004
  STR R0,[R1] ;配置GPIOG

存储器相关文章:存储器原理



上一页 1 2 下一页

关键词: STM32 FSMC RAM

评论

技术专区

关闭