打印
[STM32F4]

STM32外扩SRAM怎么使用

[复制链接]
21872|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
这几天做一些数据处理,用到大的内存,STM32F407的芯片,自带192KB的竟然不够!!!现在外扩有一个1M的SRAM,这个要怎么使用?电路部分已经接好,就是程序里面要怎么设置,就可以在KEIL里面直接申请一个大的内存空间来用?谢谢。。。
沙发
wsd1b| | 2014-8-8 15:13 | 只看该作者
需要配置FSMC,具体配置方式要根据你的板子连接外部SRAM的情况来定,网上找个简单的例子,在结合参考的datashit来改一下就可以了

使用特权

评论回复
板凳
airwill| | 2014-8-8 16:09 | 只看该作者
现在外扩有一个1M的SRAM,这个要怎么使用?电路部分已经接好,就是程序里面要怎么设置,就可以在KEIL里面直接申请一个大的内存空间来用?

很奇怪, 还没有搞明白怎么使用, 电路就已经接好?!
软件方面: 外设库里参考例程, 直接可以参考, 倒是硬件调试, 上来的工作也不小.

使用特权

评论回复
地板
zzyybb22| | 2014-8-8 17:27 | 只看该作者
配置fsmc后 mdk设置外部的sram,让编译器可以分配这段内存

使用特权

评论回复
5
grant_jx| | 2014-8-8 18:32 | 只看该作者
初始化配好FSMC,内存加载文件定好外扩的RAM范围,调用的时候直接申请地址啊。

不知道就去看看Keil下的例程,我记得keil的官方版有这个配置例程
\MDK4\ARM\Boards\ST\STM3210E-EVAL\RTX_Blinky\startup_stm32f10x_hd.asm

;* Version            : V3.5.0
;* Date               : 11-March-2011
;* Description        : STM32F10x High Density Devices vector table for MDK-ARM
;*                      toolchain.
;*                      This module performs:
;*                      - Set the initial SP
;*                      - Set the initial PC == Reset_Handler
;*                      - Set the vector table entries with the exceptions ISR address
;*                      - Configure the clock system and also configure the external
;*                        SRAM mounted on STM3210E-EVAL board to be used as data
;*                        memory (optional, to be enabled by user)

;*                      - Branches to __main in the C library (which eventually
;*                        calls main()).
;*                      After Reset the CortexM3 processor is in Thread mode,
;*                      priority is Privileged, and the Stack is set to Main.
;* <<< Use Configuration Wizard in Context Menu >>>   

使用特权

评论回复
6
mmuuss586| | 2014-8-8 18:34 | 只看该作者

还需要配置下这个地方

使用特权

评论回复
7
cmyldd| | 2014-8-9 23:09 | 只看该作者
学习了

使用特权

评论回复
8
KC_CEC| | 2014-8-9 23:22 | 只看该作者
也可以参考原子的内存管理一章,使用动态内存分配使利用率比较高

使用特权

评论回复
9
chenferrari|  楼主 | 2014-8-11 10:14 | 只看该作者
wsd1b 发表于 2014-8-8 15:13
需要配置FSMC,具体配置方式要根据你的板子连接外部SRAM的情况来定,网上找个简单的例子,在结合参考的data ...

找到一些例子,是用函数接口方式访问,类似于EEPROM的方式,但是现在要像RAM一样,可以申请变量的方式,就是说,我不需要提供访问地址,这些都是由编译器决定的。

使用特权

评论回复
10
chenferrari|  楼主 | 2014-8-11 12:05 | 只看该作者
本帖最后由 grant_jx 于 2014-8-11 14:17 编辑
grant_jx 发表于 2014-8-8 18:32
初始化配好FSMC,内存加载文件定好外扩的RAM范围,调用的时候直接申请地址啊。

不知道就去看看Keil下的例 ...

现在小量的数据是可以的,数据量一大,就直接死机,LWIP就连不上了。也不知道出现什么问题了

使用特权

评论回复
11
chenferrari|  楼主 | 2014-8-11 12:06 | 只看该作者
zzyybb22 发表于 2014-8-8 17:27
配置fsmc后 mdk设置外部的sram,让编译器可以分配这段内存

可以指点一下吗?是在哪里配置?

使用特权

评论回复
12
chenferrari|  楼主 | 2014-8-11 12:06 | 只看该作者
KC_CEC 发表于 2014-8-9 23:22
也可以参考原子的内存管理一章,使用动态内存分配使利用率比较高

都是一些定死的数据,就跟表格一样,没必要用动态的

使用特权

评论回复
13
myxiaonia| | 2014-8-11 12:20 | 只看该作者
chenferrari 发表于 2014-8-11 12:06
都是一些定死的数据,就跟表格一样,没必要用动态的

如果是mdk的话,将要定义到sram的全局变量放到一个单独的c文件中,在左侧项目窗口中此文件右键选Option...,在Memory Assign中,后两个项目选择off-chip地址段,此地址段就是6楼给出选项中设置

使用特权

评论回复
14
myxiaonia| | 2014-8-11 12:23 | 只看该作者
grant_jx 发表于 2014-8-8 18:32
初始化配好FSMC,内存加载文件定好外扩的RAM范围,调用的时候直接申请地址啊。

不知道就去看看Keil下的例 ...

mdk的example目录下就有Memory这个例程

使用特权

评论回复
15
grant_jx| | 2014-8-11 14:18 | 只看该作者
chenferrari 发表于 2014-8-11 12:05
现在小量的数据是可以的,数据量一大,就直接死机,LWIP就连不上了。也不知道出现什么问题了
...

你定义好了,声明的时候没有强制声明要指定特定的地址,通常都是编译器自动来分配的。
至于你说的LWIP连不上,或者死机,你的现象描述不清楚,我想你应该跟踪下,问题未必RAM分配导致的。

使用特权

评论回复
16
chenferrari|  楼主 | 2014-8-11 14:58 | 只看该作者
grant_jx 发表于 2014-8-11 14:18
你定义好了,声明的时候没有强制声明要指定特定的地址,通常都是编译器自动来分配的。
至于你说的LWIP连 ...

把这个任务注销掉就可以连上了,一旦打开就会连不上。freertos实时系统,LWIP有一个任务,数据处理有一个任务,把数据处理这个任务打开,就连不上,关掉就可以了。是这种情况,数据处理这个任务里面有3、4个5K的数组

使用特权

评论回复
17
chenferrari|  楼主 | 2014-8-11 15:01 | 只看该作者
myxiaonia 发表于 2014-8-11 12:23
mdk的example目录下就有Memory这个例程

好的,我找找看

使用特权

评论回复
18
chenferrari|  楼主 | 2014-8-11 15:06 | 只看该作者
chenferrari 发表于 2014-8-11 15:01
好的,我找找看

他这个跟M4的例程一样,是把SRAM当做一段存储空间来用的,需要指定地址,数据,长度这些,我的意思是,就直接在外部SRAM上运行所有程序,CPU直接访问外部RAM,内部的是不是可以不用了

使用特权

评论回复
19
王紫豪| | 2014-8-11 21:59 | 只看该作者

使用特权

评论回复
20
myxiaonia| | 2014-8-11 22:40 | 只看该作者
chenferrari 发表于 2014-8-11 15:06
他这个跟M4的例程一样,是把SRAM当做一段存储空间来用的,需要指定地址,数据,长度这些,我的意思是,就 ...

是的,把code/const勾上,函数也在sram了,不过一般没必要

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

52

帖子

0

粉丝