OpenEdv-开源电子网

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

用STM32F4 读写SDRAM 8位、16位读写正常;32位测试不通过

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2018-11-14
在线时间
3 小时
发表于 2018-11-14 11:39:27 | 显示全部楼层 |阅读模式
1金钱
               
              *(vu32*)(Bank5_SDRAM_ADDR+4*i)=aTxBuffer[i];
                aRxBuffer[i]=*(vu32*)(Bank5_SDRAM_ADDR+4*i);

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2018-11-14
在线时间
3 小时
 楼主| 发表于 2018-11-14 12:29:47 | 显示全部楼层
低16位和高16位数据一样
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-11-15 02:08:44 | 显示全部楼层
你的sdram驱动正常么?比如容量测试,做过么?
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2018-11-14
在线时间
3 小时
 楼主| 发表于 2018-11-15 09:44:54 | 显示全部楼层
正点原子 发表于 2018-11-15 02:08
你的sdram驱动正常么?比如容量测试,做过么?

void fsmc_sdram_test(u16 x,u16 y)
{  
#if 0
  u32 i;
  u16 aTxBuffer[160];
        u16 aRxBuffer[160];
        u16 temp;
        for(i=0;i<160;i++)
        {
                aRxBuffer=0;
          aTxBuffer=(i<<8)+i+1;//((i+3)<<24)+((i+2)<<16)+((i+1)<<8)+i;
  
        }
        for (i = 0; i < 160; i++)
  {                                          
                *(vu16*)(Bank5_SDRAM_ADDR+2*i)=aTxBuffer;         
                aRxBuffer=*(vu16*)(Bank5_SDRAM_ADDR+2*i);
                printf("%x\r\n",aRxBuffer);
  }
#else
//SDRAM&#196;ú′&#230;2aê&#212;            
  
        u32 i=0;            
        u16 temp=0;          
        u16 sval=0;        //&#212;úμ&#216;&#214;·0&#182;áμ&#189;μ&#196;êy&#190;Y                                            
           
        //&#195;&#191;&#184;&#244;16K×&#214;&#189;ú,D′è&#235;ò&#187;&#184;&#246;êy&#190;Y,×ü12D′è&#235;2048&#184;&#246;êy&#190;Y,&#184;&#213;o&#195;ê&#199;32M×&#214;&#189;ú
        for(i=0;i<1*1024*1024;i+=16*1024)
        {
                *(vu16*)(Bank5_SDRAM_ADDR+i)=temp;
                temp++;
        }
        //òà′&#206;&#182;á3&#246;&#214;&#174;&#199;°D′è&#235;μ&#196;êy&#190;Y,&#189;&#248;DDD£&#209;é                  
        for(i=0;i<1*1024*1024;i+=16*1024)
        {       
          temp=*(vu16*)(Bank5_SDRAM_ADDR+i);
                if(i==0)sval=temp;
                else if(temp<=sval)break;//oó&#195;&#230;&#182;á3&#246;μ&#196;êy&#190;Yò&#187;&#182;¨òa±èμúò&#187;′&#206;&#182;áμ&#189;μ&#196;êy&#190;Y′ó.                             
                printf("SDRAM Capacity:%dKB\r\n",(u16)(temp-sval+1)*16);//′òó&#161;SDRAMèYá&#191;
        }       
#endif
       
}               
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2018-11-14
在线时间
3 小时
 楼主| 发表于 2018-11-15 09:51:56 | 显示全部楼层
正点原子 发表于 2018-11-15 02:08
你的sdram驱动正常么?比如容量测试,做过么?

用下面这个函数做测试,aTxBuffer、aRxBuffer为16位数据时, 打印出来数据一致,buf定义成32位数据,地址每次+4,结果高16位和低16位数据重复;用例程里面的容量测试打印 结果是16k;SDRAM 用的 阿波罗开发板里的芯片W9825G6KH,接线方式也一致,MCU用的STM32F469;
void fsmc_sdram_test(u16 x,u16 y)
{  
#if 0
  u32 i;
  u16 aTxBuffer[160];
        u16 aRxBuffer[160];
        u16 temp;
        for(i=0;i<160;i++)
        {
                aRxBuffer=0;
          aTxBuffer=(i<<8)+i+1;//((i+3)<<24)+((i+2)<<16)+((i+1)<<8)+i;
  
        }
        for (i = 0; i < 160; i++)
  {                                          
                *(vu16*)(Bank5_SDRAM_ADDR+2*i)=aTxBuffer;         
                aRxBuffer=*(vu16*)(Bank5_SDRAM_ADDR+2*i);
                printf("%x\r\n",aRxBuffer);
  }
#else   
  
        u32 i=0;            
        u16 temp=0;          
        u16 sval=0;                           
           
         
        for(i=0;i<1*1024*1024;i+=16*1024)
        {
                *(vu16*)(Bank5_SDRAM_ADDR+i)=temp;
                temp++;
        }
   
        for(i=0;i<1*1024*1024;i+=16*1024)
        {       
          temp=*(vu16*)(Bank5_SDRAM_ADDR+i);
                if(i==0)sval=temp;
                else if(temp<=sval)break;                     
                printf("SDRAM Capacity:%dKB\r\n",(u16)(temp-sval+1)*16);
        }       
#endif
       
}       
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 17:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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