微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > LCD驱动的移植及其GUI仿真如何进行,LCD数模转换现实原理及其源代码

LCD驱动的移植及其GUI仿真如何进行,LCD数模转换现实原理及其源代码

时间:04-25 来源:网络整理 点击:

,可能需要根据实际屏的信息去设置,我遇到的屏都设置成 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 =

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top