打印
[ZLG-ARM]

LPC2478的TFT和SDRAM问题,SDRAM的个别数据异常

[复制链接]
4383|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
daixgen|  楼主 | 2009-7-5 23:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用LPC2478自带模块控制TFT和SDRAM,在使用中读取文件数据时有时会出现个别数据(可能是1个或者几个,几十K的文件大小,全局变量全部放在SDRAM中)会出现错误。查了很长时间没发现问题出在哪里。后来做了个测试程序,只留下基本的TFT驱动和SDRAM的测试
当把LCD功能屏蔽或只显示基本色时,SDRAM读写正常。
当显示一幅图片(或只显示几个小图片时)SDRAM中的个别数据会错误。错误的地址没有规律(整屏图片时出错的数据较多,小图片时出错的数据较少)
测试程序为: 定义一个1M字节的数组(SDRAM中),依次写入0~255,全部写完后再去读取数据是否为0~255,这时可能会出错上述情况。但是在写完一个数据马上读取这个数据时是正常的,说明出错情况可能是在写后面的数据时把前面的某个数据改掉了。在测试程序中关中断也试过无好转。
#define FILE_DataLen            1048576
uint8 FileData[FILE_DataLen];        // 1M Byte
uint32 SdRam_Test(void)
{
uint32 i,j;
uint32 error1,error2;
    Dis_Strings("     ",30,30,C_Black,C_Black);
    Dis_Strings("     ",30,50,C_Black,C_Black);
    error1=0;
    error2=0;
//IRQDisable();  //无效果
//LCD_CTRL&=(~1);  //关TFT时,读写正常
    for(i=0;i<(FILE_DataLen/256);i++)
    {
        for(j=0;j<256;j++)
        {
            FileData[i*256+j]=j;
            if(FileData[i*256+j]!=j)
            {
error1++;  //这一步设断点不会进
            }
            if(j>0)
            {
                if(FileData[i*256+j-1]!=(j-1))
                {
error1++;//会进但比error2的次数少很多
                }
            }
        }
    }
//LCD_CTRL|=1;
    for(i=0;i<(FILE_DataLen/256);i++)
    {
        for(j=0;j<256;j++)
        {
            if(FileData[i*256+j]!=j)
            {
error2++;  //会进
            }
        }
    }
//IRQEnable();
    Dis_NumAll(error1,30,30,5,C_Red,C_Black);
    Dis_NumAll(error2,30,50,5,C_Red,C_Black);
    return(error2);
}
通过View Memory查看SDRAM相应的值确实错误
当把屏幕分别刷成全黑,全白,全红,全绿,全黄。。。时测试正常

怀疑是否会是LPC2478的TFT和SDRAM频繁操作时总线冲突造成的??????
ADS1.2编译,TFT为640*480

相关帖子

沙发
lpc2410| | 2009-7-6 12:41 | 只看该作者

是不 是芯片有问题呢?或者干扰

使用特权

评论回复
板凳
qsdz| | 2009-7-6 14:27 | 只看该作者

要不要把数据空间定位到SDRAM中?

不能随机分配

使用特权

评论回复
地板
daixgen|  楼主 | 2009-7-7 10:50 | 只看该作者

SDRAM用指针定位也试过的,没效果

今天试了几块板子,发现可能是跟PCB的SDRAM布线有送

使用特权

评论回复
5
chun1chun| | 2009-7-7 13:44 | 只看该作者

对了,那就是布线这一块比较严格

使用特权

评论回复
6
armqt| | 2009-7-7 13:55 | 只看该作者

顶一下,楼主辛苦了

使用特权

评论回复
7
tmake| | 2009-7-9 13:13 | 只看该作者

解决了没有啊?

使用特权

评论回复
8
zhu340381425| | 2010-9-8 20:06 | 只看该作者
1# daixgen

使用特权

评论回复
9
zhu340381425| | 2010-9-8 20:08 | 只看该作者
大侠最后是怎么解决的呢,我现在做的东西,貌似也是这样类似的怪现象,困扰好久了,明天按你这种方式测试一把看看。。。
还望赐教啊

使用特权

评论回复
10
FVJFIFE| | 2010-9-9 21:38 | 只看该作者
我也想知道怎么解决

使用特权

评论回复
11
daixgen|  楼主 | 2010-10-22 10:33 | 只看该作者
解决了,就是SDRAM的布线问题,导致有时写入数据会错误

使用特权

评论回复
12
杜_U_ME| | 2010-10-22 22:45 | 只看该作者
怎样布线比较合理呀?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

9

帖子

2

粉丝