当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于ARM与WindowsCE的LCD显示器设计

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屏的显示接口电路[!--empirenews.page--]

        结合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都设为输出口,并设为显示器的数据输出,程序设计如下:[!--empirenews.page--]

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数据信号,因此,设计的驱动电路能灵活地移植到不同平台。



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