wince 液晶屏 LCD 驱动 学习

原创 2013年12月05日 17:08:32

所谓图形加速,一般都是指加速渲染,比如可以把2D渲染归类为一系列“原语”:画线,画长方形等等。如果是软件自己画,即不加速,则由软件一个像素一个像素的按照图形算法将线和长方形在“显存”(framebuffer, rendertarget,随便你怎么称呼)上“填”出来;即是由CPU在显存上画出来的。如果加速呢?那么CPU要做的事就很少了,它只需要通过某种方式告诉“加速硬件”,就是通常意义上的“GPU(图形芯片)”,或者嵌入式的DSP等,你希望画什么就行了,比如emit_prim_command(quad), emit_prim_command(line),具体在显存上将像素“填”出来的工作就是由GPU来完成的。自然CPU的负担少了很多。
还有一种就是upload to screen的操作,这个也可以看作一种原语(抽象),即“BitBlt”,这种操作一般来说就是启用DMA操作就行了。

 

eclipse开发工具开发QT应用程序
http://www.armbbs.net/forum.php?mod=viewthread&tid=10437

http://dl.dbank.com/c0k6fw5n8b

 
pDeviceInfo参数:
 pDeviceInfo->RGBOutMode = DISP_16BIT_RGB565_P;
    pDeviceInfo->uiWidth = 800;
    pDeviceInfo->uiHeight = 480;
    pDeviceInfo->VBPD_Value = 29;
    pDeviceInfo->VFPD_Value = 13;
    pDeviceInfo->VSPW_Value = 3;
    pDeviceInfo->HBPD_Value = 40;
    pDeviceInfo->HFPD_Value = 40;
    pDeviceInfo->HSPW_Value = 48;
    pDeviceInfo->VCLK_Polarity = IVCLK_FALL_EDGE;
    pDeviceInfo->HSYNC_Polarity = IHSYNC_LOW_ACTIVE;
    pDeviceInfo->VSYNC_Polarity = IVSYNC_LOW_ACTIVE;
    pDeviceInfo->VDEN_Polarity = IVDEN_HIGH_ACTIVE;
    pDeviceInfo->PNR_Mode = PNRMODE_RGB_P;
    pDeviceInfo->VCLK_Source = CLKSEL_F_LCDCLK;
    pDeviceInfo->VCLK_Direction = CLKDIR_DIVIDED;
    pDeviceInfo->Frame_Rate = 60;    
    break;  

pDeviceInfo->RGBOutMode = DISP_16BIT_RGB565_P;
pDeviceInfo->uiWidth = 800;
pDeviceInfo->uiHeight = 600;
pDeviceInfo->VBPD_Value = 25;
pDeviceInfo->VFPD_Value = 12;
pDeviceInfo->VSPW_Value = 4;
pDeviceInfo->HBPD_Value = 47;
pDeviceInfo->HFPD_Value = 15;
pDeviceInfo->HSPW_Value = 95;
pDeviceInfo->VCLK_Polarity = IVCLK_FALL_EDGE;
pDeviceInfo->HSYNC_Polarity = IHSYNC_LOW_ACTIVE;
pDeviceInfo->VSYNC_Polarity = IVSYNC_LOW_ACTIVE;
pDeviceInfo->VDEN_Polarity = IVDEN_HIGH_ACTIVE;
pDeviceInfo->PNR_Mode = PNRMODE_RGB_P;
pDeviceInfo->VCLK_Source = CLKSEL_F_HCLK;//CLKSEL_F_LCDCLK;
pDeviceInfo->VCLK_Direction = CLKDIR_DIVIDED;
pDeviceInfo->Frame_Rate = 60;    
break;     


    pDeviceInfo->RGBOutMode = DISP_16BIT_RGB565_P;
        pDeviceInfo->uiWidth = 480;
        pDeviceInfo->uiHeight = 800;
        pDeviceInfo->VBPD_Value = 3;
        pDeviceInfo->VFPD_Value = 3;
        pDeviceInfo->VSPW_Value = 3;
        pDeviceInfo->HBPD_Value = 6;
        pDeviceInfo->HFPD_Value = 6;
        pDeviceInfo->HSPW_Value = 15;
        pDeviceInfo->VCLK_Polarity   = IVCLK_FALL_EDGE;
        pDeviceInfo->HSYNC_Polarity = IHSYNC_LOW_ACTIVE;
        pDeviceInfo->VSYNC_Polarity = IVSYNC_LOW_ACTIVE;
        pDeviceInfo->VDEN_Polarity = IVDEN_HIGH_ACTIVE;
        pDeviceInfo->PNR_Mode = PNRMODE_RGB_P;
        pDeviceInfo->VCLK_Source = CLKSEL_F_LCDCLK;
        pDeviceInfo->VCLK_Direction = CLKDIR_DIVIDED;
        pDeviceInfo->Frame_Rate = 60; 

1,对于水平波纹,这个很可能是LCD背板输出电压不稳定造成的,可以用示波器查看下;
2,如果时序不对,同步信号的极性,那么在EBOOT阶段就会出现花屏等现象,WINCE5.0中,LCD时序是在Kernel\0al/init.c和EBOOT中的MAIN.C中两部分都有的;而在WINCE6.0中,结构不同了~但思想还是一致的;

SMDK2416 3.5"LCD驱动程序的移植

使用S3C2416 ARM 系统平台,使用WINCE6.0操作系统,LCD屏是奇美的LQ035NC111或科万宏的KWH035ST12-F01,其时序入下图。根据S3C2416芯片资料,自己编写的FrameRate计算器软件计算FrameRate,如下图:

