手机帧同步信号

屏的帧同步问题

屏帧同步问题

现象:在刷屏数据比较频繁(如camera preview界面移动屏幕时)会有一条或多条断屏现象

解决方法:

1.

2.

3. 开启mak中的帧同步宏:SYNC_LCM_SUPPORT = TRUE 要在lcd_init函数中打开te功能并设置VSYNC模式,若上层帧同步宏LCD_IOCTROL函数要配置正确,如下红色部分要注意跟LCD_INIT中的设置相匹配 SYNC_LCM_SUPPORT = TRUE,但是lcd_init函数中未打开TE功能则会导致不能开机。 case LCM_IOCTRL_QUERY__FRAME_RATE:

*(kal_uint32*) (Parameters) = 60;// (*) by initial setting//需要与lcd_init函数中设置的一样, return LCM_IOCTRL_OK;

case LCM_IOCTRL_SET__FRAME_RATE:

return LCM_IOCTRL_NOT_SUPPORT;

case LCM_IOCTRL_QUERY__FRAME_MARKER:

return LCM_IOCTRL_NOT_SUPPORT;

case LCM_IOCTRL_SET__FRAME_MARKER:

return LCM_IOCTRL_NOT_SUPPORT;

case LCM_IOCTRL_QUERY__SUPPORT_H_V_SIGNAL_FUNC:

return LCM_IOCTRL_NOT_SUPPORT;

case LCM_IOCTRL_QUERY__SUPPORT_V_PULSE_WIDTH:

return LCM_IOCTRL_NOT_SUPPORT;

case LCM_IOCTRL_QUERY__SUPPORT_H_PULSE_WIDTH:

return LCM_IOCTRL_NOT_SUPPORT;

case LCM_IOCTRL_QUERY__BACK_PORCH:

*(kal_uint32*) (Parameters) = 8;//(*)by initial setting //需要与lcd_init函数中设置的一样, return LCM_IOCTRL_OK;

case LCM_IOCTRL_QUERY__FRONT_PORCH:

*(kal_uint32*) (Parameters) = 8;//(*)by initial setting//需要与lcd_init函数中设置的一样, return LCM_IOCTRL_OK;

case LCM_IOCTRL_SET__BACK_PORCH:

case LCM_IOCTRL_SET__FRONT_PORCH:

return LCM_IOCTRL_NOT_SUPPORT;

case LCM_IOCTRL_QUERY__TE_EDGE_ATTRIB:

*(kal_uint32*) (Parameters) = LCM_TE_FAILING_EDGE;//此处注意用下降沿 return LCM_IOCTRL_OK;

case LCM_IOCTRL_QUERY__SUPPORT_READBACK_FUNC:

case LCM_IOCTRL_QUERY__SCANLINE_REG:

case LCM_IOCTRL_QUERY__IF_CS_NUMBER:

*(kal_uint32 *)(Parameters) = LCD_IF_PARALLEL_0;

return LCM_IOCTRL_OK;

case LCM_IOCTRL_QUERY__LCM_WIDTH:

*(kal_uint32*) (Parameters) = 240;// (*) by gram width

return LCM_IOCTRL_OK;

case LCM_IOCTRL_QUERY__LCM_HEIGHT:

*(kal_uint32*) (Parameters) = 320;// (*) by gram height

return LCM_IOCTRL_OK;

case LCM_IOCTRL_QUERY__SYNC_MODE:

*(kal_uint32*) (Parameters) = LCM_TE_VSYNC_MODE;//此处注意用VSYNC模式 return LCM_IOCTRL_OK;

4. 如上三点都用到之后若还是有断屏现象,那么就要确认硬件接口TE信号有接出来,包括CPU和LCD。如下图:LPTE脚就是已接出的TE信号

如果还不能确认屏是否已接出TE脚,那么可以用示波器量出来,方法如下:

要一直有刷屏的状态下才能量出来,故进入到camera preview界面,然后量取TE脚的信号,如果是比较规律的一个个脉冲方波,那么就已经接出同步信号。注意:能量出TE信号前提必须将软件TE打开才行。

5. 如果确认了有TE信号输出那么就需要测量一下屏的CS脚和TE脚的信号。

如下图所示,ta 和tb的相同,也就是说每帧数据的起始点和te信号之间的相对位置是一定的,而且Tcs不能大于两个Tte,这时候说明同步了。

如果我们测到Tcs大于两个Tte,那么是肯定没有同步到,肯定会有断屏现象的。此时我们需要将Tcs缩短,或是将Tte加长;

1) 缩短Tcs可以将init_lcd_interface(void)函数中的如下几个参数值减小,但是不能太

小,太小了可能会引起白屏问题。

SET_LCD_PARALLEL_CE2WR_SETUP_TIME((kal_uint32)3);//0 SET_LCD_PARALLEL_CE2WR_HOLD_TIME(1);//0 SET_LCD_PARALLEL_CE2RD_SETUP_TIME(1);//0 SET_LCD_PARALLEL_WRITE_WAIT_STATE(3);//22////1SET_LCD_PARALLEL_READ_LATENCY_TIME(13);//10 SET_LCD_ROI_CTRL_CMD_LATENCY(1);//0

的一致。

3) 如果Tcs在两个Tte之内,但是Ta!=Tb,那么也可以通过微调屏的帧率来使Ta=Tb。

通过如上方法基本可以做到无断屏现象,但是还有其他很多因素可以调节,比如:前廊与后廊,tear scanline等等,这些对帧同步的影响具体还不是很了解,还有待研究。

另外要注意一下:如果硬件都有有接出TE脚,且上层将TE功能打开,但是底层屏的TE功能未打开,那么就会引起不开机状态,因为在开机时上层搜索屏的TE信号,屏需要返回TE信号,手机才会开机。当然如果没有焊接屏的话也是不开机的,因为没有屏就不能返回TE信号而不开机。(这里主要是针对工厂没有焊接屏时需要开机处理时的一些问题,针对这种情况需要在软件中判断是否有焊接屏,有的话上层才打开TE功能,没有就将上层的TE功能关闭,这样不焊接屏是也能开机了)

本文档仅仅根据自己的理解编写,如有错误之处,还请大家指出,谢谢!!

马丽平 2011-11-11 2) 通过降低屏的帧率来加大Tte周期,这里的帧率调整必须要与LCD_IOCTROL函数中设置


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn