OpenEdv-开源电子网

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

在SRAM实验中能不能这样写 用于测试

[复制链接]

20

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2011-7-5
在线时间
43 小时
发表于 2016-1-18 14:27:16 | 显示全部楼层 |阅读模式
1金钱



        LCD_ShowString(x,y,239,y+16,16,"Ex Memory Test:   0KB");
        //每个地址写入一个数据,总共写入1024*1024个数据,刚好是1M字节
        temp =0;
        for(i=0;i<1024*1024;i++)
        {
                FSMC_SRAM_WriteBuffer(&temp,i,1);
                temp+=1;
        }
        //依次读出之前写入的数据,进行校验       
        for(i=0;i<1024*1024;i++)
        {
                  FSMC_SRAM_ReadBuffer(&temp,i,1);
                if(temp != i)
                {
                    delay_ms(10); // 如果进入这个条件,说明写入和读出的数据不一致,有异常
                }
        }       



如果把代码改成上面的,调试发现能进入异常条件中,即写入和读出的数据不一致,此时i=256

最佳答案

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

temp是8位的,怎么可能等于256?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-1-18 14:27:17 | 显示全部楼层
temp是8位的,怎么可能等于256?
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2016-1-18 16:14:56 | 显示全部楼层
0XFF=255
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-1-18 22:05:02 | 显示全部楼层
[mw_shl_code=c,true]//SDRAM内存测试            
void fsmc_sram_test(u16 x,u16 y)
{  
        u32 i=0;            
        u32 temp=0;          
        u32 sval=0;        //在地址0读到的数据                                            
          LCD_ShowString(x,y,239,y+16,16,"Ex Memory Test:    0KB");
        //每隔16K字节,写入一个数据,总共写入2048个数据,刚好是32M字节
        for(i=0;i<32*1024*1024;i+=16*1024)
        {
                *(vu32*)(Bank5_SDRAM_ADDR+i)=temp;
                temp++;
        }
        //依次读出之前写入的数据,进行校验                  
        for(i=0;i<32*1024*1024;i+=16*1024)
        {       
                  temp=*(vu32*)(Bank5_SDRAM_ADDR+i);
                if(i==0)sval=temp;
                else if(temp<=sval)break;//后面读出的数据一定要比第一次读到的数据大.                             
                LCD_ShowxNum(x+15*8,y,(u16)(temp-sval+1)*16,5,16,0);        //显示内存容量  
                printf("SDRAM Capacity:%dKB\r\n",(u16)(temp-sval+1)*16);//打印SDRAM容量
        }                                         
}       
[/mw_shl_code]
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

163

帖子

0

精华

高级会员

Rank: 4

积分
615
金钱
615
注册时间
2011-11-7
在线时间
180 小时
发表于 2016-1-18 23:17:21 | 显示全部楼层
正点原子 发表于 2016-1-18 22:05
[mw_shl_code=c,true]//SDRAM内存测试            
void fsmc_sram_test(u16 x,u16 y)
{  

这是准备搞429或是以上型号的节奏啊
回复

使用道具 举报

6

主题

123

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1279
金钱
1279
注册时间
2012-5-27
在线时间
200 小时
发表于 2016-1-19 00:07:07 来自手机 | 显示全部楼层
关键是写入的数据形式还是32位的,按照楼主的意思如果测试通过的话,需要128M字节的外部SDRAM。那么基于此,可以肯定楼主打算使用f429以上系列,并且带走SDRAM控制器,我之前做过的最大外部容量是64M字节,那么楼主的意思是然后两片16位宽64M字节的SDRAM并起来组成128M字节,也就只能这样测试才能通过了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-1-19 00:48:12 | 显示全部楼层
夜猫煮茶 发表于 2016-1-18 23:17
这是准备搞429或是以上型号的节奏啊

429在设计中....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

20

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2011-7-5
在线时间
43 小时
 楼主| 发表于 2016-1-20 11:01:43 | 显示全部楼层
菜鸟一个了,大家见笑了,个人也觉得是笑话,u8 temp=0; 哈哈

现在一个疑问请教,在SRAM中定义:u32 testsram[250000] __attribute__((at(0X68000000)));//测试用数组

是不是已经可以说明数组testsram中的内容已经在SRAM中了,如果这样的话,那么读和写SRAM的功能是不是不需要了,即testsram就可以像在RAM中使用一样?

以下函数多余?
void FSMC_SRAM_WriteBuffer(u8* pBuffer,u32 WriteAddr,u32 n)
void FSMC_SRAM_ReadBuffer(u8* pBuffer,u32 ReadAddr,u32 n)

回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-2-24 18:50:03 | 显示全部楼层
hehelloook 发表于 2016-1-20 11:01
菜鸟一个了,大家见笑了,个人也觉得是笑话,u8 temp=0; 哈哈

现在一个疑问请教,在SRAM中定义:u32 tes ...

没错,一旦初始化完成,你尽管操作那个数组就好。

STM32内部的各种ROM、RAM,串口,定时器等统统都是挂载到ARM core的总线上,你操作它们不是也没觉得它在芯片外面不是?
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2015-4-26
在线时间
1 小时
发表于 2018-2-5 16:15:20 | 显示全部楼层
正点原子 发表于 2016-1-18 22:05
[mw_shl_code=c,true]//SDRAM内存测试            
void fsmc_sram_test(u16 x,u16 y)
{  

我在用STM32CUBEMX生成的代码中加入以下这句后,提示“could not stop cortex-m device”
        *(vu32*)(Bank5_SDRAM_ADDR+i)=temp;
  在网上找一些方法尝试解决不了问题,删除这句之后就正常了,这个是什么原因?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 06:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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