基于MeeGo的电容式触摸屏驱动设计

发布者:花钱123最新更新时间:2012-05-29 来源: 21ic 关键字:电容式触摸屏  驱动程序  多点触摸 手机看文章 扫描二维码
随时随地手机看文章

引言

随着人们对操控要求的不断提高,市场上出现了越来越多的高端手机、平板电脑,这些产品共同的特点就是给人们提供了非常便利的操控方式,尤其是电容触摸屏的使用,它能很好地实现多点触控功能。多点触控技术是当今炙手可热的技术,它让人们的生活方式得到了前所未有的改变。电容触摸屏已经成为高端手机的标配,如苹果的iPhone以及HTC Motorola的一些高端手机,虽然目前电容屏的价格较贵,但随着工艺的提高,其价格必定会下降,再加上其给用户带来的丰富体验,电容触摸屏的使用必将越来越广泛。MeeGo是Intel和Nokia公司合作开发的开源操作系统,基于Linux内核,其良好的开源性为驱动程序的开发提供了很好的基础条件。本设计在MeeGo1.1版本下,并基于Linux 2.6.35内核来讨论实现电容式触摸屏的驱动开发技术。

1 电容触摸屏原理

电容式触摸屏是利用人体的电流感应工作的,分为表面电容式和投射电容式,前者不能识别多点,后者可以识别多点,因此设计采用投射电容式触摸屏。投射电容式触摸屏是传感器利用触摸屏电极发射出静电场线而工作的,分为交互电容和自我电容。设计采用的是交互电容式触摸屏。它是在玻璃表面用ITO(氧化铟锡)制作横向与纵向的电极,两组电极交叉之处将会形成电容,即这两组电极分别构成了电容的两极。

当电容屏被手指触摸时,手指就会吸收一个很小的电流,从而改变了触摸点附近电极之间的藕合,这就会改变这两个电极之间的电容量。检测投射式电容屏大小时,横向的电极依次发射信号,纵向的所有电极同时接收信号,这样就能得到两电极交汇点的电容值大小,也就是整个触摸屏平面的电容大小。可以据此算出每一个触摸点的坐标,图1为投射式电容屏的等效电路示意图。

2 Linux输入子系统

Linux输入子系统(以下简称输入子系统)是基于内核对象kobject实现的,应用于Linux 2.6.35内核中。凭借该机制内核通过输入子系统向用户空间输出设备的各类消息,方便了对设备的管理。输入子系统由系统核心层、驱动层和事件处理层三部分组成。一个输入事件如鼠标移动、键盘按键按下等操作通过驱动层、系统核心层、事件处理层到达用户空间,传给应用程序。

这样在设计驱动程序时只需要考虑驱动层的实现就可以了,减少了工作量,降低了设计难度。另外基于子系统的设计提高了驱动程序的可移植性和可适应性,因为基于子系统的驱动程序设计不用考虑向上层报告输入设备的接口没计,此工作由输入子系统来完成,而输入子系统对上层的接口具有通用性,可以使驱动程序的使用范围得到扩展。图2是Linux输入子系统的框架图。

3 触摸屏驱动程序设计

3.1 触摸屏驱动工作原理

本设计重在提出触摸屏驱动的整体设计方案,该设计流程也适用于其他触摸屏驱动设计开发。此设计可以采用SPI总线作为触摸屏和处理器的接口,硬件连接示意图如图3所示。TOUCH SCREEN是电容式触摸屏,可采用FT5201电容式全屏触摸芯片,INT是中断引脚,当触摸屏被触摸时,通过INT引脚触发中断处理程序,CPU可采用Intel公司的Atom D510处理器。

[page]

SPI总线是一种高速的、全双工、同步的通信总线,以主从方式工作,有4根线分别是SDI(数据输入)、SDO(数据输出)、CLK(时钟)、CS(片选)。SPI总线为了与外设进行数据交换,其输出串行同步时钟相位和极性可以根据外设工作要求进行配置。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。时钟极性(CPOL)对传输协议没有重大的影响,如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。

3.2 驱动程序软件设计

依托Linux输入子系统架构,驱动程序的设计需要完成以下工作。

(1)分配、注册、注销input设备

各个接口函数如下:

◆分配函数为struct input_dev*input_allocate_device(void);

◆注册函数为int input_register_device(struct input_dev*devr);

