• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 电子设计 > 电源技术 > DCDC开关电源 > 基于ARM与WindowsCE的LCD显示器设计

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

录入:edatop.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屏的显示接口电路 [p]

        结合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控制器显示模式的设置

        WindowsCE GDI 支持带有多种颜色灰度和颜色模式的显示设备,从仅用一位表示的颜色到调色板调制出真32位RGB,每一种格式支持几种不同的像素排列方式,这取决于对显示内存的访问是否支持单字节方式、双字节字方式、四字节方式。

        使用下列掩码来提取红、绿、蓝数值:每个像素用16位表示的格式是一种掩码格式,并且不被调色,每个像素我们用两字节来存储。结合TFT LCD显示接口的硬件电路图和IntelPXA270 内置的LCD控制器,按照IntelPXA270处理器手册上的说明,需要对控制引脚初始化[7]。在图3中,第14口用来进行帧时钟控制,结合IntelPXA270数据手册,我们配置第14口为L_VSYNC功能,用如下语句实现:
GAFR0_L|=((GAFR0_L&~(1u<<29))|(1u<<28))
所有显示数据线L_DD0—L_DD15都设为输出口,并设为显示器的数据输出,程序设计如下: [p]

p_GPIORegs->GPDR1|=(XLLP_GPIO_BIT_L_DD0|XLLP_GPIO_BIT_L_DD1 |XLLP_GPIO_BIT_L_DD2|XLLP_GPIO_BIT_L_DD3
|XLLP_GPIO_BIT_L_DD4|XLLP_GPIO_BIT_L_DD5);
p_GPIORegs->GPDR2|=(XLLP_GPIO_BIT_L_DD6|XLLP_GPIO_BIT_L_DD7
|XLLP_GPIO_BIT_L_DD8|XLLP_GPIO_BIT_L_DD9
|XLLP_GPIO_BIT_L_DD10|XLLP_GPIO_BIT_L_DD11
|XLLP_GPIO_BIT_L_DD12|XLLP_GPIO_BIT_L_DD13
|XLLP_GPIO_BIT_L_DD14|XLLP_GPIO_BIT_L_DD15);
p_GPIORegs->GAFR1_U=(p_GPIORegs->GAFR1_U&~(XLLP_GPIO_AF_BIT_L_DD0_MASK|XLLP_GPIO_AF_BIT_L_DD1_MASK|XLLP_GPIO_AF_BIT_L_DD2_MASK|XLLP_GPIO_AF_BIT_L_DD3_MASK|XLLP_GPIO_AF_BIT_L_DD4_MASK|XLLP_GPIO_AF_BIT_L_DD5_MASK))|XLLP_GPIO_AF_BIT_L_DD0|XLLP_GPIO_AF_BIT_L_DD1|XLLP_GPIO_AF_BIT_L_DD2|XLLP_GPIO_AF_BIT_L_DD3|XLLP_GPIO_AF_BIT_L_DD4|XLLP_GPIO_AF_BIT_L_D;
在WindowsCE下都使用虚拟地址,经过一个映射函数将用到的物理地址转化为虚拟地址,这是WindowsCE操作系统所要求的,映射地址的函数为BOOL MapVirtualAddress()。

        按照屏的显示模式来配置LCD控制寄存器,其中包括配置LCD控制信号的模式,通过参看IntelPXA270的数据手册和一系列的计算,在掌握TFT LCD时序图的基础上进行参数配置:

L_FCLK为帧时钟;L_LCLK_A0为行时钟;L_BIAS为时钟使能;L_PCLK_WR为像素时钟,LDD<17:0>为像素点数据,在本设计中我们只用到了LDD<15:0>。
ENB:LCD数据使能位 HSP:水平时钟信号电压极性
0------LCD不可用 0------水平时钟为高电平有效
1------LCD使能 1------水平时钟为低电平有效
PCP:像素时钟电压极性
0------像素数据在数据引脚为上升沿时采样
1------像素数据在数据引脚为下降沿时采样

(1)行列的定义:
PPL: LCD屏的水平像素点的个数。根据LCD屏的长度来确定其值的大小。
PPL =行宽-1
在本设计中,行宽为800,那么PPL=800-1;
LPP: LCD屏的垂直像素点的个数。根据LCD屏的宽度来确定其值的大小。
LPP=列高—1
在本设计中,列高为480,那么LPP=480—1;
(2)L_PCLK_WR:
VCLK是LCD控制器的时钟信号,此信号是LCD控制器和LCD驱动器之间的象素时钟信号,VCLK计算时需先了解LCD屏所要求的帧速率的范围,并由此设定一个在帧速率范围内的值为CLKVAL,VCLK与CLKVAL之间的关系可用如下公式计算:VCLK(Hz)=HCLK/((CLKVAL +1)x2)
最小的CLKVAL为0,最大的CLKVAL由帧速率决定[8]。
(3)各种延时的取值:
BFW:一帧开始时所需要的延时长度
EFW:一帧结束时所需要的延时长度
VSW:帧同步信号VSYNC的宽度定义
BLW:一行开始时所需要的延时长度
ELW:一行结束时所需要的延时长度
HSW:行同步信号HSYNC的宽度定义

4 结束语

        基于嵌入式处理器IntelPXA270和WindowsCE进行LCD显示器设计,采用LCD驱动TFT显示屏,显示模式是主动的单扫描彩色模式,像素深度为16位的RGB格式,屏的大小为800×480。通过充分利用IntelPXA270的硬件资源,用IntelPXA270 控制彩色显示屏,显示亮度达100尼特,在LCD 高亮度的情况下显示器的功耗小于365 mW ,克服了一般TFT LCD 高亮度伴随着高功耗的矛盾;支持用户定制的TFT 液晶屏上实现WindowsCE 界面的图形显示;由于设计的硬件驱动电路只需LCD控制器给出帧同步信号、行同步信号、像素时钟、数据使能信号和RGB数据信号,因此,设计的驱动电路能灵活地移植到不同平台。



射频工程师养成培训教程套装,助您快速成为一名优秀射频工程师...

天线设计工程师培训课程套装,资深专家授课,让天线设计不再难...

上一篇:峰值电流模式控制中的斜波补偿技术
下一篇:适用的专用电源

射频和天线工程师培训课程详情>>

  网站地图