S3C2440A驱动RGB TFT液晶屏的研究(2/2)

来源:本站
导读:目前正在解读《S3C2440A驱动RGB TFT液晶屏的研究(2/2)》的相关信息,《S3C2440A驱动RGB TFT液晶屏的研究(2/2)》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《S3C2440A驱动RGB TFT液晶屏的研究(2/2)》的详细说明。

VCOM 电压信号由TFT LCD模组上SOURCEDRIVER IC输出的POL信号提供。POL信号经过VCOM BUFFER电路,产生VCOM电压信号提供给TFT LCD模组。TFT LCD模组采用行翻转方式驱动,设计的VCOM BUFFER 电路能够完成VCOM电压的交流电压成分和直流电压成分的调节。通过调节VCOM BUFFER电路,使VCOM 中心点电压及其幅值达到应用的要求,有效地消除TFT LCD显示闪烁问题并改善显示质量。

5 Linux下驱动程序软件设计

5.1 帧缓冲设备

帧缓冲为Linux 2.2.XX以上版本内核中的一种驱动程序接口。该接口采用mmap系统调用,将显示设备抽象为帧缓冲区,允许上层应用程序在图形模式下直接对显示缓冲区进行读写和I/O控制操作。帧缓冲设备属于字符设备,采用“文件层-驱动层”的接口方式。

5.2 LCD驱动设计

TFT LCD驱动程序设计的主要工作包括:初始化S3C2440A 的LCD控制器LCDCON1~5,通过写寄存器设置显示模式和颜色数,然后分配LCD显示缓冲区。根据TMT035DNAFWU1接口时序及显示要求,屏幕显示分辨率Horizontal display size=320,Vertical display size=240,VCLK=6.4 MHz,而HCLK=133 MHz,故CLKVAL=9。缓冲区大小为:点阵行数×点阵列数×用于表示一个像素的比特数/8。缓冲区通常分配在大容量的片外SDRAM 中,起始地址保存在LCD控制寄存器中,需要分配的显示缓冲区为150 kB。最后是初始化一个fb_info结构,填充其中的成员变量,并调用fbmem.C里的register_framebuffer(struct fb_info *fb info)将fb_info登记入内核。

5.3 RGB接口显示参数调整

S3C2440A 的LCD 控制寄存器主要有:LCDCON1~5。LCDCON1可以对LCD的类型、数据位数、是否需要VDEN输出及DCLK进行设置;LCDCON2主要对VBPD、VFPD、VSPW进行设置;LCDCON3及LCDCON4对HBPD、HFPD、HSPW 进行设置;LCDCON5可以对DCLK、HSYNC、VSYNC 的极性做设置。图4为RGB接口显示工作原理示意图,各个参数在实际显示中的作用效果见图4所示。

S3C2440A驱动RGB TFT液晶屏的研究(2/2)

图4 RGB接口显示工作原理

图4中,最终显示区域(DISPLAY AREA)是由像素时钟信号(DCLK)、行同步信号(HSYNC)、帧同步信号(VSYNc)、数据使能信号(VDEN/ENABLE)共同作用的结果,其大小及位置由各参数实际配置来确定,其中HSPW、HBPD及HFPD确定显示区域的行有效数据信息,VSPW、VBPD和VFPD确定显示区域中帧有效数据信息。

基于Linux下驱动显示程序,以下为调试成功的部分源代码:

/******s3c2440fb.c******/

#define H_SW 35;

#define H_FP 15;

#define H_BP 30;

#define V_SW 5;

#define V_FP 5;

#define V_BP 10;

……

static struct s3c2440fb_mach_info xxx_stn_info __initdata={

pixclock:PIXEL_CLOC, hpp: PIXEL_BPP,

xres:H_RESOLUTION, yres: V_RESOLUTION,

hsync_len: H_SW, vsync_len : V_SW,

left_margin: H_BP, upper_margin:V_BP,

right_margin:H_FP, lower_margin:V_FP,

sync:0, cmap_static:1,

reg:{

lcdcon1: LCD1_BPP_16T | LCD1_PNR_TFT | LCD1_CLKVAL(12),

lcdcon2: LCD2_VBPD(V_BP) | LCD2_VFPD(V_FP) | LCD2_VSPW(V_SW),

lcdcon3: LCD3_HBPD(H_BP) | LCD3_HFPD(H_FP),

lcdcon4: LCD4_HSPW(H_SW),

lcdcon5: LCD5_FRM565 | LCD5_INVVLINE | LCD5_INVVFRAME | LCD5_HWSWP | LCD5_PWREN,

},

};

在实际的驱动程序编写过程中,不同的TFTLCD模组的参数会有所不同,因此需要根据实际数据的有效位置进行相关的参数调整。图5为RGB接口参数配置调整前后的系统显示对比效果图。如果软件初始化设置中,未能正确地分配HSPW、HBPD和HFPD,行有效数据的位置会发生相应的错位,表现在实际显示中为显示图像的整体左右偏移,如图5(a)所示,液晶显示器显示画面向左偏移。同理,未能正确地配置VSPW、VBPD和VFPD,帧数据中有效数据的位置会发生相应的错位,表现在实际显示中为显示图像的上下偏移。

5.4 触摸屏驱动设计

设置触摸屏接口为等待中断模式(INT_TC中断),如果中断发生,立即激活相应的AD转换。转换模式一般选择分离的X/Y轴坐标转换模式或者自动(连续的)X/Y轴坐标转换模式来获取触摸点的X/Y坐标。在得到触摸点的X/Y轴坐标值后,返回到等待中断模式。触摸屏的驱动流程如图6。

S3C2440A驱动RGB TFT液晶屏的研究(2/2)

图6 触摸屏控制流程图

触摸屏设备在Linux系统中也被定义为一个字符设备,需要对触摸屏设备驱动程序中的全局变量struct TS_DEV进行设置,该变量用来保存触摸屏的相关参数:等待处理的消息队列、当前采样数据、上一次采样数据等信息,变量定义如下:

typedef struct{

unsigned int penStatus;

/* PEN_UP,PEN_DOWN,PEN_SAMPLE */

TS_RET buf[MAX_TS_BUF];

/*环形缓冲区*/

unsigned int head,tail;

/* 环形缓冲区的头、尾 */

wait_queue_head_t wq;

spinlock_t lock;

}TS_DEV ;

根据触摸屏对应TFT LCD的分辨率大小,对环形缓冲区的大小进行初始化配置。

6 结论

分析了RGB接口的TFT LCD模组接口工作时序,以ARM920T内核的S3C2440A处理器为核心,加外围电路构建了相应的驱动电路,完成Linux显示驱动程序开发,实现了系统清晰稳定的显示。带触摸屏的TFT LCD模组驱动电路设计及显示效果调节方法为各种手持数码电子产品、导航仪等嵌入式系统设计提供了一套完整的解决方案。

提醒:《S3C2440A驱动RGB TFT液晶屏的研究(2/2)》最后刷新时间 2024-03-14 01:05:35,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《S3C2440A驱动RGB TFT液晶屏的研究(2/2)》该内容的真实性请自行鉴别。