IXEL_CLOC, hpp: PIXEL_bPP,xres:H_RESOLUTION, yres: V_RESOLUTION,hsync_len: H_SW, vsync_len : V_SW, left_margin: H_bP, upper_margin:V_bP,right_margin:H_FP, lower_margin:V_FP,sync:0, cmap_static:1,reg:{lcdcon1: LCD1_bPP_16T | LCD1_PNR_TFT | LCD1_CLKVAL(12),lcdcon2: LCD2_VbPD(V_bP) | LCD2_VFPD(V_FP) | LCD2_VSPW(V_SW),lcdcon3: LCD3_HbPD(H_bP) | LCD3_HFPD(H_FP),lcdcon4: LCD4_HSPW(H_SW),lcdcon5: LCD5_FRM565 | LCD5_INVVLINE | LCD5_INVVFRAME | LCD5_HWSWP | LCD5_PWREN, },};??? 在实际的驱动程序编写过程中,不同的TFTLCD模组的参数会有所不同,因此需要根据实际数据的有效位置进行相关的参数调整。图5为RGb接口参数配置调整前后的系统显示对比效果图。如果软件初始化设置中,未能正确地分配HSPW、HbPD和HFPD,行有效数据的位置会发生相应的错位,表现在实际显示中为显示图像的整体左右偏移,如图5(a)所示,液晶显示器显示画面向左偏移。同理,未能正确地配置VSPW、VbPD和VFPD,帧数据中有效数据的位置会发生相应的错位,表现在实际显示中为显示图像的上下偏移。5.4 触摸屏驱动设计??? 设置触摸屏接口为等待中断模式(INT_TC中断),如果中断发生,立即激活相应的AD转换。转换模式一般选择分离的X/Y轴坐标转换模式或者自动(连续的)X/Y轴坐标转换模式来获取触摸点的X/Y坐标。在得到触摸点的X/Y轴坐标值后,返回到等待中断模式。触摸屏的驱动流程如图6。图6 触摸屏控制流程图??? 触摸屏设备在Linux系统中也被定义为一个字符设备,需要对触摸屏设备驱动程序中的全局变量struct TS_DEV进行设置,该变量用来保存触摸屏的相关参数:等待处理的消息队列、当前采样数据、上一次采样数据等信息,变量定义如下:typedef struct{unsigned int penStatus;/* PEN_UP,PEN_DOWN,PEN_SAMPLE */TS_RET buf[MAX_TS_bUF];/*环形缓冲区*/unsigned int head,tail;/* 环形缓冲区的头、尾 */wait_queue_head_t wq;spinlock_t lock;}TS_DEV ;??? 根据触摸屏对应TFT LCD的分辨率大小,对环形缓冲区的大小进行初始化配置。6 结论??? 分析了RGb接口的TFT LCD模组接口工作时序,以ARM920T内核的S3C2440A处理器为核心,加外围电路构建了相应的驱动电路,完成Linux显示驱动程序开发,实现了系统清晰稳定的显示。带触摸屏的TFT LCD模组驱动电路设计及显示效果调节方法为各种手持数码电子产品、导航仪等嵌入式系统设计提供了一套完整的解决方案。| 欢迎光临 DIY编程器网 (http://www.diybcq.com/) | Powered by Discuz! X3.2 |