OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3426|回复: 2

请问关于外扩SRAM的问题

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-5-25
在线时间
5 小时
发表于 2017-6-25 12:26:21 | 显示全部楼层 |阅读模式
1金钱
例程中实验36 外部SRAM实验的测试程序如下:
void fsmc_sram_test(u16 x,u16 y)
{  
        u32 i=0;            
        u8 temp=0;          
        u8 sval=0;                                            
          LCD_ShowString(x,y,239,y+16,16,"Ex Memory Test:   0KB");
        for(i=0;i<1024*1024;i+=4096)
        {
                FSMC_SRAM_WriteBuffer(&temp,i,1);
                temp++;
        }

        for(i=0;i<1024*1024;i+=4096)
        {
                  FSMC_SRAM_ReadBuffer(&temp,i,1);
                if(i==0)sval=temp;
                else if(temp<=sval)break;                  
                LCD_ShowxNum(x+15*8,y,(u16)(temp-sval+1)*4,4,16,0);
        }                                         
}       

我的疑问:1、这样的做法是否类似于读写FLASH? 将外部SRAM当作外部FLASH使用?
               2、如果我要使用串口接收大量的数据,需要定义几个很大的接收数组(内部RAM不够用),应该如何使用外部的SRAM?

最佳答案

查看完整内容[请看2#楼]

1、这样写跟读写flash有很大的区别,至少了SRAM是可以直接对某个地址进行读写的,直接访问要读写的地址即可,flash在写的时候要做复杂的擦除操作! 2、直接定义数组,让数组的地址指向外部SRAM即可!很简单的东西,参考内存管理函数里面定义外部内存的内存池的方式,使用__attribute(at())这样的语句
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-6-25 12:26:22 | 显示全部楼层
本帖最后由 zuozhongkai 于 2017-6-25 20:09 编辑

1、这样写跟读写flash有很大的区别,至少了SRAM是可以直接对某个地址进行读写的,直接访问要读写的地址即可,flash在写的时候要做复杂的擦除操作!
2、直接定义数组,让数组的地址指向外部SRAM即可!很简单的东西,参考内存管理函数里面定义外部内存的内存池的方式,使用__attribute(at())这样的语句
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-5-25
在线时间
5 小时
 楼主| 发表于 2017-6-26 09:15:34 | 显示全部楼层
谢谢你,能否发一份“内存管理函数里面定义外部内存池”的例程,1334117037@qq.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-17 18:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表