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

2012-03-12 11:58:39来源: 互联网

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

1 引言
    随着科技的进步,TFT LCD作为显示器件在各种嵌入式系统中得到越来越广泛的应用。带触摸屏的TFT LCD模组在系统应用中不仅能为人机界面提供高质量的画面显示,而且能提供更直观、方便的交互性输入。TMT035DNAFWU1是深圳天马微电子股份有限公司生产的8.89 cm(3.5 in)TFT LCD模组,该模组内置了LCD驱动器,集成了四线电阻式触摸屏和背光电路。S3C2440A 是三星公司设计的一款基于ARM920T内核的32位嵌入式RISC(reduced instructions set computer)微处理器,它的最高工作频率可达533 MHz,内部集成了通用的LCD控制器、8通道10位ADC和触摸屏接口,且具备高性能、低功耗的优点,适用于智能手机、便携式媒体播放器、手持导航仪等领域。本文基于S3C2440A嵌入式系统,以TMT035DNAFWU1为显示设备,设计了TFT LCD驱动电路,并完成Linux下驱动显示效果的调试。

2 TFT LCD接口时序
    TMT035DNAFWU1的显示分辨率为320×240,采用24位数字RGB接口,可以显示16.7 M颜色。
    RGB接口是为TFT LCD模组提供高品质显示而设计的接口,该接口可以高速、低功耗地完成动画显示,其中包含4个重要的控制信号VSYNC、HSYNC、DCLK 和VDEN,分别用于帧、行、像素的数据传输。
    图1为TMT035DNAFWU1模组RGB接口时序示意图。


                                    图1 RGB接口时序图

3 S3C2440A LCD控制器介绍
    S3C2440A 内置的LCD控制器能将显示在LCD上的数据从系统内部的数据缓冲区通过逻辑单元传送到外部的LCD驱动器中。它可以支持不同分辨率的显示,如:640×480、320×240等,最大可支持24位数据的16.7 M 彩色TFT模块,其控制器框图如图2所示。


图2 S3C2440A LCD控制器框图
3.1 控制总框图
    LCD控制器主要由REGBANK、LCDCDMA两大部分组成,用于产生必要的控制信号和传输数据信号,如图2所示。REGBANK有17个可编程寄存器组和256×16的调色板存储器,用来设定LCD控制器。LCDCDMA 是一个专用的DMA(Direct Memory Access),自动从帧存储器传输视频数据到LCD控制器,视频数据可以不经CPU处理直接显示在屏上。TIMEGEN 由可编程逻辑器件组成,产生VFRAME/VSYNC、VLINE/HSYNC、VCLK/DCLK、VM/VDEN信号等,以支持不同的LCD驱动器的接口时序和速率。LPC3600与LCC3600是专用LCD控制器,在此不做详细介绍。

3.2 TFT控制器介绍
    通过对REGBANK 寄存器组中的LCDCON1/2/3/4/5进行配置,TIMEGEN产生可编程控制信号来支持不同类型的LCD驱动器。
    VSYNC和HSYNC脉冲与LCDCON2/3的HOZVAL和LINEVAL设置相关,HOZVAL和LINEVAL的值由LCD屏的分辨率决定,如下公式:
    HOZVAL=(Horizontal display size)-1    (1)
    LINEVAL=(Vertical display size)-1   (2)
    VCLK的频率取决于LCDCON1中CLKVAL的设置,在LCDCON1中配置,VCLK和CLKVAL的关系如下(CLKVAL的最小值是0):
    VCLK(Hz)=HCLK/[(CLKVAL+1)×2]    (3)
    HCLK为S3C2440A 中PLL时钟发生器产生的时钟信号。
    VSYNC的频率即为帧频,它与LCDCON1/2/3/4均有关,计算公式如下:
Frame Rate=1/{[(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)1×[(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)]×[2×(CLKVAL+1)/(HCLK)]} (4)
    公式(1)~(4)各参数数值的设置方法在§5.2中给出。

4 驱动电路设计
    除数据传输信号接口外,TFT LCD模组的驱动电路还包括提供给模组的电源电路、VGL、VGH、VCOM 电压电路等。根据TFT LCD模组的接口和S3C2440A 内嵌的控制器输出管脚,完成LCD显示的控制线路设计。电路接口设计如图3所示。

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


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

关键字:S3C2440A  驱动RGB  TFT  液晶屏

编辑:神话 引用地址:http://www.eeworld.com.cn/mndz/2012/0312/article_15015.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
S3C2440A
驱动RGB
TFT
液晶屏

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved