系统:Linux
处理器:i.MX6
TFT屏:群创 DE018IC-02A
LCD参数配置:
参数修改位置:
LCD在内核中的参数在文件kernel/drivers/video/mxc/mxc_lcdif.c中的lcdif_modedb结构体进行配置。
LCD手册配置表:
参数解释:
Name: “HUD-WVGA”,标识符/名字。
Refresh: 60,频率(Hz)。
Xres: 480,宽,每行的像素个数。
Yres: 240,高,屏幕的行数。
Pixclock: 99403,每个像素时钟周期的长度,单位是皮秒(ps),该lcd屏的时钟频率为10.06MHz,则pixclock = 99403。简单的计算方法:106 /10.06MHz=99403ps。
HBP(horizontal back porch): 16,表示从水平同步信号开始到一行的有效数据开始之间的VCLK的个数,对应驱动中的left_margin。
HFP(horizontal front porch): 144,表示一行的有效数据结束到下一个水平同步信号开始之间的VCLK的个数,对应驱动中的right_margin。
VBP(vertical back porch): 2,表示在一帧图像开始时,垂直同步信号以后的无效的行数,对应驱动中的upper_margin。
VFB(vertical front porch): 20,表示在一帧图像结束后,垂直同步信号以前的无效的行数,对应驱动中的lower_margin。
HSPW(horizontal sync pulse width): 30,表示水平同步信号的宽度,用VCLK计算,对应驱动中的hsync_len。
VSPW(vertical sync pulse width): 3,表示垂直同步脉冲的宽度,用行数计算,对应驱动中的vsync_len。
sync: 数据使能极性。通常是填写“FB_SYNC_CLK_LAT_FALL”,填0则极性与“FB_SYNC_CLK_LAT_FALL”相反。
vmode: 视频模式。i.MX使用TFT面板设置为“FB_VMODE_NONINTERLACED”。
flag: 这个值通常没有用,默认设置为0。
官方文档解释:
信号意义:
**VSYNC:**帧同步信号
每发出一个脉冲,表示新的一帧图像数据开始传送。
**HSYNC:**行同步信号
每发出一个脉冲,表示新的一行图像数据开始传送。
**VCLK:**像素时钟信号
每发出一个脉冲,表示新的一个点图像数据开始传送。
**DEN:**有效数据信号
表示当前收到的图像数据有效或者无效。
遇到的问题及解决
1、显示的图像位置不对。
通过参照文档调整HBP、HFP、VBP、VFB、HSPW、VSPW参数配置即可解决。
2、图像在过度区域颜色显示不正常
显示如下:
原图:
发生这种情况即有可能是数据使能极性配置不对。可以通过修改sync解决。”FB_SYNC_CLK_LAT_FALL“改为0或者0改为“FB_SYNC_CLK_LAT_FALL”,这是在i.MX平台上。
原因(我的理解是这样的,但并不是很确定):
该配置决定了是在像数时钟信号的上升沿还是下降沿触发数据采集。
上升沿触发时序如下(另一个LCD屏的):
下降沿触发时序如下:
参考:
1、https://www.nxp.com/docs/en/application-note/AN3974.pdf
2、https://www.cnblogs.com/pengdonglin137/p/4604913.html