引言
本文基于Nokia和Intel公司合作开发的开源操作系统MeeGo,采用基于内核对象的Linux输入子系统来设计触摸屏的驱动。该方案极大地方便了触摸屏的驱动开发,可应用在车载娱乐、上网本、智能手机等电子产品上。
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处理器。
SPI总线是一种高速的、全双工、同步的通信总线,以主从方式工作,有4根线分别是SDI(数据输入)、SDO(数据输出)、CLK(时钟)、CS(片选)。SPI总线为了与外设进行数据交换,其输出串行同步时钟相位和极性可以根据外设工作要求进行配置。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。时钟极性(CPOL)对传输协议没有重大的影响,如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。
技术专区
- 睿赛德科技喜迁新址 ,RT-Thread进入新的加速发展阶段
- 可靠性高、控制灵活、低功耗可调速风扇散热系统
- 安防监控摄像头LED驱动解决方案
- 如何定制嵌入式Linux发行版
- 基于SoC实现的数据采集系统详解