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];

STM32中挂载SDRAM内存说明相关推荐

  1. STM32程序占用的内存容量计算

    STM32中程序占用内存容量 Keil MDK下Code, RO-data,RW-data,ZI-data这几个段: Code存储程序代码. RO-data存储const常量和指令. RW-data存 ...

  2. 详解STM32中的ADC

    ADC简介 STM32F103系列有3个ADC,精度为12位,每个ADC最多有16个外部通道.其中ADC1和ADC2都有16个外部通道,ADC3一般有8个外部通道,各通道的A/D转换可以单次.连续.扫 ...

  3. S3C2440 SDRAM内存驱动 .

    SDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存储器)也就是通常所说的内存.内存的工作原理.控制时序.及相关控制器的配置方法一直是嵌入式系统 ...

  4. 再次理解STM32中的堆栈机制

    再次理解STM32中的堆栈机制 刚拿到STM32时,你只编写一个死循环 void main() { while(1); }BUILD://Program Size: Code=340 RO-data= ...

  5. STM32中C语言知识点:初学者必看,老鸟复习(长文总结)

    说在前面的话 一位初学单片机的小伙伴让我推荐C语言书籍,因为C语言基础比较差,想把C语言重新学一遍,再去学单片机,我以前刚学单片机的时候也有这样子的想法. 其实C语言是可以边学单片机边学的,学单片机的 ...

  6. stm32中堆、栈、flash、ROM、RAM、bss段、data段、text段、Code、Ro-data、 ZI-data、RW-data简介

    1. 堆.栈.flash.ROM.RAM.bss段.data段.text段.Code.Ro-data ZI-data.RW-data的区别? 1.1 堆.栈简介 堆栈是指在stm32启动文件中定义的那 ...

  7. FPGA 视频处理中外部SDRAM的作用

    FPGA 视频处理中外部SDRAM的作用 在 FPGA 处理视频算法时,很多地方都需存完整的一帧画面,FPGA本身内部RAM资源太小,必须依赖外部 DDR3 SDRAM 才能实现. 1:视频拼接,视频 ...

  8. STM32中堆栈的理解

    STM32中堆栈的理解 关于程序的内存分配 栈区(stack):由编译器自动分配和释放,存放函数的参数与返回值.局部变量等. 堆区(heap):由程序员分配管理,一般未使用(malloc函数). 全局 ...

  9. STM32中读写flash

    目录 一.创建工程 二.keil代码编写 三.连线 四.调试 五.基于片内Flash的提示音播放程序 1.使用DAC输出周期2khz的正弦波 2.使用DAC输出数字音频歌曲数据转换为模拟音频波形输出 ...

  10. 带你了解STM32中的I2C

    带你了解STM32中的I2C 想学习单片机的同学可以关注.私信我或者在评论区回复我要入门.假如我们直接控制STM32的两个GPIO引脚,分别用作SCL及SDA,按照上述信号的时序要求,直接像控制LED ...

最新文章

  1. Mybatis+Spring SqlSessionTemplate注入学习--1
  2. linux shell读取文件
  3. r语言electricity数据集_R语言学习10-查看数据
  4. vue安装与配置、脚手架
  5. sklearn的train_test_split函数
  6. python训练的模型怎么在C++使用?
  7. android中显示提示图标在edittext左侧,设置图标的大小,王立平--EditText实现单行显示,左側图标,提示信息...
  8. neo4j---学习笔记
  9. 线性二次调节器(LQR)
  10. 经典面试题:手机扫描二维码的测试用例(建议收藏)
  11. Python简介,第2章–字符串和列表
  12. Kafka——创建无消费者组的消费者消费订阅主题
  13. HTML Purifier --非常好用的XSS过滤器
  14. 图解LeetCode——592. 分数加减运算(难度:中等)
  15. U盘有占用空间,但无文件或者都变成了快捷方式
  16. Jupyter Notebook 输出有颜色的文字
  17. 华为弹性云服务器进修复模式,华为云弹性云控制面板简要解析
  18. 熟悉又陌生的 k8s 字段:finalizers
  19. 渗透测试-越权漏洞之垂直越权和水平越权
  20. redis源码解析(二)——SDS(简单动态字符串)

热门文章

  1. 事件监听(窗口关闭、输入框事件、计算器、画笔、鼠标、窗口、键盘)
  2. 麻省理工十亿美元计算机学院,麻省理工学院宣布10亿美元成立新计算机学院 | 芥末堆...
  3. 前端单行省略号和多行省略号
  4. 正确去掉Win7快捷方式小箭头
  5. python 拆分pdf指定页_Python简单拆分PDF文件,将一个PDF文件拆分成指定份数
  6. RHEL7配置中文输入法-智能拼音
  7. 上完选修计算机绘图课心得,计算机绘图学习心得体会.doc
  8. js实现外链访问劫持代码 可劫持百度快照
  9. 局域网下连接其他电脑的HDFS集群
  10. vue 中使用 pug