[ZLG-ARM] 调试1335是发现得问题~

[复制链接]
3560|16
 楼主| hpqhpq 发表于 2007-4-2 10:18 | 显示全部楼层 |阅读模式
调试1335时,开始在外部ram中运行得程序,怎么都初始化不成功,后来移到内部flash中,勉强初始化成功了,但写地址得时候经还是常出错,在外部ram中运行和在内部flash中运行有差别么?
arm000 发表于 2007-4-2 11:09 | 显示全部楼层

速度不匹配

程序在ram中运行的速度,与在flash中运行的速度差“很多”,而作为“外设”sed1335对这两种速度的反应是差距很大的,也就是跟不上程序在ram中运行的速度。加一些“延时等待”看看。
 楼主| hpqhpq 发表于 2007-4-2 11:15 | 显示全部楼层

我上面都加了20的延时了呀

更多的也加过,貌似还是不行<br />都郁闷了好久了
arm000 发表于 2007-4-2 12:33 | 显示全部楼层

实际上。。。

实际上sed1335的接口时序是比较简单的,从&nbsp;&nbsp;&nbsp;/*&nbsp;定义LCM地址&nbsp;*/<br />#define&nbsp;&nbsp;TG240128_COM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*((volatile&nbsp;unsigned&nbsp;short&nbsp;*)&nbsp;0x83000002))<br />#define&nbsp;&nbsp;TG240128_DAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*((volatile&nbsp;unsigned&nbsp;short&nbsp;*)&nbsp;0x83000000))<br />来看,您是用外部总线的方式对sed1335接口的,我曾经用lpc2136模拟总线的方式控制了1335,显示正常。感觉您的问题好像还是出在arm与1335的接口速度匹配上,不知道您用的外部总线速度是否可以调整不?降低速度再试试看,祝您顺利!
 楼主| hpqhpq 发表于 2007-4-2 13:20 | 显示全部楼层

总线速度我换了好多种了

从最快到最慢都用过了,还是解决不了~
arm000 发表于 2007-4-2 14:56 | 显示全部楼层

最后办法

由您写的程序看,是非常“标准”的。应该是用其他cpu(单片机)控制1335成功过的,现在是“移植”到“arm”控制器上,对吗?也就是说1335的使用对您来说不是第一次。<br />这就好办了,采用程序单步跟踪+示波器的办法,看看/wr信号,A0地址/指令区分信号产生了没有,应该是“终极”解决办法了。<br />
skymood 发表于 2007-4-2 16:26 | 显示全部楼层

我也学习

&nbsp;楼主,问题解决了告诉一下小弟,&nbsp;小弟我是新手,&nbsp;原来做的是LPC&nbsp;2292&nbsp;+&nbsp;T6369C&nbsp;驱动240*128&nbsp;的液晶屏,&nbsp;现在要改成&nbsp;LPC&nbsp;2292&nbsp;+&nbsp;S1D13700&nbsp;驱动320*240的液晶屏,&nbsp;在原来T6369C的驱动上&nbsp;改了点参数&nbsp;但一直调试不出来,<br />&nbsp;今天看到楼主的&nbsp;程序&nbsp;对小弟&nbsp;有很大的借鉴作用.&nbsp;再者请问&nbsp;arm000&nbsp;可以把<br />您以前的&nbsp;lpc2136模拟总线的方式控制了1335的&nbsp;驱动程序&nbsp;发给小弟学习学习,<br />&nbsp;我现在也是驱动做不出来,&nbsp;十分着急呀&nbsp;,&nbsp;谢谢了呀&nbsp;
arm000 发表于 2007-4-2 17:13 | 显示全部楼层

程序

