微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > S3C2440A驱动RGB TFT液晶屏的研究方案

S3C2440A驱动RGB TFT液晶屏的研究方案

时间:03-12 来源:互联网 点击:

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所示。


图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。


图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模组驱动电路设计及显示效果调节方法为各种手持数码电子产品、导航仪等嵌入式系统设计提供了一套完整的解决方案。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top