OpenEdv-开源电子网

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

[MDK使用] 阿波罗H743_实验13 SDRAM实验_支持RGB屏

[复制链接]

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10541
金钱
10541
注册时间
2017-2-18
在线时间
1908 小时
发表于 2019-6-5 16:27:29 | 显示全部楼层 |阅读模式
有用户自己修改SDRAM实验例程出错(例程仅支持MCU屏),所以改了这个程序
因为RGB屏本身不带内存,而RGB屏在使用的时候占用SDRAM的1280*800*2个字节的内存空间
所以仅能测试SDRAM芯片中非1280*800*2个字节内存区域(测试程序测试从0XC01F8000开始的30M字节内存区域)
[mw_shl_code=c,true]u16 testsram[250000] __attribute__((at(0XC01F8000)));//测试用数组[/mw_shl_code]
同时fmc_sdram_test()函数中的Bank5_SDRAM_ADDR在sdram.h中修改为0XC01F8000
[mw_shl_code=c,true]#define Bank5_SDRAM_ADDR    ((u32)(0XC01F8000))             //SDRAM被测内存的开始地址[/mw_shl_code]
fmc_sdram_test()函数如下
[mw_shl_code=c,true]void fmc_sdram_test(u16 x,u16 y)
{  
    u32 i=0;      
    u32 temp=0;   
    u32 sval=0; //在地址0XC01F8000读到的数据                       
    LCD_ShowString(x,y,239,y+16,16,"Ex Memory Test:    0KB");
    //每隔16K字节,写入一个数据,总共写入1920个数据
    for(i=0;i<30*1024*1024;i+=16*1024)
    {
        *(vu32*)(Bank5_SDRAM_ADDR+i)=temp;
        temp++;
    }
    //依次读出之前写入的数据,进行校验        
    for(i=0;i<30*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]
1.JPG


阿波罗H743_实验15LTDC LCD实验_支持RGB屏.rar

18.18 MB, 下载次数: 96

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

使用道具 举报

13

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2018-12-31
在线时间
47 小时
发表于 2020-4-7 22:32:07 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 22:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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