Windows CE LCD驱动

由于初学LCD,看原理和源代码看了好长时间,现在总结一些
LCD驱动编写的主要工作就是正确设置对应预新的LCD屏的CPU寄存器的设置,和LCD对应的CPU寄存器主要如下:
LCDCON1-LCDCON5,
LCDSADDR1-LCDSADDR3
REDLUT等

各个功能要看,英文的不太好看,多看几遍就明白了。主要就是设置这些寄存器的值,这些寄存器中控制了LCD屏的大小,屏幕刷新的频率等
在bsp的驱动中定义了相应的宏
#define LCD_XSIZE_TFT_USER      (240)
#define LCD_YSIZE_TFT_USER      (320)

#define HOZVAL_TFT          (LCD_XSIZE_TFT_USER-1)
#define LINEVAL_TFT         (LCD_YSIZE_TFT_USER-1)

#define MVAL                (13)
#define MVAL_USED           (0)

//TFT timing parameter for V16C6448AB(PRIME VIEW)
#define VBPD                ((1-1)&0xff)
#define VFPD                ((2-1)&0xff)
#define VSPW                ((2-1) &0x3f)

#define HBPD                ((23-1)&0x7f)
#define HFPD                ((16-1)&0xff)
#define HSPW                ((16-1)&0xff)

#endif // __S3C2410_LCD_H__.
这些宏对应各个控制LCD的功能,他们含义看上面的图。他们的值通过LCD的数据手册得到,只是我查看了自己实验箱的实验手册,没有找到相应的数据。数据计算方法http://topic.csdn.net/u/20090817/01/bf0532a9-c2a2-4db1-b45b-4400f6b51295.html
另外就是驱动源代码了,比较好看懂

相关知识点
LCD显示器通常与Frame Buffer设备结合使用,系统定时将Frame Buffer中的内容写道LCD显示器中,在驱动 的编写过程中,需要根据实现LCD的大小来调整CPU寄存器中相关寄存器中保存LCD大小的参数,即x,y坐标的 最大值,同时根据CPU的时钟频率来修改LCD的刷新频率,保证lcd的刷新频率在50~60hz即可。
用户程序进行lcd写操作的时候,通常在应用程序初始化的时候映射Frame Buffer到内存中的一个地址空间, 这部分地址空间中的内容就对应着LCD显示器中的显示内容,lcd中每一点对应的bit宽度不同,将导致lcd显 示器的内容在内存空间的分布宽度。内存空间的内存分布一一对应于LCD上的坐标点。我们通过改变内存空间 的值例如从0~0xffff来使屏幕上的点由白到黑。
根据上面阐述的激励可以将各点连接起来,实现在屏幕上画线,甚至写汉字,画图等等一些功能。
一些图形操作平台如minigui也是根据该原理实现的。

VCLK是用来锁存视频资料的像数时钟。(相当于系统的时钟脉冲)vclk(hclk/(clkval+1)*2,clkval自定义 ),vclk一般应该大于6.5M,HCLK为S3C2440A 中PLL时钟发生器产生的时钟信号。
在帧同步以及行同步的头尾都必须留有回扫时间,例如对于VSYNC来说前回扫时间就是(VSPW+1)+(VBPD+1), 后回扫时间就是(VFPD+1) ;
HSPW、HBPD及HFPD确定显示区域的行有效数据信息,可以通过LCDCON各个位的含义来确定他们的含义
#define HBPD            (22)        //水平同步信号的后肩:它确定了HSYNC下降沿和开始采集数据 (VDEN)之间的时间宽度(由WebCast20090313am_PDF.pdf P39图看出来),单位:the number of VCLK  periods
#define HFPD            (18)        //水平同步信号的前肩:它确定了数据采集结束和HSYNC的上升沿之 间的宽度;单位:the number of VCLK
#define HSPW            (18)        /水平同步信号的脉宽:它确定了HSYNC高电平的宽度(由 WebCast20090313am_PDF.pdf图看出来)HSPW指的是HSYNC处于高电平时的VCLK的数目,单位:the number of  VCLK
VSPW、VBPD和VFPD确定显示区域中帧有效数据信息
#define VFPD            (1)          //垂直同步信号的前肩:它确定了一帧结尾,在垂直同步信号之前 不采集数据(VDEN不使能)的???
#define VSPW            (1)          //垂直同步信号的脉宽:VSPW指的是VSYNC处于高电平时的线的数 目
注意:从其他地方看到的,修改时序 (可选的范围很宽,很多时候可以不做修改)


文章出处:DIY部落(http://www.diybl.com/course/3_program/c++/cppjs/20090820/168832.html)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值