◆注销函数为void input_unregister_device(struct input_dev*dev)。

(2)设置input设备支持的事件类型

通过set_bit()告诉所支持的事件类型,触摸屏的事件类型代码为EV_ABS(0x03)。

(3)电容触摸屏参数设置

由input_set_abs_params()函数完成,代码如下:

input_set_abs_params(input,ABS_X,0,960,0,0);

//屏幕分辨率为960×640

Input_set_abs_params(input,ABS_Y,0.640,0,0);

//X坐标范围0~960

Input_set_abs_params(input,ABS_MAJOR,0,255,0,0);

//Y坐标范围0~640

(4)上报输入事件

触摸屏被触摸感应时,通过input_report_abs()函数上报发生的事件及坐标值。

3.3 驱动设计的主要函数

(1)void spi_init()函数

在该函数中通过spi_register_driver(strcut spi_driver*drv)来注册触摸屏SPI接口。

(2)Touch_probe()函数

在这个函数中,会对SPI总线的相关参数进行配置,并注册open()和close()函数。调用input_dev*input_allocate_device(void)进行输入设备分配;调用set_bit(EV_ABS,input_evbit)来设置触摸屏事件;调用input_set_params()设置坐标范围及接触点主轴长度范围;最后调用input_register_device(struct input_dev*dev)把触摸屏注册为输入子系统设备。

(3)触摸屏中断注册及中断处理函数

request_irq(TOUCH IRQ,Touch interrupt,0,“touch”,NULL)为中断函数注册,其中Touch_interrupt是中断处理函数。当触摸屏有感应时将拉低INT引脚,此时便触发中断处理函数Touch_interrupt。该中断函数调用intput_report_abs()将采集到的坐标数据上报给输入子系统,当为单点触摸时,上报该触点;当为多点触摸时,依次将每个点的坐标上报。这里为了消除抖动带来的误操作,在中断处理程序中启用了一个定时器init_timer(),进入中断后将延时5 ms,然后才对数据读取。

[page]

3.4 数据的处理

电容式触摸屏支持多点识别,所以必须要处理好多点数据的采集,为此将采集到的数据放到事先分配好的缓存read_data[]中。该缓存存有触点的个数以及各个触点的坐标值,为了保证每一点的准确性和完整性,需要用内核函数input_mt_sync()进行同步。具体的读取代码如下:

结语

多点触控技术的使用将成为这个时代的标志。本文基于MecGo平台,对电容屏的原理及驱动开发进行了详细的分析讨论,并基于Linux输入子系统的框架开发驱动,减少了驱动开发的工作量,提高了程序的可移植性。在此驱动基础上,并结合MeeGo提供的多点触摸界面框架(MeeGo Touch UI Framework,MTF),就可以实现多点触控的功能。

关键字:电容式触摸屏  驱动程序  多点触摸 引用地址:基于MeeGo的电容式触摸屏驱动设计

上一篇:用开关稳压控制器产生快速脉冲
下一篇:PID控制在柔性结构控制中的应用

推荐阅读最新更新时间:2024-05-02 22:05

Windows9X内核模式驱动程序的设计与策略
       摘 要: 在Windows  98或Windows  95下如何高效编写硬件设备驱劝程序是微机应用开发中迫切需要解决的问题。介绍了虚拟设备驱动程序(VxD)在Windows  9X下运行的机理和通信策略,以及如何设计内核模式驱动程序。     关键词: 保护模式 VMM  VxD  DPMI     1995年Microsoft公司推出了其新一代的桌面操作系统Windows  95,从技术层面来看它是为发挥32位处理优越性能而设计的一个32位操作系统。而它出色的稳定性,强大的寻址能力,无不归功于对32位处理保护模式的充分应用。具体来讲,它利用了80386的保护机制,从操作系统到一般应用