//程序见下面<br />//参考了某位网友的模拟总线程序,时间好久了想不起来了。<br />//在此感谢那位网友<br />//程序要结合1335的硬件才能更明白<br />//接口用的是0口<br /><br /><br /><br />#define&nbsp;uchar&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char<br />#define&nbsp;uint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int<br />#define&nbsp;D1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*D1/D2/D3:分别为LCD第一二三区之首地址*/<br />#define&nbsp;D2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x2580<br />#define&nbsp;D3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x4b00<br /><br />//lcd&nbsp;interface<br />#define&nbsp;WR_N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&lt&lt13)<br />#define&nbsp;RD_N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&lt&lt12)<br />#define&nbsp;CS_N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&lt&lt16)&nbsp;&nbsp;<br />#define&nbsp;A0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&lt&lt15)&nbsp;<br /><br />#define&nbsp;DB0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&lt&lt4)<br />#define&nbsp;DB1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&lt&lt5)<br />#define&nbsp;DB2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&lt&lt6)<br />#define&nbsp;DB3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&lt&lt7)<br />#define&nbsp;DB4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&lt&lt8)&nbsp;<br />#define&nbsp;DB5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&lt&lt9)<br />#define&nbsp;DB6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&lt&lt10)<br />#define&nbsp;DB7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&lt&lt11)<br /><br />#define&nbsp;LCD&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;//显示效果不错&nbsp;,还需要改进<br />void&nbsp;OutData(unsigned&nbsp;char&nbsp;Data)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;volatile&nbsp;uchar&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR|=A0;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR|=CS_N;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltLCD;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET|=(Data&lt&lt4);<br />&nbsp;&nbsp;&nbsp;&nbsp;Data=(~Data);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR|=(Data&lt&lt4);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR|=WR_N;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltLCD;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET|=WR_N;<br />&nbsp;&nbsp;&nbsp;for(i=0;i&ltLCD;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET|=CS_N;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />void&nbsp;OutCommand(unsigned&nbsp;char&nbsp;CMD)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;volatile&nbsp;uchar&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET|=A0;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR|=CS_N;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltLCD;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET|=(CMD&lt&lt4);<br />&nbsp;&nbsp;&nbsp;&nbsp;CMD=(~CMD);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR|=(CMD&lt&lt4);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR|=WR_N;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltLCD;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET|=WR_N;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltLCD;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0SET|=CS_N;<br />}<br />void&nbsp;send_I2par(uchar&nbsp;z,uchar&nbsp;x,uchar&nbsp;y)&nbsp;&nbsp;/*送LCD两参数指令函数,第一形参为指令码*/<br />{<br />&nbsp;&nbsp;OutCommand(z);<br />&nbsp;&nbsp;OutData(x);<br />&nbsp;&nbsp;OutData(y);<br />&nbsp;}<br />void&nbsp;send_I1par(uchar&nbsp;z,uchar&nbsp;x)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*送LCD单参数指令子程,第一形参为指令码*/<br />{<br />&nbsp;&nbsp;OutCommand(z);<br />&nbsp;&nbsp;OutData(x);<br />}<br />void&nbsp;send_I0par(uchar&nbsp;z)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*送LCD无参数指令子程,形参为指令码*/<br />{<br />&nbsp;&nbsp;OutCommand(z);<br />}<br />void&nbsp;wr_one8(uint&nbsp;d,uchar&nbsp;x,uchar&nbsp;y,uint&nbsp;z)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;向LCD写一个8x8字符函数,<br />ch:8x8字符位于字库中的具体区域(CH8,CH16,CH24);d:欲写入LCD之显示区;x:LCD地址水平坐标;y:LCD<br />地址纵坐标,起点自上而下;z:字库中字符代码值*/<br />{<br />&nbsp;&nbsp;uchar&nbsp;a,b&nbsp;;<br />&nbsp;&nbsp;const&nbsp;uchar&nbsp;*&nbsp;pCharLib;<br />&nbsp;&nbsp;uint&nbsp;m,r,i;<br />&nbsp;&nbsp;r=(d+x)+y*0x28;&nbsp;&nbsp;&nbsp;/*根据横纵坐标计算LCD实际地址,并将地址送b,a*/<br />&nbsp;&nbsp;a=r;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*a,LCD低8位地址*/<br />&nbsp;&nbsp;r&nbsp;&gt&gt=&nbsp;8;<br />&nbsp;&nbsp;b=r;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*B,LCD高8位地址*/<br />&nbsp;&nbsp;m=z*8;<br />&nbsp;&nbsp;send_I0par(0x4f);<br />&nbsp;&nbsp;send_I2par(0x46,a,b);<br />&nbsp;&nbsp;send_I0par(0x42);<br />&nbsp;&nbsp;pCharLib=CharLib;<br />&nbsp;&nbsp;for(i=m;i&lt(m+8);i++)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;OutData(*(pCharLib+i));<br />&nbsp;&nbsp;}&nbsp;<br />}
xwj 发表于 2007-4-2 19:56 | 显示全部楼层

