xiyulang
驱动牛犊
驱动牛犊
  • 注册日期2005-09-06
  • 最后登录2010-07-22
  • 粉丝1
  • 关注0
  • 积分7分
  • 威望111点
  • 贡献值0点
  • 好评度64点
  • 原创分0分
  • 专家分0分
阅读:8758回复:22

s3c2440 LCD输出的VSYNC不稳定问题

楼主#
更多 发布于:2007-01-24 11:52
  s3c2440 LCD输出的VSYNC不稳定,用示波器观察频率在59.88Hz中有跳动,影响了整个画面输出不同步,在wince启动初始化lcd控制器时往缓存写图片,这时vsync是很稳定的,但wince界面出来后就变得不稳了,请问是不是其他驱动对他还有影响?
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-01-24 12:13
好像是那样,你可以把别的驱动都去掉,看看起来以后是否正常,

如果是别的模块影响了它,然后再一个个的加上别的,看谁对它有影响,呵呵
学海无涯
zhoumc
驱动牛犊
驱动牛犊
  • 注册日期2006-07-13
  • 最后登录2008-11-25
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望88点
  • 贡献值0点
  • 好评度80点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-01-24 15:17
建议根据屏的手册,查查LCD驱动中的参数设计,并根据2440的刷新率公式计算一下刷新率,看是否>60Hz。如没有问题,可能要查查硬件电路了。
xiyulang
驱动牛犊
驱动牛犊
  • 注册日期2005-09-06
  • 最后登录2010-07-22
  • 粉丝1
  • 关注0
  • 积分7分
  • 威望111点
  • 贡献值0点
  • 好评度64点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-01-24 17:16
参数我算了,是按60Hz的设置的,用示波器测出来是59.889hz。
现在发现在wince中鼠标键盘操作都会影响vsync抖动,操作flash时尤其严重,好像任何操作都会引起vsync抖动,难道是2440本身不稳定?
zhoumc
驱动牛犊
驱动牛犊
  • 注册日期2006-07-13
  • 最后登录2008-11-25
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望88点
  • 贡献值0点
  • 好评度80点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-01-24 19:56
不排除2440与你所用屏的兼容性问题,但我试了几种屏都还好,所以极有可能是屏的设置不到位,或者是硬件电路问题,甚至接触问题。
xiyulang
驱动牛犊
驱动牛犊
  • 注册日期2005-09-06
  • 最后登录2010-07-22
  • 粉丝1
  • 关注0
  • 积分7分
  • 威望111点
  • 贡献值0点
  • 好评度64点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-01-25 13:10
我把屏取下来还是这样,因为vsync是根据像素时钟和总的像素计算出来的,应该是一个固定的值,但现在表现出来是在wince中作其他操作时影响vsync的输出阿?虽然只是零点几赫兹的跳动,但是会影响显示的稳定性
zhoumc
驱动牛犊
驱动牛犊
  • 注册日期2006-07-13
  • 最后登录2008-11-25
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望88点
  • 贡献值0点
  • 好评度80点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-01-25 14:41
能把你的LCDCON1的设置值贴出来吗?
xiyulang
驱动牛犊
驱动牛犊
  • 注册日期2005-09-06
  • 最后登录2010-07-22
  • 粉丝1
  • 关注0
  • 积分7分
  • 威望111点
  • 贡献值0点
  • 好评度64点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-01-26 11:29
LCD输出是800*480,下面是配置:

s2440LCD->rLCDCON1   =  ( 1<< 8) |
            (0 << 7) |        // 0 : Each Frame
            (3 << 5) |        // TFT LCD Pannel
            (12<< 1) |        // 16bpp Mode
            (0 << 0) ;        // Disable LCD Output

s2440LCD->rLCDCON2   =  (VBPD        << 24) |    
            (LINEVAL_TFT << 14) |    // Virtical Size : 320 - 1
            (VFPD        <<  6) |    // VFPD          :   2
            (VSPW        <<  0) ;    // VSPW          :   1

s2440LCD->rLCDCON3   =  (HBPD        << 19) |    // HBPD          :   6
            (HOZVAL_TFT  <<  8) |    // HOZVAL_TFT    : 240 - 1
            (HFPD        <<  0) ;    // HFPD          :   2

s2440LCD->rLCDCON4   =  (MVAL        <<  8) |    // MVAL          :  13                              */
            (HSPW        <<  0) ;    // HSPW          :   4                              */

s2440LCD->rLCDCON5   =  (0 << 12) |    // BPP24BL       : LSB valid
            (1 << 11) |    // FRM565 MODE   : 5:6:5 Format
            (0 << 10) |    // INVVCLK       : VCLK Falling Edge
            (1 <<  9) |    // INVVLINE      : Inverted Polarity
            (1 <<  8) |    // INVVFRAME     : Inverted Polarity
            (0 <<  7) |    // INVVD         : Normal
            (0 <<  6) |    // INVVDEN       : Normal
            (0 <<  5) |    // INVPWREN      : Normal
            (0 <<  4) |    // INVENDLINE    : Normal
            (0 <<  3) |    // PWREN         : Disable PWREN
            (0 <<  2) |    // ENLEND        : Disable LEND signal
            (0 <<  1) |    // BSWP          : Swap Disable
            (1 <<  0) ;    // HWSWP         : Swap Enable

