液晶显示驱动心得.doc

上传人:汽*** 文档编号:558828813 上传时间:2023-04-10 格式:DOC 页数:22 大小:725.51KB
返回 下载 相关 举报
液晶显示驱动心得.doc_第1页
第1页 / 共22页
液晶显示驱动心得.doc_第2页
第2页 / 共22页
液晶显示驱动心得.doc_第3页
第3页 / 共22页
液晶显示驱动心得.doc_第4页
第4页 / 共22页
液晶显示驱动心得.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《液晶显示驱动心得.doc》由会员分享,可在线阅读,更多相关《液晶显示驱动心得.doc(22页珍藏版)》请在金锄头文库上搜索。

1、一 实验内容简要描述1实验目的学会驱动程序的编写方法,配置S3C2410的LCD驱动,以及在LCD屏上显示包括bmp和jpeg两种格式的图片2实验内容(1)分析S3c2410实验箱LCD以及LCD控制器的硬件原理,据此找出相应的硬件设置参数,参考xcale实验箱关于lcd的设置,完成s3c2410实验箱LCD的设置(2)在LCD上显示一张BMP图片或JPEG图片3实验条件(软硬件环境)PC机、S3C2410开发板、PXA255开发板二 实验原理1. S3C2410内置LCD控制器分析1.1 S3C2410 LCD控制器一块LCD屏显示图像,不但需要LCD驱动器,还需要有相应的LCD控制器。通常

2、LCD驱动器会以COF/COG的形式与LCD 玻璃基板制作在一起,而LCD控制器则由外部电路来实现。而S3C2410内部已经集成了LCD控制器,因此可以很方便地去控制各种类型的LCD屏,例如:STN和TFT屏。S3C2410 LCD控制器的特性如下:(1)STN屏支持3种扫描方式:4bit单扫、4位双扫和8位单扫支持单色、4级灰度和16级灰度屏支持256色和4096色彩色STN屏(CSTN)支持分辩率为640*480、320*240、160*160以及其它规格的多种LCD(2)TFT屏支持单色、4级灰度、256色的调色板显示模式支持64K和16M色非调色板显示模式支持分辩率为640*480,3

3、20*240及其它多种规格的LCD对于控制TFT屏来说,除了要给它送视频资料(VD23:0)以外,还有以下一些信号是必不可少的,分别是:VSYNC(VFRAME) :帧同步信号HSYNC(VLINE) :行同步信号VCLK :像数时钟信号VDEN(VM) :数据有效标志信号由于本项目所用的S3C2410上的LCD是TFT屏,并且TFT屏将是今后应用的主流,因此接下来,重点围绕TFT屏的控制来进行。图1.1是S3C2410内部的LCD控制器的逻辑示意图: 图1.1REGBANK 是LCD控制器的寄存器组,用来对LCD控制器的各项参数进行设置。而 LCDCDMA 则是LCD控制器专用的DMA信道,

4、负责将视频资料从系统总线(System Bus)上取来,通过 VIDPRCS 从VD23:0发送给LCD屏。同时 TIMEGEN 和 LPC3600 负责产生 LCD屏所需要的控制时序,例如VSYNC、HSYNC、VCLK、VDEN,然后从 VIDEO MUX 送给LCD屏。 1.2 TFT屏时序分析图1.2是TFT屏的典型时序。其中VSYNC是帧同步信号,VSYNC每发出1个脉冲,都意味着新的1屏视频资料开始发送。而HSYNC为行同步信号,每个HSYNC脉冲都表明新的1行视频资料开始发送。而VDEN则用来标明视频资料的有效,VCLK是用来锁存视频资料的像数时钟。并且在帧同步以及行同步的头尾都

5、必须留有回扫时间,例如对于VSYNC来说前回扫时间就是(VSPW+1)(VBPD+1),后回扫时间就是(VFPD +1);HSYNC亦类同。这样的时序要求是当初CRT显示器由于电子枪偏转需要时间,但后来成了实际上的工业标准,乃至于后来出现的TFT屏为了在时序上于CRT兼容,也采用了这样的控制时序。 图1.2S3C2410实验箱上的LCD是一款3.5寸TFT真彩LCD屏,分辩率为240*320,下图为该屏的时序要求。 图1.3通过对比图1.2和图1.3,我们不难看出:VSPW+1=2 - VSPW=1VBPD+1=2 - VBPD=1LINVAL+1=320- LINVAL=319VFPD+1=

6、3 - VFPD=2HSPW+1=4 - HSPW=3HBPD+1=7 - HBPW=6HOZVAL+1=240- HOZVAL=239HFPD+1=31 - HFPD=30以上各参数,除了LINVAL和HOZVAL直接和屏的分辩率有关,其它的参数在实际操作过程中应以上面的为参考,不应偏差太多。 1.3 LCD控制器主要寄存器功能详解图1.4LINECNT :当前行扫描计数器值,标明当前扫描到了多少行。CLKVAL :决定VCLK的分频比。LCD控制器输出的VCLK是直接由系统总线(AHB)的工作频率HCLK直接分频得到的。做为240*320的TFT屏,应保证得出的VCLK在510MHz之间。