不要用总线方式,用IO方式试试

1335这类LCD控制器的时间是uS级的,直接挂总线的话时序太快了!
 楼主| hpqhpq 发表于 2007-4-2 21:21 | 显示全部楼层

谢谢楼上的哇,先试试

  
skymood 发表于 2007-4-3 09:44 | 显示全部楼层

哎 把黑白屏变成了蓝屏

&nbsp;楼主,&nbsp;我在你的程序上改动了一下&nbsp;放到我的LPC2292+S1D13700&nbsp;里去,&nbsp;结果把我的320*240黑白屏变成了蓝屏,这是怎么回事呀&nbsp;&nbsp;楼主,是不是在I/O口与S1D13700&nbsp;之间要加驱动?&nbsp;&nbsp;望高人指点
 楼主| hpqhpq 发表于 2007-4-3 13:07 | 显示全部楼层

请教下,硬件电路该怎么做呢?

1。能不能3.3v和5v混用<br />2。是不是有的液晶必须都上拉到5v才行
arm000 发表于 2007-4-3 13:41 | 显示全部楼层

原则

是:<br />&nbsp;&nbsp;&nbsp;&nbsp;从3.3v系统到5v系统的信号,直接连接;反过来,从5v系统到3.3v系统的信号中间加一200欧姆左右的电阻即可。<br />&nbsp;&nbsp;&nbsp;&nbsp;比如上面的lpc2136对sed1335的控制,因为不需要回读,直接将sed1335的/wr,A0,D0-D7接到2136的IO脚上就可以啦。<br />
skymood 发表于 2007-4-3 13:47 | 显示全部楼层

我是参照EASY2200做的

&nbsp;&nbsp;液晶驱动一般是5V,&nbsp;背光有5V&nbsp;的&nbsp;也有3.3&nbsp;的,&nbsp;我觉得应该可以混用吧<br />I/O口&nbsp;输出是&nbsp;3.3V&nbsp;,具体要看&nbsp;LCM的&nbsp;datasheet.&nbsp;hpqhpq&nbsp;程序问题解决了没有?&nbsp;&nbsp;小弟还等着你的&nbsp;好消息.<br /><br />&nbsp;&nbsp;&nbsp;PS;&nbsp;你的驱动程序&nbsp;格式是不是参照&nbsp;周立功的T6963C&nbsp;驱动写的.
 楼主| hpqhpq 发表于 2007-4-3 14:17 | 显示全部楼层

本来是准备移植上去的^_^

但到现在还没成功哇~<br />下载到flash中能跑,但数据有的时候写要出错<br />下载到外部ram中不能跑了~
skymood 发表于 2007-4-3 14:37 | 显示全部楼层

我现在也很忧闷呀

&nbsp;&nbsp;我现在用S1D13700&nbsp;跟你的SED1335&nbsp;差不多,&nbsp;周立功提供的是&nbsp;T6963C&nbsp;和&nbsp;<br />HD66781的驱动&nbsp;,自己写的S1D13700&nbsp;程序根本用不了(&nbsp;我还是个菜鸟)&nbsp;.<br />&nbsp;望周工提供支持呀&nbsp;!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

17

帖子

1

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