wince代码写入LCD驱动参考,数码产品怎样分别是不是LCD坏点.doc

上传人:白大夫 文档编号:3275123 上传时间:2019-08-07 格式:DOC 页数:6 大小:30.50KB
返回 下载 相关 举报
wince代码写入LCD驱动参考,数码产品怎样分别是不是LCD坏点.doc_第1页
第1页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《wince代码写入LCD驱动参考,数码产品怎样分别是不是LCD坏点.doc》由会员分享,可在线阅读,更多相关《wince代码写入LCD驱动参考,数码产品怎样分别是不是LCD坏点.doc(6页珍藏版)》请在三一文库上搜索。

1、wince代码写入LCD驱动参考,数码产品怎样分别是不是LCD坏点数码产品的坏点到底是不是LCD坏点?一、什么是CCD/LCD坏点?坏点和亮点分别是什么?我的一些顾客都在同时问两个问题:能保证CCD和LCD没有坏点同时也没有亮点吗?这里必须说明,所谓的坏点和亮点其实是一个概念。在术语上,应该叫坏点。坏点就是CCD元件上不能成像的点。具体表现就是:每张照片的固定位置出现全白或全黑的斑点,就是CCD元件上不发光或者始终发光的点。这是一个比较严重的问题,严重影响了成像效果,一旦发现坏点是要坚决换机的。同理,所谓LCD坏点,也是指LCD(显示屏)上不能成像的点。LCD上的坏点并不影响相机的实际成像效果

2、,一般来说,LCD上有3个以上坏点才算质量问题,厂家才会同意换机。比如柯达公司就规定LCD有5个坏点才换屏。LCD坏点只是影响观瞻,影响心情吧,其实3个以下的坏点,肉眼基本是没有感觉的。在我们实际销售的过程中,CCD坏点几率非常低,目前只遇到过一台。LCD坏点则遇到过7、8台,一般也都在发货前进行了调换。二、如何界定、判断坏点?关于这个问题,网上很多文章都在讲。我不想罗嗦了。只是想用通俗的语言给大家再讲一遍。1、获得检测坏点的全黑照片。拿到相机后,预热几分钟,把相机的ISO(感光度)调节到最小值(一般是100),关闭闪光灯,设定曝光时间为1/60秒、光圈最大值,然后用镜头盖盖住镜头(没有镜头盖

3、的,可在平坦的桌子上放张厚纸,将镜头扣在纸上拍摄,一定不能让光线进入到镜头里面,同时也不要太过用力),按下快门,拍摄一张全黑的照片。然后,把曝光时间设定为1秒,再拍摄一张全黑照片,这两张照片就是我们要检测坏点的证据。如果你购买的相机有自动降躁功能,那么也要注意关闭。如果是全自动相机,则一般在默认模式、关闭闪光灯、ISO最低值的情况下,拍摄一张全黑照片就可以了。有的专家把整个过程说的过分复杂了,在实际操作中,除非是专业级别的玩家对待专业级别的相机,普通家用相机和一般的摄影爱好者用这个通俗易懂的方式获得全黑照片就可以。2、对全黑照片进行检测。使用Dead Pixel Test软件来进行检测的。设定

4、超过60流明的点是噪点(hot),超过250流明的点为坏点(dead)。把全黑照片输入电脑,通过该软件进行测试,很快就会出来测试结果有多少躁点、有没有坏点,结果很快就出来了。这个软件网上很多地方可以下载,是免费的软件,这个软件很容易上手,具体不再讲了。3、用全黑照片测试LCD屏幕。用LCD屏幕来回放这一张全黑照片,就可以看出来LCD屏幕是否有坏点。一般来说,不超过3个都是合格的。当然,对于一个非常注重自己信誉的卖家来说,也许一个也不会放过。WinCE的LCD驱动程序该如何编写?本文以1024*768分辨率的TFT_16BPP真彩LCD为例,说明在WIN CE 4.2中驱动程序的修改事项,目标板

5、的微处理器是S3C2410A。该LCD的时序图如下图所示:Note:LCD时序的参数和时钟相位因不同LCD而异,请参考相应LCD的datasheet.在WIN CE 4.2中修改LCD驱动程序有五个相关文件,分别是:1. WINCE420PLATFORMSMDK2410INCs2410.h2. WINCE420PLATFORMSMDK2410KERNELHALcfw.c3. WINCE420PLATFORMSMDK2410DRIVERSDISPLAYS3C2410LCDs3c2410disp.cpp4. WINCE420PLATFORMSMDK2410FILESconfig.bib5. WIN

6、CE420PLATFORMSMDK2410FILESplatform.reg1. s2410.hWINCE420PLATFORMSMDK2410INCs2410.h主要有LCD控制器的寄存器定义、LCD控制器的工作时序定义、分辨率的定义等等。红色部分为修改后的内容:#define LCDTYPE TFT16BPP#define LCD_TYPE TFTxxx_xxx#define SCR_XSIZE_TFT (1280)#define SCR_YSIZE_TFT (960)#define LCD_XSIZE_TFT (1024)#define LCD_YSIZE_TFT (768)#defin