[应用]
128*64 LCD显示驱动程序
//头文件部分 #include reg52.h //====================================================== //定义常用符号,LCD控制字符号常量,TIME0定时赋值常量 #define uchar unsigned char #define uint unsigned int #define DISPON 0x3f #define DISPOFF 0x3e #define DISPFIRSTLINE 0xc0 #define LCDBUZY 0x80 #define LIMIT 0x80 //128列限制 #define
[单片机]
Cypress基于PSoC的全屏多点触摸解决方案
  日前,赛普拉斯半导体公司 (Cypress) 宣布推出采用 PSoC可编程片上系统架构的 TrueTouch触摸屏解决方案。该 TrueTouch 系列产品包括一款单芯片触摸屏解决方案,它能同时处理来自屏幕所有区域的多达 10 个输入。该功能称作“全屏多点触摸”,使设计人员能为移动手持终端、便携式媒体播放器 (PMP)、GPS 系统及其它产品创建新的使用模型。      键盘、在 GPS系统中输入多个位置、在移动手持终端上玩视频游戏,以及在便携式媒体播放器上进行多次调节以实现声音和/或视频设定等应用均可通过全屏多点触摸功能来实现。   除全屏多点触摸功能产品外,该 TrueTouch 产品系列还包括执行传统触摸屏功能
[工业控制]
Cypress基于PSoC的全屏<font color='red'>多点触摸</font>解决方案
mcu-stc12c5404ad单片机直流无刷电机驱动程序
//*****************************************************//* ***无刷电机控制器程序*** *//*===================================================* //* MCU-STC12C5404... //***************************************************** //* ***无刷电机控制器程序*** * //*===================================================* //* mcu-stc12c5404ad 8路ad转换,4
[单片机]
Small RTOS51的PS/2键盘驱动程序开发
引言   随着 嵌入式 系统的发展, 嵌入式 软件设计向软件平台靠近,单片机软件设计不再是单一线程结构方式,而是逐步采用多任务的设计思想。实时操作系统使得实时应用程序的设计、扩展和维护变得更容易,无需大的改动就可以增加新的功能。然而随着任务的增加,要求输入的数据也会增加,类型也呈多样化。如果仍然用矩阵式扫描键盘,势必浪费单片机巨大的资源,且增加了成本。若用PC机标准PS/2键盘取而代之,将可解决以上矛盾。本文介绍基于实时操作系统Small RTOS51的PS/2键盘驱动程序的设计,具有响应快,移植性强,占用资源少等优点。 1 驱动的设计   驱动的实现一般可用以下几种方法:① 使用任务编写;② 使用消息编写;③ 使用信
[嵌入式]
PIC单片机(PIC16F877A)DS18B20温度传感器驱动程序
#include pic.h #define uchar unsigned char #define uint unsigned int #define rs_h (PORTC|=0x01) #define rs_l (PORTC&=0xfe) #define rs_o (TRISC&=0xfe) #define rw_h (PORTC|=0x02) #define rw_l (PORTC&=0xfd) #define rw_o (TRISC&=0xfd) #define en_h (PORTC|=0x04) #define en_l (PORTC&=0xfb) #define en_o (TRISC&=
[单片机]
PIC单片机(PIC16F877A)DS18B20温度传感器<font color='red'>驱动程序</font>
友善之臂Mini2440之嵌入式Linux下Nor Flash驱动程序设计
前面已经详细讲述了MTD子系统原理知识,这一节讲述嵌入式Linux下对NorFlash的驱动程序设计。在MTD设备层上有MTD字符设备和MTD块设备。 1、MTD字符设备层的源码文件为/mtd/mtdchar.c。该源码文件为MTD原始设备提供了一个字符设备访问接口,使得上层应用程序可以以字符设备的方式来访问MTD原始设备。mtdchar.c主要定义了一个字符设备访问文件操作函数和向内核注册了一个字符设备,MTD字符设备的主设备号为90,源码如下: #define MTD_CHAR_MAJOR 90 #define MTD_BLOCK_MAJOR 31 static const struct file_operatio
[单片机]
一种新型编码芯片及其驱动程序的设计方案
    摘 要: 介绍了C-Cube公司的处理器型芯片DVxper-II的内部结构、功能及其特点,提出了将DVxpert-II集成于一块PCI插卡上的设计方案,并论述了编码器虚拟驱动程序的实现方法。     关键词: DVxpert-II芯片 PCI总线 VxD     目前,电视节目的拍摄、制作、传输到播出正在实现数字化。MPEG视频音频编码标准的出现,解决了电视信号数字化后信息量过大而信道带宽有限的问题,加上数字视频硬件方面的产品不断进步,促进了各种数字视频产品的推出,这一切都预示着电视广播全面步入数字化的时代。数字电视产品的开发不仅能给观众带来高品质画面和音响效果的享受,而且MPEG-II视频音频压缩的ATM
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved