[ZLG-ARM] LPC2478的TFT和SDRAM问题,SDRAM的个别数据异常

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

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

  
armqt 发表于 2009-7-7 13:55 | 显示全部楼层

顶一下,楼主辛苦了

  
tmake 发表于 2009-7-9 13:13 | 显示全部楼层

解决了没有啊?

  
zhu340381425 发表于 2010-9-8 20:06 | 显示全部楼层
1# daixgen
zhu340381425 发表于 2010-9-8 20:08 | 显示全部楼层
大侠最后是怎么解决的呢,我现在做的东西,貌似也是这样类似的怪现象,困扰好久了,明天按你这种方式测试一把看看。。。
还望赐教啊
FVJFIFE 发表于 2010-9-9 21:38 | 显示全部楼层
我也想知道怎么解决
 楼主| daixgen 发表于 2010-10-22 10:33 | 显示全部楼层
解决了,就是SDRAM的布线问题,导致有时写入数据会错误
杜_U_ME 发表于 2010-10-22 22:45 | 显示全部楼层
怎样布线比较合理呀?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

9

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部