您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术基于ARM与WindowsCE的LCD显示器设计 正文
基于ARM与WindowsCE的LCD显示器设计

基于ARM与WindowsCE的LCD显示器设计

点击数:7577 次   录入时间:03-04 11:46:23   整理:http://www.55dianzi.com   嵌入式系统-技术

1 引言

         随着电子信息技术不断发展, 嵌入式系统的应用越来越广泛。在嵌入式电子测量系统中, LCD(Liquid Crystal Display,液晶显示器)作为人机交互的主要设备,具有功耗低、外形尺寸小和优越的字符和图形显示功能。WindowsCE是嵌入式实时操作系统,它友好的图形界面,成为嵌入式开发的主流操作系统,它使用图形设备接口(GDI)来处理程序的图形输出,利用GDI所提供的众多函数可方便地在LCD屏幕上输出图形和文本[1]。

        基于嵌入式处理器IntelPXA270和WindowsCE设计LCD系统的原理,为嵌入式便携设备提供了一种在高亮度显示条件下维持低功耗的解决方案,适用于高档PDA、便携媒体播放器、手持式导航仪、便携医疗和测试设备等领域,下文将介绍中国航空工业第608研究所新开发的铁路机车故障诊断车载装置LCD设备的主要设计原理。

2 基于IntelPXA270的LCD硬件系统

         系统采用基于ARM处理核的IntelPXA270处理器, 64MB的SDRAM,M-System的DOC(Disk On Chip)H3芯片作为存储系统,外接16位的800×480的TFT显示屏。

2.1 ARM处理器IntelPXA270及其LCD控制

        IntelPXA270是Intel公司推出的基于ARM微处理核的嵌入式处理器,主频最高可达624MHz,IntelPXA270加入了Wireless MMX技术,大大提升了多媒体处理能力;同时还加入了Intel SpeedStep动态电源管理技术,在保证CPU性能的情况下,最大限度地降低了设备功耗。

        IntelPXA270内置的LCD控制器为IntelPXA270处理器和平板显示器提供了一个接口,它所支持的平板显示器包括被动的DSTN液晶屏、主动的TFT液晶屏以及带有内部帧缓冲区的液晶屏,中国航空工业第608研究所新开发的铁路机车故障诊断车载装置LCD设备使用的是TFT液晶屏。

        LCD控制器用于传输显示数据并产生必要的控制信号,表1[2]是IntelPXA270内置的LCD控制器的控制信号:

表1 LCD控制器的控制信号

IntelPXA270内置的LCD控制器支持多种显示模式,其中包括了像素的数据格式,显示屏的大小、扫描方式

、颜色模式等。IntelPXA270 LCD控制器内部带有很多寄存器,用于针对不同的液晶屏和不同的显示模式

进行配置。LCD控制器带有专用的DMA,它可以自动地将显示数据从帧内存传送到LCD驱动器,通过专用DMA

,可以在不需要CPU介入的情况下显示数据。
 
2.2 TFT LCD液晶屏

        TFT LCD是FG070053DSSWJGT1显示屏,显示屏大小为7寸,分辨率为800×480,其内部集成了输入

控制单元、TFT显示模块,扫描驱动IC,背光灯,DC/DC电压转换器,数据驱动IC等,图1为

FG070053DSSWJGT1显示屏内部结构[3]。

图1 TFT内部功能及接口

        TFT LCD显示屏要求的时序由帧同步(VSYNC)、行同步(HSYSNC)、比特时钟(DCLK)及数据(Data[0:15])构成,帧同步和行同步指示每一帧和每一行的开始,如图2所示。

图2 TFT LCD时序图

2.3 TFT屏的显示接口电路

www.55dianzi.com

        结合IntelPXA270内置的LCD控制器和FG070053DSSWJGT1液晶屏的内部结构以及时序图的分析,设计LCD显示接口电路,主要是把IntelPXA270的控制信号与LCD屏的控制引脚连接起来,如图3所示。通过16位数据线把LCD控制器的数据发送脚与FG070053DSSWJGT1的数据接收脚连接起来,即把(R0—R4,G0—G5,B0—B4)与L_DD0-L_DD15连接起来;把帧时钟,行时钟,像素时钟等与LCD屏连接; ADJ采用电压为0—3.0V、 频率为20KHz的PWM脉冲,调节液晶屏背光灯的亮度,在满足用户要求的同时还可有效地控制功耗。图3中,网络标号LCLK是行时钟控制信号,FCLK是帧时钟控制信号,PCLK是像素时钟控制信号,OE为数据输出使能信号。VDD由直流5V稳压电源提供,U/D通过电阻拉低后对屏幕提供上下翻转信号,L/R支持屏幕左右翻转控制。

