关于LCD、VGA、HV、DE

LCD显示调试:VGA、HV模式详解与STM32参数设置
文章讲述了LCD显示技术中的VGA、HV模式以及DE信号的作用,介绍了如何根据LCD手册计算VGA参数,并展示了STM32结构体和RGBLCD模块参数示例。还提到使用Linux工具如gtf、cvt计算标准VGA参数。

关于LCD、VGA、HV、DE

近来调试LCD显示,略有心得,遂记

概念

VGA

VGA(Video Graphics Array)视频图形阵列是IBM于1987年随PS/2机一起推出的一种使用模拟信号的视频传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。不支持热插拔,不支持音频传输。

HV

在液晶显示器中,行同步信号(HS)的作用是选择出液晶面板上有效行信号区间,场同步信号(VS)的作用是选择出液晶面板上有效场信号区间,行场同步信号的共同作用,可将选择出液晶面板上的有效视频信号区间。

DE

在输入到液晶显示器的视频信号中,有效视频信号(有效RGB信号)只占信号周期中的一部分,而信号的行消隐和场消隐期间并不包含有效的视频数据。因此,液晶显示器中的有关电路在处理视频信号时,必须将包含有效视频信号的区间和不包含有效视频信号的消隐区间区分开来。为了区分有效和无效视频信号,在液晶显示器电路中设置了DE信号

img

时序计算

如何根据LCD手册时序表,计算相应的VGA参数,以HV mode为例

在LCD手册中HV mode input timing table 如下:

捕获

时序图如下:
请添加图片描述

图表对应关系如下:

数值(以实际为准)
行同步(宽度)Hsync pulse width(hpw)1-140
行后沿Hsync Back porch(hbp)可通过计算获得
行有效图像Horizontal display area(hd)1024
行前沿Hsync Front porch(hfp)16-216
行扫描周期1 Horizontal Line1344=hpw+hbp+hd+hfp
场同步(宽度)Vsync pulse width(vpw)1-20
场后沿Vsync Back porch(vbp)可通过计算获得
场有效图像Vsync display area(vd)600
场前沿Vsync Front porch(vfp)1-127
场扫描周期Vsync period time(tv)635=vpw+vbp+vd+vfp

时钟计算公式

行扫描周期*场扫描周期*帧率 = 时钟频率

以1024*600,60Hz为例,1344*635*60 = 51.2Mhz,与LCD手册中的DCLK frequency对应

STM32结构体,正点原子LCD屏幕

typedef struct
{
    uint32_t clock_freq;
    uint8_t pixel_clock_polarity;
    uint16_t hactive;
    uint16_t hback_porch;
    uint16_t hfront_porch;
    uint16_t hsync_len;
    uint16_t vactive;
    uint16_t vback_porch;
    uint16_t vfront_porch;
    uint16_t vsync_len;
} atk_rgblcd_timing_t;
/* RGB LCD模块参数匹配表 */
static const atk_rgblcd_param_t atk_rgblcd_param[] = {
    {0, ATK_RGBLCD_PID_4342,  480, 272, { 9000000, 1,  480,  40,  5,   1, 272,  8,  8, 1}, ATK_RGBLCD_TOUCH_TYPE_GTXX}, // ATK-MD0430R-480272
    {1, ATK_RGBLCD_PID_7084,  800, 480, {33000000, 1,  800,  46, 210,  1, 480, 23, 22, 1}, ATK_RGBLCD_TOUCH_TYPE_FTXX}, // ATK-MD0700R-800480
    {2, ATK_RGBLCD_PID_7016, 1024, 600, {45000000, 1, 1024, 140, 160, 20, 600, 20, 12, 3}, ATK_RGBLCD_TOUCH_TYPE_GTXX}, // ATK-MD0700R-1024600
    {3, ATK_RGBLCD_PID_7018, 1280, 800, {       0, 1, 1280,   0,   0,  0, 800,  0,  0, 0}, ATK_RGBLCD_TOUCH_TYPE_GTXX}, // ATK-MD0700R-1280800
    {4, ATK_RGBLCD_PID_4384,  800, 480, {33000000, 1,  800,  88,  40, 48, 480, 32, 13, 3}, ATK_RGBLCD_TOUCH_TYPE_GTXX}, // ATK-MD0430R-800480
    {5, ATK_RGBLCD_PID_1018, 1280, 800, {45000000, 0, 1280, 140,  10, 10, 800, 10, 10, 3}, ATK_RGBLCD_TOUCH_TYPE_GTXX}, // ATK-MD1010R-1280800
};

可以看到参数列表中的数值都是可以从LCD手册中获得的,但是这里时钟频率是45Mhz,不是典型值,所以帧率不是60Hz

struct mode_struc {
	float pclk;
	int hr, hss, hse, hfl;
	int vr, vss, vse, vfl;
};
static struct mode_struc vgamode_vesa[] = {
	{  30.00,	1024,	1184,	1204,	1344,	600,	608,	612,	635,	},	/*"1024x600_60.00" */	
};	
hss为hsync start,计算公式为1024+160(满足LCD要求即可)
hse为hsync end,计算公式为1024+160+20(满足LCD要求即可)

标准VGA参数可以使用linux下的工具gtf、cvt计算

请添加图片描述请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值