7、MMODE :VM信号的触发模式(仅对STN屏有效,对TFT屏无意义)。PNRMODE :选择当前的显示模式,对于TFT屏而言,应选择11,即TFT LCD panel。BPPMODE :选择色彩模式,对于真彩显示而言,选择16bpp(64K色)即可满足要求。ENVID :使能LCD信号输出。图1.5VBPD , LINEVAL , VFPD , VSPW 的各项含义已经在前面的时序图中得到体现。 图1.6HBPD , HOZVAL , HFPD 的各项含义已经在前面的时序图中得到体现。 图1.7HSPW 的含义已经在前面的时序图中得到体现。MVAL 只对 STN屏有效,对TFT屏无意义。HS

8、PW 的含义已经在前面的时序图中得到体现,这里不再赘述。MVAL 只对 STN屏有效,对TFT屏无意义。 图1.8VSTATUS :当前VSYNC信号扫描状态,指明当前VSYNC同步信号处于何种扫描阶段。HSTATUS :当前HSYNC信号扫描状态,指明当前HSYNC同步信号处于何种扫描阶段。BPP24BL :设定24bpp显示模式时,视频资料在显示缓冲区中的排列顺序(即低位有效还是高位有效)。对于16bpp的64K色显示模式,该设置位无意义。FRM565 :对于16bpp显示模式,有2中形式,一种是RGB5:5:5:1,另一种是5:6:5。后一种模式最为常用,它的含义是表示64K种色彩的16

9、bit RGB资料中,红色(R)占了5bit,绿色(G)占了6bit,兰色(B)占了5bitINVVCLK , INVLINE , INVFRAME , INVVD :通过前面的时序图,我们知道,CPU的LCD控制器输出的时序默认是正脉冲,而LCD需要VSYNC(VFRAME)、VLINE(HSYNC)均为负脉冲,因此 INVLINE 和 INVFRAME 必须设为“1 ”,即选择反相输出。INVVDEN , INVPWREN , INVLEND 的功能同前面的类似。PWREN 为LCD电源使能控制。在CPU LCD控制器的输出信号中,有一个电源使能管脚LCD_PWREN,用来做为LCD屏电源

10、的开关信号。ENLEND 对普通的TFT屏无效,可以不考虑。BSWP 和 HWSWP 为字节(Byte)或半字(Half-Word)交换使能。由于不同的GUI对FrameBuffer(显示缓冲区)的管理不同,必要时需要通过调整 BSWP 和 HWSWP 来适应GUI。2. Linux 驱动2.1 FrameBufferLinux是工作在保护模式下,所以用户态进程是无法像DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Lin仿显卡的功能,将显ux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模卡硬件结构抽象掉,可以通过Framebuffer的

11、读写直接对显存进行操作。用户可以将Framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。这种操作是抽象的,统一的。用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由Framebuffer设备驱动来完成的。在Linux系统下,FrameBuffer的主要的结构如图所示。Linux为了开发FrameBuffer程序的方便,使用了分层结构。fbmem.c处于Framebuffer设备驱动技术的中心位置。它为上层应用程序提供系统调用,也为下一层的特定硬件驱动提供接口;那些底层硬件驱动需要用到这儿的接口来向系统内核注册

12、它们自己。fbmem.c 为所有支持FrameBuffer的设备驱动提供了通用的接口,避免重复工作。下将介绍fbmem.c主要的一些数据结构。2.2 数据结构2.2.1 Linux FrameBuffer的数据结构在FrameBuffer中,fb_info可以说是最重要的一个结构体,它是Linux为帧缓冲设备定义的驱动层接口。它不仅包含了底层函数,而且还有记录设备状态的数据。每个帧缓冲设备都与一个fb_info结构相对应。fb_info的主要成员如下struct fb_info int node;struct fb_var_screeninfo var;/* Current var */str

13、uct fb_fix_screeninfo fix;/* Current fix */struct fb_videomode *mode;/* current mode */struct fb_ops *fbops;struct device *device;/* This is the parent */struct device *dev;/* This is this fb device */char _iomem *screen_base;/* Virtual address */unsigned long screen_size;/* Amount of ioremapped VRA

14、M or 0 */ ;其中node成员域标示了特定的FrameBuffer,实际上也就是一个FrameBuffer设备的次设备号。fb_var_screeninfo结构体成员记录用户可修改的显示控制器参数,包括屏幕分辨率和每个像素点的比特数。fb_var_screeninfo中的xres定义屏幕一行有多少个点, yres定义屏幕一列有多少个点, bits_per_pixel定义每个点用多少个字节表示。其他域见以下代码注释。struct fb_var_screeninfo _u32 xres;/* visible resolution */_u32 yres;_u32 xoffset;/* of

15、fset from virtual to visible */_u32 yoffset;/* resolution */_u32 bits_per_pixel;/* bits/pixel */_u32 pixclock;/* pixel clock in ps (pico seconds) */_u32 left_margin;/* time from sync to picture*/_u32 right_margin;/* time from picture to sync*/_u32 hsync_len;/* length of horizontal sync*/_u32 vsync_len;/* length of vertical sync*/;在fb_info结构体中,fb_fix_screeninfo中记录用户不能修改的显示控制器的参数,如屏幕缓冲区的物理地址,长度。当对帧缓冲设备进行映射操作的时候,就是从fb_fix_screeninfo中取

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号