行业知识

联系我们

地址:广东省深圳市民治大道沙吓村沙吓工业园厂房11栋4楼

电话:86-755-83725193/83723887

传真:86-755-83725193/83723887

手机:13509694343

邮箱:info@microtech-lcd.com

您现在的位置:首页  »  行业知识  »  行业知识
行业知识

s3c2440a驱动rgb接口tft lcd的研究
来源:LCD液晶显示块厂家 发布时间:2016/3/2 13:17:20 点击量:

深圳市迈高达科技有限公司为您讲解:随着科技的进步,tft LCD作为显示器件在各种嵌入式系统中得到越来越广泛的应用。带microtech-lcd.com/" target="_blank" title="触摸屏">触摸屏的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所示。

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

深圳市迈高达科技有限公司是一家专业生产TFT液晶显示块、LCM液晶显示块、LCD液晶显示块、LCD液晶显屏、彩色液晶显示模块、LCM液晶模块、LCD液晶显示模块,等其产品对比度好,响应速度快、视角宽、功耗低等优点。了解更多公司详情请点击:http://www.microtechlcd.com/?FangWeiXinWen/Index.html