LCD驱动程序详细讲解(一)

LCD驱动程序详细讲解(⼀)
平台:JZ2440V3
CPU:三星S3C2440A芯⽚
LCD:4.3⼨液晶屏⼿册_AT043TN24
LCD介绍:
LCD,即液晶显⽰器,是⼀种采⽤了液晶控制透光技术来实现⾊彩的显⽰器。LCD有很多种类型,⽐如STN、TFT、LTPS、OLED等。各有优缺点。
由于JZ2440V3开发板上⾯配置的是TFT类型液晶显⽰器,所以本⽂主要针对TFT-LCD进⾏讲解;
TFT(Thin Film Transistor,薄膜晶体管)可以⼤⼤缩短屏幕的响应时间,其响应时间已经⼩于80ms,并改善了连续显⽰时屏幕模糊闪烁,有效提⾼了动态画⾯的播放⼒,呈现画⾯⾊彩饱和度、真实效果和对⽐度都⾮常不错,只是功耗稍⾼,是⽬前最为主流的液晶显⽰器。
LCD的接⼝:
CPU或显卡发出的图像数据是TTL信号,LCD本⾝接收的也是TTL信号。由于TTL信号在⾼速率的长距离传输时性能不佳,抗⼲扰能⼒也⽐较差,后来⼜提出了多种接⼝来解决这种问题,⽐如LVDS、TDMS、GVIF、DVI和DFP等。它们实际上只是将CPU或显卡发出的TTL信号编码成各种信号以便传输,在LCD那边将接收到的信号进⾏解码得到TTL信号。
由于数字接⼝标准尚未统⼀,所以使⽤LCD时需要根据其⼿册了解具体接⼝定义。也是基于数字接⼝标准尚未统⼀的原因,市场上⼤多LCD 都采⽤模拟信号接⼝,LCD需要先通过ADC将模拟信号转换为数字信号才能显⽰。
但是,不管采⽤何种数字接⼝,本质的TTL信号是⼀样的。
TFT-LCD的数据传输⽅式有2种,单扫:指的是对于⼀整屏的数据,从上到下,从左到右,⼀个⼀个地发送出来,双扫:是指将⼀整屏的数据分为上下两部分,同时的从上到下,从左到右,⼀个⼀个的发送出来。
其中,TFT-LCD其数据信号多达24根,对应像素值中的每⼀位。
TFT-LCD的TTL信号:
信号名称    描述
VSYNC垂直同步信号
家具涂装生产线HSYNC⽔平同步信号
VD[23:0]数据信号
HCLK时钟信号
LEND⾏结束信号
PWREN电源开关信号
S3C2440 LCD控制器的特性和结构:
S3C2440 LCD控制器被⽤来向LCD传输图像数据,并提供必要的控制信号,⽐如VFRAME、VLINE、VCLK、VM等。可以⽀持STN-LCD和TFT-LCD,其特性如下(BPP表⽰bit per pixel,即每个像素⽤多少位来表⽰其颜⾊)。
S3C2440 LCD控制器的内部结构如下图1所⽰:
图 1
其中,REGBANK是LCD控制器的寄存器组,包含17个寄存器和⼀块256*16的调⾊板内存,⽤来设置各项参数。⽽LCDCDMA则是LCD 控制器专⽤的DMA信道,可以⾃动的从系统总线上取到图像数据,这使得显⽰图像时不需要CPU的⼲涉。VIDPRCS将LCDCDMA中的数据组合成特定的格式(⽐如4位单扫,4位双扫和8位单扫等),然后从VD[23:0]发送给LCD屏。同时,TIMEGEN和LPC3600负责产⽣LCD 屏所需的控制时序,例如VSYNC、HSYNC、VCLK、VDEN,然后从VIDEO MUX送给LCD屏。
显⽰器上数据的组织格式:
对于屏幕上的⼀整幅图像,他的数据是如何组织的?⽆论是CRT显⽰器还是LCD显⽰器,他们都有相同的概念。
⼀幅图像被称为⼀帧(frame),每帧由多⾏组成,每⾏由多个像素组成,每个像素的颜⾊使⽤若⼲位的数据来表⽰。对于单⾊显⽰器,每个像素使⽤1位来表⽰,称为1BPP;对于256⾊显⽰器,每个像素使⽤8位来表⽰,被称为8BPP。
挂包钩显⽰器从屏幕的左上⽅开始,⼀⾏⼀⾏的取得每个像素的数据并显⽰出来,当显⽰到⼀⾏的最右边时,跳到下⼀⾏的最左边开始显⽰下⼀⾏;当显⽰完所有⾏后,跳到左上⽅开始下⼀帧。显⽰器沿着“Z”字型的路线进⾏扫描,使⽤HSYNC、VSYNC信号来控制扫描路线的跳转,HSYNC表⽰“是跳到最左边的时候了”,VSYNC表⽰“是跳到最上边的时候了”。
在⼯作中的显⽰器上,可以在四周看见⿊⾊的边框。上⽅的⿊框是因为当发出VSYNC信号时,需要经过若⼲⾏之后第⼀⾏数据才有效;下⽅的⿊框是因为显⽰完所有⾏的数据时,显⽰器还没有扫描到最下边(VSYNC信号还没有发出),这时数据是⽆效的;左边的⿊框是因为当发出HSYNC信号时,需要经过若⼲像素之后第⼀列数据才有效;右边的⿊框是因为显⽰完⼀⾏数据时,显⽰器还没扫描到最右边(HSYNC 信号还没有发出),这时数据已经⽆效。显⽰器只会依据VSYNC、HSYNC信号来取得、显⽰数据,并不理会该数据是否有效,何时发出有效的数据由显卡或LCD控制器决定。
VSYNC信号出现的频率表⽰⼀秒钟内能显⽰多少帧图像,称为垂直频率或场频率,这就是我们常说的“显⽰器频率”;HSYNC信号出现的频率称为⽔平频率,表⽰⼀秒钟能显⽰多少个像素的数据。
显⽰器上,⼀帧数据的存放位置与VSYNC、HSYNC信号的关系如下图2所⽰:
图 2
有效数据的⾏数、列数,即分辨率,它与VSYNC、HSYNC信号之间的距离等,都是可以设置的,这由LCD控制器来完成。
TFT-LCD的操作:
先了解TFT-LCD的时序,这使得我们在设置各个寄存器时有个形象的概念。每个VSYNC信号表⽰⼀帧数据的开始;每个HSYNC信号表⽰⼀⾏数据的开始,⽆论这些数据是否有效;每个VCLK信号表⽰正在传输⼀个像素的数据,⽆论它是否有效。数据是否有效只是对CPU的LCD控制器来说的,LCD根据VSYNC、HSYNC、VCLK不停的读取总线数据并显⽰。
下⾯讲解时序图,请参考下图3所⽰:
图 3
1、VSYNC信号有效时,表⽰⼀帧数据的开始;
2、VSPW表⽰表⽰VSYNC信号的脉冲宽度(VSPW+1)个HSYNC信号周期,即(VSPW+1)⾏,这个(VSPW+1)⾏的数据⽆效;
3、VSYNC信号脉冲之后,还要经过(VBPD+1)个HSYNC信号周期,有效的⾏数据才出现。所以,在VSYNC信号之后,总共还要经过(VSPW+1+VBPD+1)个⽆效的⾏,它对应图2中上⽅的⿊⾊边框,第⼀个有效的⾏才出现。
4、随后连续发出(LINEVAL+1)⾏的有效数据。
5、最后是(VFPD+1)个⽆效的⾏,它对应图2下⽅的⿊⾊边框,完整的⼀帧数据结束,紧接着就是下⼀个帧的数据了(即下⼀个VSYNC信号)。
现在深⼊到⼀⾏中像素数据的传输过程,它与上⾯⾏数据的传输过程相似。
1、HSYNC信号有效时,表⽰⼀⾏数据的开始。进化标记
2、HSPW表⽰HSYNC信号的脉冲宽度为(HSPW+1)个VCLK信号周期,即(HSPW+1)个像素,这(HSPW+1)个像素的数据是⽆效的。
3、HSYNC信号脉冲之后,还要经过(HBPD+1)个VCLK信号周期,有效的像素数据才出现。所以,在
HSYNC信号有效之后总共还要经过(HSPW+1+HBPD+1)个⽆效的像素,它对应图2左边⿊⾊边框,第⼀个有效的像素才出现。
4、随后即连续发出(HOZVAL+1)个像素的有效数据。
5、最后(HFPD+1)个⽆效的像素,它对应图2右边的⿊⾊边框,完整的⼀⾏结束,紧接着就是下⼀⾏的数据了(即下⼀个HSYNC信号)。
时序图中个信号的时间参数都可以在LCD控制寄存器中设置,VCLK作为时序图的基准信号,它的频率可以如下计算:
VCLK(Hz) = HCLK/[(CLKVAL+1)*2]
VSYNC信号的频率⼜称为帧频率、垂直频率、场频率、显⽰器的频率,它可以如下计算:
FrameRate=1/[{(VSPW+1)+(VBPD+1)+(LIINEVAL+1)+(VFPD+1)}x{(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)} x {2x (CLKVAL+1) / (HCLK )}]
tvline
将VSYNC、HSYNC、VCLK等信号的时间参数设置好之后,并将帧内存的地址告诉LCD控制器,它即可⾃动地发出DMA传输从帧内存中得到图像数据,最终在上述信号的控制下出现在数据总线VD[23:
0]上。⽤户只需要把要显⽰的图像数据写⼊帧内存中,在这之前,先了解⼀下各种格式的图像数据在内存中如何存储。
显⽰器上每个像素的颜⾊由3部分组成:红(Red)、绿(Green)、蓝(Blue)。它们被称为三基⾊,这三者的混合⼏乎可以表⽰⼈眼所能识别的所有颜⾊。⽐如可以根据颜⾊的浓烈程度将三基⾊都分为256个级别,则可以使⽤255级的红⾊、255级的绿⾊、255级的蓝⾊组合成⽩⾊,可以使⽤0级红⾊、0级的绿⾊、0级的蓝⾊组合成⿊⾊。
LCD控制器可以⽀持单⾊(1BPP)、4级灰度(2BPP)、16级灰度(4BPP)、256⾊(8BPP)的调⾊板显⽰模式,⽀持64K(16BPP)和
16M(24BPP)⾮调⾊板显⽰模式。下⾯只介绍64K(16BPP)⾊显⽰模式下,图像数据的存储格式。
64K(16BPP)⾊的显⽰模式就是使⽤16位的数据来表⽰⼀个像素的颜⾊。这16位数据的格式⼜分为两种:5:6:5、5:5:5:1,前者使⽤⾼5位来表⽰红⾊,中间的6位来表⽰绿⾊,低5位来表⽰蓝⾊;后者的⾼15从⾼到低分成3个5位来表⽰红、绿、蓝⾊,最低位来表⽰透明度。5:5:5:1的格式也被称为RGBBA格式(A:Alpha,表⽰透明度)。
智能调度系统⼀个4字节可以表⽰两个16BPP的像素,使⽤⾼2字节还是低2字节来表⽰第⼀个像素,这也是可以选择的。
显⽰模式为16BPP时,内存数据与像素位置的关系如下图,图4中的NC表⽰没有连接:
图 4
使⽤TFT-LCD时LCD控制器的寄存器设置:
LCD控制器中REGBANK的17个寄存器可以分为6种,如下表所⽰。
REGBANK寄存器组分类:
名称说明
LCDCON1~LCDCON5⽤于选择LCD类型,设置各类控制信号的时间特性等
LCDSADDR1~LCDSADDR5⽤于设置帧内存的地址
TPAL 临时调⾊板寄存器,可以快速的输出⼀帧单⾊的图像
LCDINTPND⽤于LCD的中断,在⼀般应⽤中⽆需中断LCDSRCPND⽤于LCD的中断,在⼀般应⽤中⽆需中断LCDINTMSK⽤于LCD的中断,在⼀般应⽤中⽆需中断REDLUT专⽤于STN-LCD
GREENLUT专⽤于STN-LCD
BLUELUT专⽤于STN-LCD
DITHMODE专⽤于STN-LCD
微拟球藻TCONSEL专⽤于SEC TFT-LCD
对于TFT-LCD,⼀般情况下只需要设置前两种寄存器;下⾯分别介绍:
1、LCD控制寄存器LCDCON1:
主要⽤于选择LCD类型、设置像素时钟、使能LCD信号的输出等,格式如下表所⽰。
LCDCON1寄存器格式
功能位说明
LINECNT[27:18]只读,每输出⼀个有效⾏其值减⼀,从LINEVAL减到0;
CLKVAL[17:8]⽤于设置VCLK(像素时钟);
MMODE[7]设置VM信号的反转效率,专⽤于STN-LCD;
PNRMODE[6:5]设置LCD类型,对于TFT-LCD设置0b11;
BPPMODE[4:1]设置BPP,对于TFT-LCD:0b1100 = 16BPP;
ENVID[0]LCD信号输出使能位,0:禁⽌,1:使能;
2、LCD控制寄存器LCDCON2:
⽤于设置垂直⽅向各信号的时间参数,格式如下表所⽰。
LCDCON2寄存器格式
功能位说明
VBPD[31:24]VSYNC信号脉冲之后,还要经过(VBPD+1)个HSYNC信号周期,有效的⾏数据才出现;
LINEVAL[23:14]LCD的垂直宽度,(LINEVAL+1)⾏;
VFPD[13:6]⼀帧中的有效数据完结后,到下⼀个VSYNC信号有效前的⽆效⾏数⽬:VFPD+1⾏;
VSPW[5:0]表⽰VSYNC信号的脉冲宽度位(VSPW+1)个HSYNC信号周期,即(VSPW+1)⾏,这个(VSPW+1)⾏的数据是⽆效的;
3、LCD控制寄存器LCDCON3:
⽤于设置⽔平⽅向各信号的时间参数,格式如下表所⽰。
LCDCON3寄存器格式
功能位说明
HBPD[25:19]HSYNC信号脉冲之后,还要经过(HBPD+1)个VCLK信号周期,有效的像素数据才出现;
HOZVAL[18:8]LCD的⽔平宽度,(HOZVAL+1)类(像素);
HFPD[7:0]⼀⾏中的有效数据完结后,到下⼀个HSYNC信号有效前的⽆效像素个数,HFPD+1个像素;
4、LCD控制寄存器LCDCON4:
对于TFT-LCD,这个寄存器只⽤来设置HSYNC信号的脉冲宽度,位[7:0]的数值称为HSPW,表⽰脉冲宽度位(HSPW+1)个VCLK周期。
5、LCD控制寄存器LCDCON5:
⽤于设置各个控制信号的极性,并可从中读到⼀些状态信息,格式如下表所⽰:

本文发布于:2024-09-23 04:35:14,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/257413.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:信号   数据   像素
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议