第6章--LCD驱动移植-Linux系统移植(第2版)-教学课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第6章--LCD驱动移植-Linux系统移植(第2版)-教学课件.ppt》由会员分享,可在线阅读,更多相关《第6章--LCD驱动移植-Linux系统移植(第2版)-教学课件.ppt(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第6章 LCD驱动移植6.1 认识LCD相关硬件原理6.2 LCD参数设置6.3 内核LCD驱动机制6.4 Linux 2.6.32的LCD驱动源码分析6.5 移植内核中的LCD驱动6.1 认识LCD相关硬件原理6.1.1 LCD概述6.1.2 LCD控制器6.1.3 LCD控制器方块图6.1.4 LCD控制器操作6.1.5 LCD控制寄存器6.1.1 LCD概述LCD(液晶显示)模块可以显示汉字、字符和图形,同时还具有低压、低功耗、体积小、重量轻和超薄等很多优点。1LCD显示屏的分类2LCD的常用参数3LCD的显示原理1LCD显示屏的分类常见的液晶显示屏按物理结构可分为4种,即扭曲向列型(T
2、N-LCD)、超扭曲向列型(STN-LCD)、双层超扭曲向列型(DSTN-LCD)和薄膜晶体管型(TFT-LCD)。在写驱动程序时要根据不同类型对LCD控制器进行控制。3LCD的显示原理一幅图像被称为一帧,每帧由多个行排列组成,每行又由多个像素组成,每个像素的色彩使用若干位数据来表示。显示器从屏幕的左上方开始,一行一行地取得每个像素的数据并显示出来,当显示到一行的最右边时,跳到下一行的最左边开始显示下一行;当显示完所有行后,重新跳到左上方开始下一帧的显示。显示器沿着“Z”字形的路线进行扫描,同时使用帧扫描信号和行扫描信号来同步每一帧和每一行。6.1.2 LCD控制器LCD控制器的功能是产生控制
3、时序和信号,从而驱动LCD。用户只需要通过读写LCD控制器的一系列寄存器来完成配置。S3C2440的LCD控制器由一个逻辑单元组成,它的作用是把LCD图像数据从一个位于系统内存的buffer传送到一个外部的LCD驱动器。LCD控制器还支持1BPP、2BPP、4BPP、8BPP的调色板TFT彩色屏,并且支持64K色(16BPP)和16M色(24BPP)非调色板真彩显示。6.1.3 LCD控制器方块图LCD控制器的接口时序分为STN和TFT两种。S3C2440的LCD控制器可以同时支持STN和TFT的LCD显示屏,根据实际需要对控制器进行不同的设置可以产生不同的时序。124BPP显示24BPP显示
4、模式使用24位表示一个像素点,每种颜色用8比特位来表示。LCD控制器从内存中获得某个像素的24位颜色值后直接通过VD23:0数据线发送给LCD驱动器。VD23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0RED76543210GREEN7654321 0BLUE7 6 5 4 3 2 1 0216BPP16BPP模式用16位来表示一个像素点的值。这16位数据的格式分为两种:5:6:5 和5:5:5:1,前者使用高5位表示红色,中间6位表示绿色,低5位表示蓝色;后者用高15位表示红、绿、蓝3种颜色,每种颜色用5位表示,最低位
5、表示透明度。VD23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0RED43210NCNCNCGREEN 543210BLUE4 3 2 1 0 4256色调色板S3C2440为TFT显示器提供256色调色板,调色板是一块25616的内存,使用16BPP的格式来表示8BPP模式下各索引值的颜色。INDEXBit Pos15 14 13 12 11 109876543210 Address00HR4 R3 R2 R1 R0 G5 G4 G3 G2 G1 G0 B4 B3 B2 B1 B0 0X4D00040001HR4 R3
6、 R2 R1 R0 G5 G4 G3 G2 G1 G0 B4 B3 B2 B1 B0 0X4D000404FFHR4 R3 R2 R1 R0 G5 G4 G3 G2 G1 G0 B4 B3 B2 B1 B0 0X4D0007FCNumber of DV23 22 21 20 19 15 14 13 12 11 1076543 1LCD控制寄存器LCDCON1LCDCON1用于选择LCD类型、设置像素时钟、使能LCD输出信号等。功 能位描 述初始状态LINECNT(只读)27:18每输出一个有效行其值减10CLKVAL17:8用于设置VCLK的值STN:VCLK=HCLK/(CLKVAL2)TF
7、T:VCLK=HCLK/(CLKVAL+1)2)0MMODE7用于设置VM信号的反转效率,只用于TFT屏0PNRMODE6:5设置LCD的类型00:4位双扫描(STN)01:4位单扫描(STN)10:8位单扫描(STN)11:TFT屏0BPPMODE4:1选择BPP模式,对于TFT屏1000:1BPP1001:2BPP1010:4BPP1011:8BPP1100:16BPP1101:24BPP(STN)0ENVID0信号输出使能位0:禁止,1:使能02LCD控制寄存器LCDCON2用于设置垂直方向各信号的时间参数。功 能位描 述初始值VBPD31:24VSYNC信号之后,还要经过(VBPD+1
8、)个HSYNC信号周期才会出现有效行数据0LINEVAL23:14LCD的行数:(LINEVAL+1)行0VFPD13:6一帧中的有效数据完成后,到下一个VSYNC信号有效前的无效行数目:(VFPD+1)0VSPW5:0表示VSYNC信号的宽度为(VSPW+1)个HSYNC信号周期,这(VSPW+1)行的数据无效04LCD控制寄存器LCDCON4对于TFT屏,这个寄存器用来设置HSYNC信号的脉冲宽度。功 能位描 述初始值MVAL15:8STN屏用0HSPW7:0表示脉冲宽度为(HSPW+1)个VCLK信号周期0WLH7:0STN屏用05LCD控制寄存器LCDCON5用于设置各个控制信号的极性
9、,并可从中读取状态信息。功 能位描 述初始值VSTATUS16:15只读,垂直状态00:处于VSYNC信号脉冲期间01:处于VSYNC信号结束到行有效之间10:处于行有效期间11:处于行有效结束到下一个VSYNC信号之间0HSTATUS14:13只读,描述水平状态00:处于HSYNC信号脉冲期间01:处于HSYNC信号结束到像素有效之间10:处于像素有效期间11:处于像素有效结束到下一个HSYNC信号之间0BPP24BL12设置TFT屏的显示模式为24BPP时,一个4字节中哪3个字节有效。0:低3字节有效;1:高3字节有效0FRM56511设置TFT屏的显示模式为16BPP时,数据的格式0:5
10、:5:5:1;1:5:6:50INVVCLK10设置VCLK信号有效沿的极性0:下降沿读取数据;1:在上升沿读取数据0INVVLINE9设置VLINE/HSYNC脉冲的极性0:正常极性;1:反转的极性05LCD控制寄存器LCDCON5功 能位描 述初始值INVVFRAME8设置VFRAME/VSYNC脉冲的极性0:正常极性;1:反转的极性0INVD7设置VD数据线表示数据的极性0:正常极性;1:反转的极性0INVVDEN6设置VDEN信号的极性0:正常极性;1:反转的极性0INVPWREN5设置PWREN信号的极性0:正常极性;1:反转的极性0INVLEND4设置LEND信号的极性0:正常极性
11、;1:反转的极性0PWREN3LCD_PWREN信号输出使能0:禁止;1:使能0ENLEND2LEND信号输出使能0:禁止;1:使能0BSWP1字节交换使能0:禁止;1:使能0HWSWP0半字交换使能0:禁止;1:使能06帧内存地址寄存器帧内存可以很大,而真正要显示的区域称为视口,它处于帧内存之内。s3c2440有3个帧内存地址寄存器,这3个寄存器用于确定帧内存的起始地址,定位视口在帧内存的位置。功 能位描 述初始值LCDBANK29:21用于保存帧内存起始地址的A30:22,帧内存起始地址必须为4M对齐0LCDBASEU20:0对于双扫描,用于表示上半帧的内存起始地址对于单扫描,用于表示帧的
12、内存起始地址06帧内存地址寄存器功 能位描 述初始值LCDBASEL20:0对于双扫描,用于保存下半帧的起始地址对于单扫描,用于保存帧的结束地址其值按如下公式计算:LCDBASEL=CLDBASEU+(PAGEWIDTH+OFFSIZE)*(LINEVAL+1)0功 能位描 述初始值OFFSIZE21:11虚拟屏长度表示上一行最后一个数据与下一行第一个数据间地址差值的一半,即以半字为单位的地址差0PAGEWIDTH10:0虚拟屏的宽度,这个值决定视口的宽度,以半字为单位01设置VFRAME、VLINEVFRAME和VLINE信号可以根据液晶屏的尺寸和显示模式来设置,它们对应LCDCON2寄存器
13、的HOZVAL和LINEVAL值,设置方法如下:HOZVAL=(水平尺寸/VD数据位)-1彩色液晶屏:水平尺寸=3 水平像素点数VD数据位=BBP数(不分单双扫描)LINVAL=垂直尺寸-1(单扫描)LINVAL=垂直尺寸/2-1(双扫描)2设置VCLKLCD控制器输出的VCLK是直接由系统总线(AHB)的工作频率HCLK直接分频得到的。VCLK=HCLK/(CLKVAL+1)2)3帧速率帧速率就是VSYNC信号的频率。帧速率与VSYNC、VBPD、VFPD、LINEVAL、HSYNC、HBPD、HFPD、HOZVAL和CLKVAL的域有关,它们是LCDCON1/2/3/4。大多数LCD驱动器
14、需要它们合适的帧速率。帧速率按如下公式计算:Frame Rate=1/(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)*(HSPW+1)+(HBPD+1)+(HFPD+1)+HOZVAL+1*2*(CLKVAL+1)/HCLK6.3.1 FrameBuffer概述帧缓冲区是把显示设备抽象成为帧缓冲区设备区。帧缓冲区允许上层应用程序在图形模式下直接对显示缓冲区进行读写和I/O控制等操作。通过专门的设备结点可对相应的设备进行访问。应用程序可以将它看成是显示内存的一个引用,将其映射到进程地址空间之后,就可以进行读写操作,而读写操作可以反映到具体的LCD设备上。6.3.2
15、FrameBuffer 设备驱动的结构FrameBuffer设备驱动基于两个文件,linux/include/linux/fb.h和linux/drivers/video/fbmem.c。其中,fb.h定义了Framebuffer驱动所要用到的几乎所有的结构体,这些结构主要包括struct fb_info、struct fb_var_screeninfo和struct fb_fix_screeninfo。下面分别讲述这几个结构体。2fb_var_screeninfostruct fb_var_screeninfo记录了帧缓冲设备和指定显示模式的可修改信息。它包括显示屏幕的分辨率、每个像素的比特
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LCD 驱动 移植 Linux 系统 教学 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内