s2440LCD->rLCDSADDR1 = ((FRAMEBUF_DMA_BASE >> 22) << 21) |
            ((M5D(FRAMEBUF_DMA_BASE >> 1)) <<  0);

s2440LCD->rLCDSADDR2 = M5D((FRAMEBUF_DMA_BASE + (LCD_XSIZE_TFT * LCD_YSIZE_TFT * 2)) >> 1);

s2440LCD->rLCDSADDR3 = (((LCD_XSIZE_TFT - LCD_XSIZE_TFT) / 1) << 11) | (LCD_XSIZE_TFT / 1);

s2440LCD->rLCDINTMSK |= (3);
s2440LCD->rTCONSEL   &= ~(0x7);    // ;;; SHL
s2440LCD->rTPAL       = 0x0;
s2440LCD->rTCONSEL   &= ~((1<<4) | 1);    // Disable LCC3600, LCP3600
s2440IOP->rGPGUP      = s2440IOP->rGPGUP  & (~(1<<4)) | (1<<4);// Pull-up disbale
s2440IOP->rGPGCON      = s2440IOP->rGPGCON & (~(3<<8)) | (3<<8);
s2440LCD->rLCDCON5    = s2440LCD->rLCDCON5 & (~(1<<3)) | (1<<3);// PWREN
s2440LCD->rLCDCON5    = s2440LCD->rLCDCON5 & (~(1<<5)) | (0<<5);// INVPWREN
s2440LCD->rLCDCON1     |= 1;    // Enable LCD output
zhoumc
驱动牛犊
驱动牛犊
  • 注册日期2006-07-13
  • 最后登录2008-11-25
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望88点
  • 贡献值0点
  • 好评度80点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-01-27 09:53
寄存器设置看不出问题。不过,你说“鼠标键盘操作”和"操作flash"都会影响vsync抖动,键盘操作会产生中断,而LCD、中断与FALSH控制器都是由HCLK控制的,屏的频率不稳是否与HCLK的设置有关系?你查下OS的BSP头文件中FCLK、HCLK、PCLK的定义值,与你的启动代码中设置的值是否一样。重新烧一个启动代码和OS中频率设置完全一样的终端试试。以上只是我的建议,不一定有效,只能试试。
xiyulang
驱动牛犊
驱动牛犊
  • 注册日期2005-09-06
  • 最后登录2010-07-22
  • 粉丝1
  • 关注0
  • 积分7分
  • 威望111点
  • 贡献值0点
  • 好评度64点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-01-29 16:04
谢谢,zhoumc,你说的启动代码是NBOOT吗?我查了一下,NBOOT里的频率跟os中的配置是一样的。

现在2440在os的配置是这样的:
     FLCK=400MHz,HCLK=FCLK/3,VCLK = HCLK / ((CLKVAL + 1) * 2),当需要输出800*480时,CLKVAL必须是1获者0,才能达到VSYNC=60Hz,此时VCLK=33.33MHz或66.66MHz,通过示波器检测VCLK输出很不稳定,上下波动有1MHz的,因而VSYNC也是很不稳定的;
     当CLKAL选择为3以上时,VCLK频率下降了,此时只能输出320*240,通过示波器检测VCLK和VSYNC都是很稳定的,画面很稳定;
     现在怀疑是不是CPU 2440本身的性能问题,当VCLK过高时会引起不稳定?
soarstar
驱动小牛
驱动小牛
  • 注册日期2005-03-14
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望271点
  • 贡献值0点
  • 好评度209点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-01-30 09:55
引用第0楼xiyulang2007-01-24 11:52发表的“s3c2440 LCD输出的VSYNC不稳定问题”:
  s3c2440 LCD输出的VSYNC不稳定,用示波器观察频率在59.88Hz中有跳动,影响了整个画面输出不同步,在wince启动初始化lcd控制器时往缓存写图片,这时vsync是很稳定的,但wince界面出来后就变得不稳了,请问是不是其他驱动对他还有影响?


觉得可能是硬件电路的问题
LCD的模拟部分供电不足
你单独供电可能会好一些
Email:xj_yeah@163.com
rilyyu
驱动小牛
驱动小牛
  • 注册日期2006-11-17
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分512分
  • 威望130点
  • 贡献值0点
  • 好评度127点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-01-30 11:26
