当前位置:首页 > 电源 > 电源
[导读]1 引言 随着电子信息技术不断发展, 嵌入式系统的应用越来越广泛。在嵌入式电子测量系统中, LCD(Liquid Crystal Display,液晶显示器)作为人机交互的主要设备,具有功耗低、外形尺寸小和优越的字符和图形显示

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



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

近日,Arm推出了Arm® Ethos™-U85神经网络处理器(NPU)和Arm Corstone™-320物联网参考设计平台,旨在满足海量的数据处理和大规模计算,加速推进边缘AI的发展进程。

关键字: ARM

上海2024年4月17日 /美通社/ -- 每年4月17日是世界血友病日。今年,世界血友病日以"认识出血性疾病,积极预防和治疗"为主题,呼吁关注所有出血性疾病,提升科学认知,提高规范化诊疗水平,让每一位出血性疾病患者享有...

关键字: VII 动力学 软件 BSP

伦敦2024年4月16日 /美通社/ -- ATFX宣布任命Siju Daniel为首席商务官。Siju在金融服务行业拥有丰富的经验和专业知识,曾在全球各地的高管职位上工作了19年以上。Siju之前担任FXCM首席商务官...

关键字: NI AN SI BSP

为了赶超云计算市场上的竞争对手,谷歌正试图通过定制的Arm服务器芯片降低云计算服务成本。

关键字: 谷歌 ARM 定制芯片

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

随着汽车软件数量爆发式的增长,整个行业都需要重新思考汽车产品的开发流程。为此,Arm推出了丰富的硬件IP、新的系统IP,以及全新的汽车计算与计算子系统产品路线图,旨在为各种汽车应用实现性能、功能安全、可扩展等方面的支持。

关键字: ARM 汽车电子

知名移动芯片设计公司ARM最近迈出重要一步,它正式推出汽车芯片设计。ARM推出的芯片设计方案名叫Neoverse,随同芯片一起推出的还有面向汽车制造商、汽车供应商的新系统。

关键字: ARM 汽车芯片 芯片

2024年3月13日 – 专注于引入新品的全球电子元器件和工业自动化产品授权代理商贸泽电子 (Mouser Electronics) 即日起开售Nexperia的NEX1000xUB电源IC。这些新型、省空间、可编程、高...

关键字: LCD显示器 智能手机 电池

随着通用人工智能的发展,数据中心的计算需求逐步提高。针对多模态数据、大模型的推理和训练需要更高的算力支持,而随着算力提升与之而来的还需更关注在功耗方面的优化。对于头部云计算和服务厂商而言,针对专门用例提高每瓦性能变得至关...

关键字: ARM 服务器 AI Neoverse CSS
关闭
关闭