微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 电源设计 > 基于MeeGo的电容式触摸屏驱动设计方案

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

时间:11-21 来源:互联网 点击:

ms(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,然后才对数据读取。

  3.4 数据的处理

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

  结语

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top