可能是因为cpu驱动不了这么高分辨率的屏吧,我用pxa270驱夏普的800x480的屏也碰到过这种情况,在bootloader里往缓存里写图片很稳定,到ce启动后就不稳定了,显示复杂的画面更是惨不忍睹。
xiyulang
驱动牛犊
驱动牛犊
  • 注册日期2005-09-06
  • 最后登录2010-07-22
  • 粉丝1
  • 关注0
  • 积分7分
  • 威望111点
  • 贡献值0点
  • 好评度64点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2007-01-30 16:37
现在发现还是HCLK不稳定引起,因为鼠标,nand flash操作都是通过hclk分频等到的,而hclk是通过fclk分频得到的,理论上主要hclk不超过最大值,通过分频得到的vclk应该是稳定的呀?如果供电不稳定,应该在vclk频率低时也会不稳定呀?
lStoneCN
驱动牛犊
驱动牛犊
  • 注册日期2004-08-11
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分334分
  • 威望321点
  • 贡献值1点
  • 好评度28点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2007-03-13 20:32
这个问题我也碰到了,把外设的速度降下来会好一些。
寻zigbee/CC2430高手合作!
weeen
驱动牛犊
驱动牛犊
  • 注册日期2006-08-18
  • 最后登录2007-04-17
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2007-04-24 15:18
请问在哪个文件下可以改FCLK, HCLK, PCLK ?
我们现在在做2440上做数字转模拟输出 , HCLK需要改变。 谢谢
wujiarui
驱动牛犊
驱动牛犊
  • 注册日期2006-07-13
  • 最后登录2011-04-05
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望27点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2007-04-29 09:33
VSYNC肯定不是稳定的,明白2440工作原理就清楚为什么了。因为LCD控制器要从SDRAM读取数据送到LCD端口,因为LCD控制器读取SDRAM的优先级比较低,所以当程序频繁操作SDRAM时候,VSYNC就会不稳定。
有的WINCE boot是放置在2440内部4K RAM里面运行,这时候对SDRAM操作最少。WINCE 启动之后,所有程序都在SDRAM运行了。

但是这种不稳定是不会影响到TTL接口的TFT液晶屏的稳定性的!除非你用的是LVDS接口LCD或者LCD转VIDEO这类对时序要求严格的,才会抖动。所以如果你的液晶屏在操作鼠标,FLASH会抖动,唯一情况是电源的问题!
twodiamond
驱动牛犊
驱动牛犊
  • 注册日期2007-12-30
  • 最后登录2010-01-22
  • 粉丝1
  • 关注0
  • 积分31分
  • 威望14点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2009-06-08 12:55
这个帖子已经很久了,不知还有没有人关注!

象楼主描述的一样,当CPU大量操作SDRAM内的数据时,LVDS接口的LCD(高像素)的屏就会出现噪音闪烁,TTL的LCD则基本看不出来。

不幸的是我刚好采用的是LVDS接口,800x600的TFT,所以CPU一有动静,LCD屏幕就会出现噪音条纹。

请教各位前辈:有什么办法可以减轻这个问题。

先谢了!
ljh4371
驱动牛犊
驱动牛犊
  • 注册日期2010-03-25
  • 最后登录2010-05-13
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2010-03-25 13:06
lz的问题解决了吗?我也用LVDS的屏,出现屏幕闪烁的问题,当不进行操作时闪烁较弱,进行操作时,闪烁非常严重。不知道该如何解决?
iken
驱动牛犊
驱动牛犊
  • 注册日期2002-05-29
  • 最后登录2012-03-20
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望81点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2010-06-29 10:55
这个帖子我看了,按照上述方法一一试过:
1、usb,sd,audio ,网卡,uart1,2,等都去掉,还是抖动;
2、我用v0的屏是好的,v7的屏与其比较,寄存器设置完全一样,有几个引脚定义说明不一样,但也都改成一样,也是抖动;
3、降低hclk和vclk,其实只要把vclk分频成16.7MHZ,抖动问题就解决了,但这样的情况导致屏的刷新率太低,屏有点闪,也是无法根本解决问题。
4、有兄弟反映说操作sdram时会闪,这现象我这没发生,就是操作nandflash会上下抖动。
iken
驱动牛犊
驱动牛犊
  • 注册日期2002-05-29
  • 最后登录2012-03-20
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望81点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2010-06-29 11:06
看了2440的时钟框图,用到hclk的模块有:usb host, camera, lcd,nandflash, 四个模块。usbhost和camera我都已在寄存器clkcon中将其disable,只有nandflash 和 lcd在用。
造成屏上下抖动的原因应该是vclk不稳,但这不稳是由于操作nandflash造成的,是不是说有如下可能:
1、难道说是v7的屏抗干扰太差?我想AU这么大的公司生产的屏应该是有标准的。
2、要么就是2440产生的hclk本身就不稳定,
3、硬件板子设计的问题,导致hclk不稳定?可我的板子在用v0屏时一直跑400-133-66MHz的很稳定。
上一页
游客

返回顶部