LCD驱动的移植及其GUI仿真如何进行,LCD数模转换现实原理及其源代码
,可能需要根据实际屏的信息去设置,我遇到的屏都设置成 10,即 8bit 单扫描模式。对于4bit单扫描、4bit 双扫描、8bit 单扫描的说明在 s3c2410 的手册中有详细的介绍,大家可以去参考一下。
BPPMODE --- 这个参数更不用多说了吧,就是设置屏的颜色位数喽。
这些参数的设置都很简单,我给出我这块屏的定义:
lcdcon1: LCD1_BPP_16T | LCD1_PNR_TFT | LCD1_CLKVAL(1),
同时,我也给出一块 CSTN 屏的寄存器参数信息
lcdcon1: LCD1_BPP_12S | LCD1_PNR_8S | LCD1_CLKVAL(9),
LCD控制器2
对于 TFT 屏必须要填,至于什么意思怎么翻译,相信大家都比我的水平强,自己翻译吧。我只说明从 LCD中如何将这个值"扣"出来。
很容易,看一下图二 LCD屏资料,对比一下得出如下信息:
LCD2_VBPD:
Vertical back porch 典型值为 7
LCD2_VFPD:
Vertical front porch 典型值为 4
LCD2_VSPW:
Vsync Valid width 典型值为 2
关于 LINEVAL 在程序的后面将会提到,此处不必理会。
经过分析,我们知道了如何设置 LCD2:
lcdcon2: LCD2_VBPD(7) | LCD2_VFPD(4) | LCD2_VSPW(2),
对于 STN(CSTN)屏,这个寄存器的设置最简单,将 VBPD、VFPD、VSPW 都设置成 Zero 就可以了。即
lcdcon2: LCD2_VBPD(0) | LCD2_VFPD(0) | LCD2_VSPW(0),
LCD控制器3
对于 TFT 屏,很容易将 HBPD 和 HFPD 找出来,如下
LCD3_HBPD:
Horizontal back porch 典型值为 37
LCD3_HFBD:
Horizontal back porch 典型值为 32
对于 HOZVAL 同样会在后面提到,此处暂时不管
经过分析,我们知道了如何设置 LCD3:
lcdcon3: LCD3_HBPD(37) | LCD3_HFPD(32) ,
对于(STN)CSTN屏,我没有很好的理解 WDLY 和 LINEBLANK 的真正涵义,通过改变这两个参数的值,我也没有得到特别明显的差异,我一般设置为:
lcdcon3: LCD3_WDLY_16 | 0x10 ,
LCD控制器4
对于 TFT 屏,需要设置 HSPW 的值,这个在 LCD 手册上也很容易得到
LCD4_HSPW:
Hsync Valid width 典型值为 5
至于 MVAL,我不知道是什么意思,有什么作用,我从来不动它,只取它最初的那个值 13
经过分析,我们知道了如何设置 LCD4:
lcdcon4: LCD4_HSPW(5) | LCD4_MVAL(13) ,
对于 STN(CSTN)屏,像 WDLY 一样,我通常不改变,因为改变了没有发现有什么作用,这是我驱动中的代码,好几块屏都一样的:
lcdcon4: LCD4_WLH(0) | LCD4_MVAL(13) ,
LCD控制器5
这个寄存器的看起来比较复杂,但是无外乎这几类:
只读信息:VSTATUS和 HSTATUS
只读的东东,设置它也没用,不必理会。
TFT 屏的颜色信息:BPP24BL、FRM565
TFT 屏的颜色信息,这个我们在 LCD的硬件连接时已经提到了,根据具体的接线方式,设置信息。
控制信号的极性
TFT/STN 屏控制信号的极性:INVVCLK、INVVLINE、INVVFRAME、INVVD、INVPWREN、PWREN
TFT 屏特有的控制信号的极性:INVVDEN、INVLEND、ENLEND
这些信息主要是使S3C2410的信号输出极性与LCD屏的输入极性的问题,需要根据具体的硬件进行设置,较为常见的是vline/hsync 、VFRAME/VSYNC脉冲的极性。
颜色信息的字节交换控制位:BSWP、HWSWP
这两位用来控制字节交换和半字交换,主要用来大小头的问题,如果输出到屏上的汉字左右互换了,或者输出到屏上的图花屏了,可以更改这个选项。具体涵义在 S3C2410芯片手册上有详细的说明。
我的这块 TFT 的信息设置如下:
lcdcon5: LCD5_FRM565 | LCD5_HWSWP | LCD5_PWREN ,
一块 CSTN屏的信息
lcdcon5: LCD5_BSWP | LCD5_PWREN ,
FrameBuffer 起始寄存器 1
这个寄存器的设置没有必要去修改(TFT/STN),都使用默认的代码即可:
FrameBuffer 起始寄存器 2 和 FrameBuffer 起始寄存器 3
这两个寄存器的设置比较重要,在此我给出 12 位色 CSTN 屏和 16 位色TFT 的设置代码:
前面提到的 LINEVAL 和 HOZVAL 以源码的形式给出,其中 CSTN 8 位色没有经过测试。
RGB Loopup Table Register
这三个寄存器的在驱动 256 色 CSTN 屏的时候需要使用,我在别的芯片上使用过,因为这颗芯片支持 12 位色,所以没有去调试,我给
出两组可能的值:
S3C44B0 上的
rREDLUT = 0xFCA86420;
rGREENLUT = 0xFCA86420;
rBLUELUT = 0xFFFFFA50;
Jupiter 上的
rREDLUT = 0xFEC85310
rGREENLUT = 0xFEC85310
rBLUELUT =
- 新型高清显示技术优劣对比(11-13)
- 品佳集团推出LCD TV一系列应用解决方案(08-11)
- OGS能否真正成为触控面板主流的关键问题(09-26)
- 为低压便携设备背光应用选择适合的LED驱动器方案(02-05)
- 意法半导体数字电视和机顶盒解决方案(02-07)
- 应用新LED驱动技术减低LCD电视用电量(05-05)