STM32中挂载SDRAM内存说明

SDRAM使用总结

2018-7-9 08:57 2138 4 4 分类: MCU/ 嵌入式 文集: stm32

最近stm32学到使用SDRAM了,板载SDRAM为IS42S16400J。

 

SDRAM为一种可以运行存储在存储器上的代码的存储器,stm32内部有2M的代码运行空间,一般都是够用的,如果不够用的时候就可以用SDRAM扩大代码运行空间。

 

SDRAM是通过FMC连接后直接映射到stm32内部寻址空间,与IIC和SPI需要操作总线不一样,操作SDRAM只需要在程序中定义一个指向这个空间的指针,通过指针直接修改存储单元内容,FMC外设会自动完成数据访问过程。

 

 

为了使FMC完成这些数据访问操作,需要在程序一开始进行初始化过程,一共包括对GPIO管脚时钟的初始化、FMC的初始化、SDRAM时序初始化。

 

SDRAM我觉得最重要的就是初始化过程了,初始化顺序一定要注意,一定要按照GPIO->FMC->SDRAM这个顺序初始化。

 

使用CubeMX创建的stm32工程需要注意,SDRAM时序初始化不能放在HAL_SDRAM_MspInit里,因为CubeMX生成的程序初始化过程是这样的,MX_FMC_Init->HAL_SDRAM_Init->HAL_SDRAM_MspInit,如果SDRAM时序初始化放在HAL_SDRAM_MspInit里,会由于FMC还没有初始化成功而导致SDRAM时序初始化失败。

 

我一开始就是由于不清楚这个初始化顺序,导致程序一直卡在SDRAM读写处。

 

 

读写SDRAM的话,只需要用一个指向这个空间地址的指针,然后操作这个指针指向的内容就好了。一个简单的读的例子如下。

IAR工程中:__no_init  @  来进行实现

  1. uint32_t *pSDRAM;

  2. #define SDRAM_BANK_ADDR     ((uint32_t)0xD0000000)

  3. __no_init   uint32_t RadomBuffer[10000]       @   SDRAM_BANK_ADDR     ;//这个就是制定内存空间的语法

  4. *pSDRAM=RadomBuffer[count];

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值