图3 TFT LCD接口电路

3 LCD显示程序的设计

        在WindowsCE下LCD驱动程序开发使用基本图形引擎(GPE)类来实现[1] [5]。在使用GPE类编写驱动程序之前,首先分析使用GPE类编写显示驱动时对显示设备的要求,内存布局要求显示设备使用线性帧缓冲区,全部的显示内存是连续的;接下来分析GPE类对内存中数据格式的要求。LCD屏是自顶向下的格式,像素(0,0)在左上角,像素(width-1,height-1)在右下角。 帧缓冲区的步幅,即表示显示设备上一个扫描行在内存中占的字节数,应当是四字节的整数倍,即使在每个扫描行的末尾填充一些无用的字节,CPU不需做“排”选择也可以存取整个帧缓冲区,帧缓冲区不应当使用位面(位面就是每种颜色信道<RGB>在帧缓冲区进行分开存储)。

        使用IntelPXA270 内置的LCD控制器,集成了7个通道的DMA,支持像素深度分别为2、4、8、16、18、24位的RGB模式,采用16位RGB模式进行设计。图像数据保存在内存中,使用DMA方式进行帧数据存取,帧的大小及帧地址是指定的,可以满足GPE类的线性帧缓冲区的要求,LCD控制与LCD屏都满足WindowsCE 下使用GPE类来实现显示驱动的硬件要求。

3.1 创建基于GPE类的显示驱动程序

        使用GPE类简化了WindowsCE显示设备的开发工作,GPE类代表一个显示设备,是一个纯虚的类,设计显示驱动时必须继承这个基本GPE类。

        首先定义一个新的类(class SA2Video)来继承GPE类,根据GPE类的要求,实现以下函数:

NumModes ------返回显示驱动所支持的显示模式。
GetModeInfo ------返回指定显示模式的信息,如显示像素宽度和深度,处理由NumModes()函数返回的显示模式,当SetModes()函数被调用时,总是返回在模式配置列表中的第一个模式值。
SetModes ------设置显示模式。
AlLOCSurface------分配一个页面,页面仅仅是保存像素数据的RAM或视频RAM,是一个块内存,GPESurf类能用于代表系统显存上的一个页面,保证在视频RAM上分配一个页面。
SetPointerShape------设置光标位图和光标区。
MovePointer------移动光标。
BltPrepare ------在位块传输操作之前调用,如果驱动支持位块传输之前的操作,它就允许驱动建立硬件位块传输(blit)操作,并返回一个实际操作函数去执行位块传输(blit),在GPE类中提供默认的Blit操作函数。
BltComplete------在块传输完成之后执行,如果有必要的话,它允许设备做任何的清除操作。
Line ------在画线操作之前和之后调用,如果在画线之前调用,该函数可以建立硬件的画线操作,然后返回GPE默认的画线操作;如果在画线之后调用,该函数可以做任何画线操作之后的清除。
InVBlank ------标志是否在水平同步周期时显示更新了。
这些函数在GPE类的源代码中为空函数,所以必须在(class SA2Video)中实现函数重载。

3.2 创建LCD控制器接口驱动程序

        创建LCD控制器的接口驱动程序主要是完成硬件的配置,包括LCD控制器和IO引脚接口的配置。首先根据LCD显示接口的电路连接,配置IntelPXA270内的IO寄存器,然后根据外接的LCD屏提供的参数配置LCD控制器,主要是配置TFT接口时序,如帧时钟,行时钟,像素时钟,数据输出使能等[6]。在xllp_lcd.c文件中的XllpLCDInit()函数实现硬件的初始化,以下为该函数的关键代码:

XLLP_STATUS_T XllpLCDInit(P_XLLP_LCD_T pXllpLCD)
{ XLLP_STATUS_T status = 0;
// 初始化IO接口,根据LCD连接电路图进行配置
LCDSetupGPIOs(pXllpLCD);
// 初始LCD控制器及帧缓冲区
LCDInitController(pXllpLCD);
// 清除LCD控制器的状态寄存器
LCDClearStatusReg(pXllpLCD);
// 使能LCD 控制器,驱动LCD屏显示数据
LCDEnableController(pXllpLCD);
return status;
}

3.3 LCD控制器显示模式的设置

[1] [2]  下一页


本文关键字:显示器  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术