得到FrameRate=61

一、修改的程序文件

      1. D:\WINCE600\PLATFORM\SMDK2416\Src\Drivers\Display\s3c2416_ldi_lib\s3c2416_ldi.c

      2. D:\WINCE600\PLATFORM\SMDK2416\Src\Inc\bsp_cfg.h

二、修改内容

1. D:\WINCE600\PLATFORM\SMDK2416\Src\Drivers\Display\s3c2416_ldi_lib\s3c2416_ldi.c

switch(g_ModuleType)
{
  // Tianma 3.5"  
case LDI_UT35A_RGB:
   //SureLion
  pDeviceInfo->RGBOutMode = DISP_24BIT_RGB888_P ;
  pDeviceInfo->uiWidth = 320;
  pDeviceInfo->uiHeight = 240;
  pDeviceInfo->VBPD_Value = 15;
  pDeviceInfo->VFPD_Value = 4;
  pDeviceInfo->VSPW_Value = 3;
  pDeviceInfo->HBPD_Value = 38;
  pDeviceInfo->HFPD_Value = 20;
  pDeviceInfo->HSPW_Value = 30;
  pDeviceInfo->VCLK_Polarity = IVCLK_RISE_EDGE;
  pDeviceInfo->HSYNC_Polarity = IHSYNC_LOW_ACTIVE;
  pDeviceInfo->VSYNC_Polarity = IVSYNC_LOW_ACTIVE;
  pDeviceInfo->VDEN_Polarity = IVDEN_LOW_ACTIVE;
  pDeviceInfo->PNR_Mode = PNRMODE_RGB_P;
  pDeviceInfo->VCLK_Source = CLKSEL_F_HCLK;
  pDeviceInfo->VCLK_Direction = CLKDIR_DIVIDED;
  pDeviceInfo->Frame_Rate = 61;
RETAILMSG(1,(TEXT("[LDI:INF] Output Devce Type [LDI_UT35A_RGB] =[%d] x [%d]\n\r"),pDeviceInfo->uiWidth,pDeviceInfo->uiHeight));
  break;

2. D:\WINCE600\PLATFORM\SMDK2416\Src\Inc\bsp_cfg.h

#define LCD_MODULE_TYPE    (LCD_MODULE_UT35A)      // Tianma 3.5"      320x240
//#define LCD_MODULE_TYPE    (LCD_MODULE_UT43A)       // Qunchuang 4.3"   480x272
//#define LCD_MODULE_TYPE    (LCD_MODULE_UT50A)      // Dianbang 5 "     800x480
//#define LCD_MODULE_TYPE    (LCD_MODULE_UT70A)      // Qunchuang 7"     800x480
//#define LCD_MODULE_TYPE    (LCD_MODULE_UT102A)     // Qunchuang 10.2"  800x480
//#define LCD_MODULE_TYPE    (LCD_MODULE_UT104A)     // AUO 10.4"        800x600
//#define LCD_MODULE_TYPE    (LCD_MODULE_UTVGA6448)      // VGA              640x480
//#define LCD_MODULE_TYPE (LCD_MODULE_UTVGA8060)  //VGA    800x600

三、编译下载

       VISUAL STUDIO 2005 菜单"Build"->"Advanced Build Commands"->"Clean Sysgen"或”Build and Sysgen"编译,最好用DNW软件按步骤下载OK。


相关文章推荐

stm32f4开发板驱动LCD液晶屏的个人总结

研究了几天的F4的FSMC方式驱动触摸屏,得到一些认识,现在列举如下,流水帐般没有组织的记录仅供自己以后参考 使用的是一款叫微雪电子的F407的开发板,但是他们的客服却不太愿解答用户提出的问...

lcd驱动移植的分析linux3.2内核,chipsee为例,液晶屏AT070TN92

Board-am335x.c的分析 1.添加了一行代码: LCD控制器初始化,支持这个LCD屏,可以修改bpp,这里是16色 这就限定了bpp的取值只能是16,上面的第二行的16表示, ...

LCD12864液晶屏驱动模块程序

  • 2012年10月23日 20:02
  • 2KB
  • 下载

Arduino 和LCD1602液晶屏 I2C接口实验

LCD1602液晶屏 带I2C接口 为什么使用I2C接口?因为省IO口啊,可以看看之前发的实验,接线多复杂呀,对吧。 (传送门:Arduino携手LCD1602 向世界问好“hello World...
  • ling3ye
  • ling3ye
  • 2016年05月31日 11:07
  • 16994

液晶屏驱动手册,7寸lcd,cpld,sdram

  • 2011年11月10日 16:47
  • 724KB
  • 下载

HW-LCD-070 7寸液晶屏 数据手册

描述:        本文档对7寸屏的各参数、性能、功耗、接口定义做出具体说明,帮助客户快速的了解、使用这款产品。 产品的上下脚分别有2个M3的孔,方便安装,实物图如下: 背板内...

lcd12864液晶屏学习实例

  • 2015年10月27日 19:11
  • 11KB
  • 下载

单片机外设LCD1602液晶屏的介绍

LCD(Liquid CrystalDisplay):液晶显示器的缩写,一种被动式的显示器,即液晶本身并不发光,而是经液晶经过处理后能改变光线通过方向的特性,而达到白底黑字或黑底白字显示的目的。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:wince 液晶屏 LCD 驱动 学习
举报原因:
原因补充:

(最多只允许输入30个字)