关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 基于MeeGo的电容式触摸屏驱动设计

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

作者: 时间:2012-05-23 来源:网络 收藏

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

电容式触摸屏相关文章:电容式触摸屏原理


评论


相关推荐

技术专区

关闭