《第13章 LCD驱动参数的配置与编译.ppt》由会员分享,可在线阅读,更多相关《第13章 LCD驱动参数的配置与编译.ppt(20页珍藏版)》请在优知文库上搜索。
1、第13章 LCD驱动参数的配置与编译本章重点 液晶显示器种类。S3C2410内置LCD控制器。支持LCD的内核定制与内核移植 本章内容 13.1 LCD概述 13.2 S3C2410内置LCD控制器 13.3 LCD驱动程序环境配置 13.1 LCD概述 电视机所采用 CRT(阴极射线管)有着体积大、重量重、尺寸受限等缺点。随着电子科技发展,这使得开发新一代显示器技术变得更有其必要!新一代显示器讲求几个重点:平面直角,画面显示不变形、轻薄短小耗能少,携带方便且同时要与现有影像信号技术兼容。目前谈论到超薄型显示器技术,最普及当是 TFT LCD 应用了,举凡数字相机、笔记型计算机、PDA 等,需
2、要显示复杂信息电子产品通通少不了它。13.1 LCD概述 13.1.1 液晶显示器原理 描述液晶物理性质,必须先了解一般固态晶体具有方向性,而液态晶体这种特殊物质,不但具有一般固体晶体方向性外,同时又具有液体流动性。改变固态晶体方向必须旋转整个晶体,改变液态晶体就不用那幺麻烦,它方向性可经由电场或磁场来控制。改变液晶方向视液晶成分而有所不同,有液晶和电场平行时位能较低,所以当外加电场时会朝着电场方向转动,相对,也有液晶是对应电场垂直时位能较低。由于液晶对于外加力量(电场或磁场敏感),从而呈现了方向性效果,也导致了当光线入射液晶中时,必然会按照液晶分子排列方式行进,产生了自然偏转现像。电子产品中
3、所用液晶显示器,就是是利用液晶光电效应,藉由外部电压控制,再透过液晶分子折射特性,以及对光线旋转能力来获得亮暗情况,进而达到显像目。电源关闭时,液晶具有偏光效果,可将入射光线转弯,穿过极栅,呈现亮色;电源开启时液晶不具有偏光功能,因此光线不能通过极栅呈现暗色 13.1 LCD概述 13.1.2 液晶显示器种类 利用液晶制成显示器称为液晶显示器,英文称 LCD(Liquid Crystal Display)。其种类可分为依驱动方式之静态驱动(Static)、单纯矩阵驱动(Simple Matrix)以及主动矩阵驱动(Active Matrix)三种。而其中,单纯矩阵型又是俗称被动式(Passiv
4、e),可分为扭转向列型(TN)和超扭转式向列型(STN)两种;而主动矩阵型则以薄膜式晶体管型(TFT)为目前主流。13.2 S3C2410内置LCD控制器 一块LCD屏显示图像,不但需要LCD驱动器,还需要有相应LCD控制器。通常LCD驱动器会以COF/COG形式与LCD 玻璃基板制做在一起,而LCD控制器则有外部电路来实现。而S3C2410内部已经集成了LCD控制器,因此可以很方便地去控制各种类型LCD屏,例如:STN和TFT屏。由于TFT屏将是今后应用主流,因此,重点围绕TFT屏控制来进行。1、S3C2410 LCD控制器特性:STN屏 支持3种扫描方式:4bit单扫、4位双扫和8位单扫
5、支持单色、4级灰度和16级灰度屏 支持256色和4096色彩色STN屏(CSTN)支持分辩率为640*480、320*240、160*160以及其它规格多种LCDTFT屏 支持单色、4级灰度、256色调色板显示模式 支持64K和16M色非调色板显示模式 支持分辩率为640*480,320*240及其它多种规格LCD13.2 S3C2410内置LCD控制器2、TFT屏与S3C2410内部LCD控制器对于控制TFT屏来说,除了要给它送视频资料(VD23:0)以外,还有以下一些信号是必不可少,分别是:VSYNC(VFRAME):帧同步信号HSYNC(VLINE):行同步信号VCLK:像数时钟信号VD
6、EN(VM):数据有效标志信号在图13-1中,REGBANK 是LCD控制器寄存器组,用来对LCD控制器各项参数进行设置。而 LCDCDMA 则是LCD控制器专用DMA信道,负责将视频资料从系统总线(System Bus)上取来,通过 VIDPRCS 从VD23:0发送给LCD屏。同时 TIMEGEN 和 LPC3600 负责产生 LCD屏所需要控制时序,例如VSYNC、HSYNC、VCLK、VDEN,然后从 VIDEO MUX 送给LCD屏。13.2 S3C2410内置LCD控制器VFRAME:LCD 控制器和 LCD 驱动器之间的帧同步信号。该信号告诉 LCD屏的新的一帧开始了。LCD 控
7、制器在一个完整帧显示完成后立即插入一个VFRAME 信号,开始新一帧的显示;VLINE:LCD控制器和 LCD驱动器之间的线同步脉冲信号,该信号用于 LCD驱动器将水平线(行)移位寄存器的内容传送给 LCD 屏显示。LCD 控制器在整个水平线(整行)数据移入 LCD驱动器后,插入一个 VLINE 信号;VCLK:LCD控制器和 LCD驱动器之间的像素时钟信号,由 LCD控制器送出的数据在 VCLK的上升沿处送出,在 VCLK的下降沿处被 LCD驱动器采样;VM:LCD驱动器的 AC 信号。VM 信号被 LCD驱动器用于改变行和列的电压极性,从而控制像素点的显示或熄灭。VM 信号可以与每个帧同步
8、,也可以与可变数量的 VLINE 信号同步。13.2 S3C2410内置LCD控制器3、数据线:也就是我们说的 RGB 信号线,S3C2410芯片手册上都有详细的说明。4、要注意一下LCD的电源电压,对于手持设备来说一般都为5V或3.3V,或同时支持 5V和3.3V,如果LCD的需要的电源电压是 5V,那就要注意了,S3C2410 的逻辑输出电压只有3.3V,此时一定要把S3C2410的逻辑输出电压提高到5V。5、图-所示的是把3.3V逻辑电压转变成 5V逻辑电压电路图(此图由华恒公司提供)。6、屏的控制信号直接与 S3C2410 的控制信号相接就可以了。7、另外S3C2410到 LCD屏的连
9、线还要超过0.5米,过长会造成一些错误。13.3 LCD驱动程序环境配置LCD 驱动程序环境配置过程为:1)下载软件。2)内核移植与内核配置使内核支持FrameBuffer。3)修改mach-smdk2410.c文件。4)编译内核并生成内核镜像文件。5)模块加载。6)编写程序代码。7)测试。在Linux 2.6 中,内核已经很好地支持了LCD,因此,驱动并不需要自己重新编写,只要进行适当的修改就可以驱动相应的LCD了。13.3 LCD驱动程序环境配置下面以2.6.22.5内核为例,进行LCD驱动移植。(1)从以下地址下载交叉编译工具http:/ /#tar xjvf arm-linux-gcc
10、-3.4.1.tar.bz2(4)内核配置 操作步骤步骤1:解压缩linux-2.6.22.5内核包。rootlocalhost embedded#tar xjvf linux-2.6.22.5.tar.bz2步骤2:进入linux-2.6.22.5目录。rootlocalhost embedded#cd linux-2.6.22.513.3 LCD驱动程序环境配置步骤3:修改Makefile文件。rootlocalhost linux-2.6.22.5#vi Makefile将下面两行ARCH?=$(SUBARCH)CROSS_COMPILE?=修改为ARCH?=armCROSS_COMPI
11、LE?=/usr/local/arm/3.4.1/bin/arm-linux-步骤4:在linux-2.6.22.5目录下输入命令:rootlocalhost linux-2.6.22.5#make s3c2410_defconfig menuconfig13.3 LCD驱动程序环境配置步骤5:修改配置。由于使用了s3c2410_defconfig参数,所以大部分选项都已经预配置完成,只要修改以下配置:Floating point emulation -*FastFPE math emulation(EXPERIMENTAL)Device Drivers -Graphics support -
12、*Bootup logo -以上两个选项需要选中。另外查看以下配置,要想驱动LCD必须保证这些选项。Device Drivers -Graphics support -Support for frame buffer devices*Enable firmware EDID S3C2410 LCD framebuffer support13.3 LCD驱动程序环境配置步骤6:修改显示图像的大小、像素等参数。rootlocalhost linux-2.6.22.5#vi arch/arm/mach-s3c2440/mach-smdk2440.c#include#include .ucon =UC
13、ON,.ulcon =ULCON,.ufcon =UFCON,;/*LCD的初始化参数,包括寄存器的初始值,LCD的长宽等*/static struct s3c2410fb_mach_info smdk2410_lcd_cfg _initdata=13.3 LCD驱动程序环境配置.regs=/*寄存器初始值*/.lcdcon1=S3C2410_LCDCON1_TFT16BPP|S3C2410_LCDCON1_TFT|S3C2410_LCDCON1_CLKVAL(0 x04),.lcdcon2=S3C2410_LCDCON2_VBPD(7)|S3C2410_LCDCON2_LINEVAL(319
14、)|S3C2410_LCDCON2_VFPD(6)|S3C2410_LCDCON2_VSPW(3),.lcdcon3=S3C2410_LCDCON3_HBPD(19)|S3C2410_LCDCON3_HOZVAL(239)|S3C2410_LCDCON3_HFPD(7),.lcdcon4=S3C2410_LCDCON4_MVAL(0)|S3C2410_LCDCON4_HSPW(3),13.3 LCD驱动程序环境配置.lpcsel=(0 xCE6)&7)|14,.type=S3C2410_LCDCON1_TFT16BPP,/*显示形式*/.width=240,/*长*/.height=320,/
15、*宽*/.xres=/*坐标信息,水平方向*/.min=240,.max=240,.defval=240,.yres=/*坐标信息,竖直方向*/.min=320,.max=320,.defval=320,13.3 LCD驱动程序环境配置.bpp=/*像素信息*/.min=16,.max=16,.defval=16,;static void _init smdk2410_init(void)s3c24xx_fb_set_platdata(&smdk2410_lcd_cfg);platform_add_devices(smdk2410_devices,ARRAY_SIZE(smdk2410_dev
16、ices);smdk_machine_init();13.3 LCD驱动程序环境配置.lcdcon5=S3C2410_LCDCON5_FRM565|S3C2410_LCDCON5_INVVLINE|S3C2410_LCDCON5_INVVFRAME|S3C2410_LCDCON5_PWREN|S3C2410_LCDCON5_HWSWP,#if 0.gpccon=0 xaa940659,.gpccon_mask=0 xffffffff,.gpcup=0 x0000ffff,.gpcup_mask=0 xffffffff,.gpdcon=0 xaa84aaa0,.gpdcon_mask=0 xffffffff,.gpdup=0 x0000faff,.gpdup_mask=0 xffffffff,#endif13.3 LCD驱动程序环境配置步骤7:重新编译内核并生成内核镜像zImage。rootlocalhost linux-2.6.22.5#make zImage步骤8:复制内核镜像zImage到/tftpboot/目录中。rootlocalhost linux-2.6.22.5#cp a