OpenEdv-开源电子网

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

767+64MB内存+10寸LTDC 内存数据部分出错

[复制链接]

36

主题

124

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2016-4-28
在线时间
262 小时
发表于 2017-12-18 15:42:10 | 显示全部楼层 |阅读模式
20金钱
本帖最后由 orta 于 2017-12-18 15:56 编辑

请问,小弟最近做一个项目,需要用64MB内存 + 10寸 1280x800 电容屏(RGB565)

首先,单独测试SDRAM(程序中没有LTDC的使用)
u8 testsram[64*1024*1024] __attribute__((at(0XC0000000)));// 数组映射到地址 0XC0000000

测试代码:

    for(i=0;i<64*1024*1024;i++)
    {
        testsram[ i ] = k; // K 代表测试次数
  }   
    temp=0;
    for(i=0;i<64*1024*1024;i++)
    {
        if(testsram
[ i ]!=k){wrong++;}

  }   


这个代码十分简单,使劲刷SDRAM所有地址 所有数据, 经测试,64MB SDRAM 工作正常,wrong 从来没有++ 过。
======================================================================================================


然后,开始挂载1280x800电容屏。用的正点原子的 10.1寸电容屏,采用1层 LTDC, 屏的SDRAM映射地址为:
u16 ltdc_lcd_framebuf[1280][800] __attribute__((at(0XC0000000))), 也就是 SDRAM起始地址。
层配置:
    LTDC_Layer_Parameter_Config(0,(u32)ltdc_framebuf[0],LCD_PIXFORMAT,255,0,6,7,0X000000);
    LTDC_Layer_Window_Config(0,0,0,lcdltdc.pwidth,lcdltdc.pheight);   


通过 多点触摸 测试程序, 5点触摸工作正常,屏幕显示稳定。

===========================================================================================================

最后,挂载电容屏显示的同时,将SDRAM空闲部分的空间进行测试。

屏的映射起始地址:u16 ltdc_lcd_framebuf[1280][800] __attribute__((at(0XC0000000))),


测试数组映射地址:u8 sdram_array[60*1024*1024] __attribute__((at(0XC0400000)));           // 屏缓冲占 1280x800x2 字节 , 我多给它让一点空间,让出4MB吧,所以, sdram_array 数组起始地址为 0XC0000000 + 4*1024*1024 = 0XC0400000

然后,通过

测试代码:

    for(i=0;i<60*1024*1024;i++)
    {
        sdram_array
[ i ] = k; // K 代表测试次数
  }   
    temp=0;
    for(i=0;i<60*1024*1024;i++)
    {
        if(sdram_array
[ i ]!=k){wrong++;}
  }   


悲剧发生了, wrong跑出来很多 (但不是所有地址都有错)。
经过测试, i<10*1024*1024 , 只测试10MB空间 还是正确,加大测试范围则开始出现错误,但不是所有地址都错 (wrong 计数器 小于 i 计数器)

我尝试过
1. 降低SDRAM配置时钟
2. 降低LTDC时钟
3. 更换LTDC映射地址位置

都无法解决。

请问还有什么原因会导致这个问题呢?
我想到的,是不是 因为同时挂载了LTDC 和SDRAM, LTDC总是占用总线,导致 单独对SDRAM其他地址空间操作时失败?

谢谢大家!







最佳答案

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

降低了LRDC 到40M 就好了。。。谢谢大大
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

124

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2016-4-28
在线时间
262 小时
 楼主| 发表于 2017-12-18 15:42:11 | 显示全部楼层
降低了LRDC 到40M 就好了。。。谢谢大大
回复

使用道具 举报

36

主题

124

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2016-4-28
在线时间
262 小时
 楼主| 发表于 2017-12-18 18:54:26 | 显示全部楼层
自勉。。。。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2017-12-19 00:06:35 | 显示全部楼层
降低LTDC的像素时钟试试。
像素时钟不能超过50M
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-19 14:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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