阅读:8760回复:22
s3c2440 LCD输出的VSYNC不稳定问题
s3c2440 LCD输出的VSYNC不稳定,用示波器观察频率在59.88Hz中有跳动,影响了整个画面输出不同步,在wince启动初始化lcd控制器时往缓存写图片,这时vsync是很稳定的,但wince界面出来后就变得不稳了,请问是不是其他驱动对他还有影响?
|
|
沙发#
发布于:2007-01-24 12:13
好像是那样,你可以把别的驱动都去掉,看看起来以后是否正常,
如果是别的模块影响了它,然后再一个个的加上别的,看谁对它有影响,呵呵 |
|
|
板凳#
发布于:2007-01-24 15:17
建议根据屏的手册,查查LCD驱动中的参数设计,并根据2440的刷新率公式计算一下刷新率,看是否>60Hz。如没有问题,可能要查查硬件电路了。
|
|
地板#
发布于:2007-01-24 17:16
参数我算了,是按60Hz的设置的,用示波器测出来是59.889hz。
现在发现在wince中鼠标键盘操作都会影响vsync抖动,操作flash时尤其严重,好像任何操作都会引起vsync抖动,难道是2440本身不稳定? |
|
地下室#
发布于:2007-01-24 19:56
不排除2440与你所用屏的兼容性问题,但我试了几种屏都还好,所以极有可能是屏的设置不到位,或者是硬件电路问题,甚至接触问题。
|
|
5楼#
发布于:2007-01-25 13:10
我把屏取下来还是这样,因为vsync是根据像素时钟和总的像素计算出来的,应该是一个固定的值,但现在表现出来是在wince中作其他操作时影响vsync的输出阿?虽然只是零点几赫兹的跳动,但是会影响显示的稳定性
|
|
6楼#
发布于:2007-01-25 14:41
能把你的LCDCON1的设置值贴出来吗?
|
|
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 |
|
8楼#
发布于:2007-01-27 09:53
寄存器设置看不出问题。不过,你说“鼠标键盘操作”和"操作flash"都会影响vsync抖动,键盘操作会产生中断,而LCD、中断与FALSH控制器都是由HCLK控制的,屏的频率不稳是否与HCLK的设置有关系?你查下OS的BSP头文件中FCLK、HCLK、PCLK的定义值,与你的启动代码中设置的值是否一样。重新烧一个启动代码和OS中频率设置完全一样的终端试试。以上只是我的建议,不一定有效,只能试试。
|
|
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过高时会引起不稳定? |
|
10楼#
发布于:2007-01-30 09:55
引用第0楼xiyulang于2007-01-24 11:52发表的“s3c2440 LCD输出的VSYNC不稳定问题”: 觉得可能是硬件电路的问题 LCD的模拟部分供电不足 你单独供电可能会好一些 |
|
|
11楼#
发布于:2007-01-30 11:26
可能是因为cpu驱动不了这么高分辨率的屏吧,我用pxa270驱夏普的800x480的屏也碰到过这种情况,在bootloader里往缓存里写图片很稳定,到ce启动后就不稳定了,显示复杂的画面更是惨不忍睹。
|
|
12楼#
发布于:2007-01-30 16:37
现在发现还是HCLK不稳定引起,因为鼠标,nand flash操作都是通过hclk分频等到的,而hclk是通过fclk分频得到的,理论上主要hclk不超过最大值,通过分频得到的vclk应该是稳定的呀?如果供电不稳定,应该在vclk频率低时也会不稳定呀?
|
|
13楼#
发布于:2007-03-13 20:32
这个问题我也碰到了,把外设的速度降下来会好一些。
|
|
|
14楼#
发布于:2007-04-24 15:18
请问在哪个文件下可以改FCLK, HCLK, PCLK ?
我们现在在做2440上做数字转模拟输出 , HCLK需要改变。 谢谢 |
|
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会抖动,唯一情况是电源的问题! |
|
16楼#
发布于:2009-06-08 12:55
这个帖子已经很久了,不知还有没有人关注!
象楼主描述的一样,当CPU大量操作SDRAM内的数据时,LVDS接口的LCD(高像素)的屏就会出现噪音闪烁,TTL的LCD则基本看不出来。 不幸的是我刚好采用的是LVDS接口,800x600的TFT,所以CPU一有动静,LCD屏幕就会出现噪音条纹。 请教各位前辈:有什么办法可以减轻这个问题。 先谢了! |
|
17楼#
发布于:2010-03-25 13:06
lz的问题解决了吗?我也用LVDS的屏,出现屏幕闪烁的问题,当不进行操作时闪烁较弱,进行操作时,闪烁非常严重。不知道该如何解决?
|
|
18楼#
发布于:2010-06-29 10:55
这个帖子我看了,按照上述方法一一试过:
1、usb,sd,audio ,网卡,uart1,2,等都去掉,还是抖动; 2、我用v0的屏是好的,v7的屏与其比较,寄存器设置完全一样,有几个引脚定义说明不一样,但也都改成一样,也是抖动; 3、降低hclk和vclk,其实只要把vclk分频成16.7MHZ,抖动问题就解决了,但这样的情况导致屏的刷新率太低,屏有点闪,也是无法根本解决问题。 4、有兄弟反映说操作sdram时会闪,这现象我这没发生,就是操作nandflash会上下抖动。 |
|
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的很稳定。 |
|
上一页
下一页