7、e VBPD (2-1)0xff)#define VFPD (2-1)0xff)#define VSPW (2-1) 0x3f)#define HBPD (16-1)0x7f)#define HFPD (200-1)0xff)#define HSPW (16-1)0xff)#define CLKVAL_TFT (1) /这个值的定义在LCD初始化函数中并不用到,而是直接用数值表示。2. cfw.cWINCE420PLATFORMSMDK2410KERNELHALcfw.c红色部分为修改后的内容:staTIc void InitDisplay()*s2410LCD-rLCDCON1=(18)|(

8、MVAL_USED7)|(35)|(121)|0;/ CLKVAL_TFT = 1 , HCLK = 100MHz - VCLK = 25MHz/TFT LCD panel/16 bpp for TFTs2410LCD-rLCDCON2=(VBPD24)|(LINEVAL_TFT14)|(VFPD6)|(VSPW);s2410LCD-rLCDCON3=(HBPD19)|(HOZVAL_TFT8)|(HFPD);s2410LCD-rLCDCON4=(MVAL8)|(HSPW);s2410LCD-rLCDCON5=(111)|(010)|(09)|(08)|(07)|(06)|(03)|(01)|

9、(10);/5:6:5 Format/The video data is fetched at VCLK falling edge/VLINE/HSYNC pulse polarity-Normal/VFRAME/VSYNC pulse polarity-Normal/VD (video data) pulse polarity-Normal/VDEN signal polarity-Normal/Disable PWREN signal/Byte swap Disable/Half-Word swap Enable*红色部分为修改后的内容:WORD TempBuffer1025768;S3C

10、2410DISP:S3C2410DISP (void)*m_nScreenWidth = 1024;m_nScreenHeight = 768;*到此修改工作基本完成,但还要一个问题:1024*768分辨率占用的显示缓冲区大小是:1024*768*2 = 1536 K Bytes,因此要确认所分配的内存空间够不够,是在config.bib文件中定义的。如果以前定义的足够大,后面的步骤可以省略了。4. config.bibWINCE420PLATFORMSMDK2410FILESconfig.bib#define NKNAME NK#define NKSTART 8C200000#define

11、NKLEN 01D00000#define RAMSTART 8E000000#define RAMLEN 01F00000$(NKNAME) $(NKSTART) $(NKLEN) RAMIMAGERAM $(RAMSTART) $(RAMLEN) RAMAUD_DMA 8c002000 00002000 RESERVEDDRV_GLB 8c010000 00010000 RESERVEDDBGSER_DMA 8c022000 00002000 RESERVEDSER_DMA 8c024000 00002000 RESERVEDIR_DMA 8c026000 00002000 RESERVE

12、DSD_DMA 8c028000 00008000 RESERVEDEDBG 8c030000 00020000 RESERVEDCPXIPCHAIN 8c050000 00008000 RESERVEDSLEEP_BUFF 8c058000 00004000 RESERVEDDISPLAY 8c100000 00100000 RESERVEDDISPLAYAUD_DMA 8c002000 00002000 RESERVEDDRV_GLB 8c010000 00010000 RESERVEDDBGSER_DMA 8c022000 00002000 RESERVEDSER_DMA 8c02400

13、0 00002000 RESERVEDIR_DMA 8c026000 00002000 RESERVEDSD_DMA 8c028000 00008000 RESERVEDEDBG 8c030000 00020000 RESERVEDCPXIPCHAIN 8c050000 00008000 RESERVEDSLEEP_BUFF 8c058000 00004000 RESERVED;DISPLAY 8c100000 00100000 RESERVEDDISPLAY 8c060000 001a0000 RESERVED5.在(4)中修改了DISPLAY显示缓冲区的开始地址,因此要在s2410.h中做

14、相应的修改:WINCE420PLATFORMSMDK2410INCs2410.h#define DMA_BUFFER_BASE 0xAC000000#define DMA_PHYSICAL_BASE 0x30000000/#define FRAMEBUF_BASE (DMA_BUFFER_BASE + 0x00100000)/#define FRAMEBUF_DMA_BASE (DMA_PHYSICAL_BASE + 0x00100000)#define FRAMEBUF_BASE (DMA_BUFFER_BASE + 0x00060000)#define FRAMEBUF_DMA_BASE

15、(DMA_PHYSICAL_BASE + 0x00060000)6. 在(4)中修改了DISPLAY显示缓冲区的大小, 因此要在s3c2410disp.cpp中做相应的修改:WINCE420PLATFORMSMDK2410DRIVERSDISPLAYS3C2410LCDs3c2410disp.cpp红色部分为修改后的内容:void S3C2410DISP:IniTIalizeHardware (void)*m_VirtualFrameBuffer = (DWORD)VirtualAlloc(0, (0x1A0000), MEM_RESERVE, PAGE_NOACCESS);if (m_Vir

16、tualFrameBuffer = NULL)RETAILMSG(0,(TEXT(m_VirtualFrameBuffer is not allocatednr);return;else if (!VirtualCopy(PVOID)m_VirtualFrameBuffer, (PVOID)gdwLCDVirtualFrameBase, (0x1A0000), PAGE_READWRITE | PAGE_NOCACHE)RETAILMSG(0, (TEXT(m_VirtualFrameBuffer is not mappednr);VirtualFree(PVOID)m_VirtualFrameBuffer, 0, MEM_RELEASE);return;*

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1