嵌入式开发-基于PXA270的触摸屏控制的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于PXA270的触摸屏控制的实现
The realization of the screentouch controller based on PXA270
中国空空导弹研究院习贵平
Xi Gui Ping
摘要:在当前的嵌入式设备中,触摸屏作为人机接口得到了广泛的应用。
文章讨论了在基于PXA270微处理器的开发平台上使用UCB1400控制芯片完成触摸屏模块的软硬件设计,以及在嵌入式Linux操作系统中的软件驱动程序开发。
关键词:PXA270,UCB1400,Linux,触摸屏,驱动程序
中图分类号TP2 文献标识码B
Abstract:Touch screen has been widely used now as a interactive interface in the embedded system.. This thesis introduces the hardware and software implementation of the touch screen module using UCB1400 controller based on PXA270 microprocessor development platform and its device driver for Linux embedded operating system is designed.
Key words: UCB1400,PXA270,Linux,Touch screen,Device driver
1引言
随着后PC时代的到来,嵌入式系统在信息家电、移动计算设备、网络设备、工业控制和仪器仪表等众多领域中得到了广泛的应用,在这些产品中,触摸屏因方便灵活、节省空间、直观等特点,已经逐渐取代键盘成为嵌入式计算机系统主流的输入设备。
触摸屏输入系统由触摸屏、触摸屏控制器、微控制器及其相应的驱动程序构成[1]。
本文介绍触摸屏控制器UCB1400的工作原理及与PXA 270微处理器的硬件接口电路,讨论了在Linux操作系统中其驱动程序的开发。
2 触摸屏控制器UCB1400的工作原理
触摸屏在工作时,必须首先用手指或其他物体触摸安装在显示器前端的触摸屏,然后系统根据手指触摸的图标或菜中位置来定位选择信息输入。
触摸屏由触摸检测部件和触摸屏控制部件组成。
触摸检测部件安装在显示器屏幕前面,用于检测用户触摸位置,接受后送触摸屏控制部件;而触摸屏控制部件的主要作用是从触摸点检测装置上接收触摸信息,并将他转换成触点坐标,再送给CPU,他同时能接收CPU发来的命令并加以执行。
触摸屏分为电阻式触摸屏、红外线式触摸屏、电容式触摸屏、表面声波触摸屏[2]。
本文采用四线电阻式触摸屏,控制器采用Philips公司的UCB1400。
UCB1400是Philips公司生产的一款性能优异的立体声解码芯片,其中附带了一个电阻式4线触摸屏控制器,是一种典型的10位取样的逐步近似寄存器(SAR)A/D转换器。
提供
对笔触点位置、压力值以及整个触摸屏隔板电阻的测量[3]。
电阻式触摸屏有两层电阻层:一层为横向驱动;另一层为纵向驱动。
工作时,UCB1400在某个方向加一定的电压,当有笔接触到触摸屏时,两电阻层在触点位置有一个接通,导致另一个方向的层上电压产生变化。
通过A/D转换,控制器就可以计算出触点在这条轴上的坐标值。
3 UCB1400与PXA270处理器的硬件接口
PXA270微处理器[4]是Intel公司生产的新一代基于32位XScale微架构的集成系统芯片(ISOC) , PXA270具有高性能、低功耗等优点,它除了XScale微内核外,还集成了许多适用于手持设备市场需要的外围设备。
图2为UCB1400触摸屏控制器与PXA270微处理器的硬件连线示意图。
当屏触发生时,UCB1400向PXA 270发出中断请求,由PXA270响应该中断请求,启动通信过程,读取UCB1400的转换结果,从而得到触摸点的坐标。
图2 UCB1400与PXA270微处理器的连线示意图
4触摸屏Linux系统下的驱动实现
1)内核配置
PXA270终端平台Linux的 Kernel 环境设置利用 menuconfig,菜单式环境设置。
Multimedia Capabilities Port Driver --->
[*] Multimedia drivers
[*] UCB1400 TouchScreen support on the XSBase 270
2)UCB1400驱动分析
驱动程序文件:
drivers/char/ucb1400_ts.c UCB1400驱动程序源文件
drivers/ char/ucb1400_ts.h UCB1400驱动程序头文件
ucb1400_ts.h文件中的一些宏定义:
#define TS_NAME “UCB1400 TouchScreen Controller”
#define TS_MAJOR 11 //Linux设备驱动中的主设备号
#define BUFSIZE 128 //BUFFER的大小
#define XLIMIT 160 // X方向的极限值
#define YLIMIT 160 // Y方向的极限值
驱动实现笔触事件产生后的中断处理、数据采集过程。
在程序中的open接口函数中,注册触摸屏中断以及中断处理函数;当UCB1400有中断产生时,处理器接收到这个中断产生笔触事件,系统进入中断处理函数。
在中断处理函数中,首先关闭中断,以避免影响笔触数据的交换;然后将UCB1400的工作模式分别转换到读坐标模式和读压力值模式,分别读取笔触点处的坐标值和压力值,并将其添加到事件队列中。
程序中的笔事件队列是一个环形结构,当有事件加入时,队列头加一,当有事件被取走时,队列尾减一。
当笔按下时,每隔l0m s,事件处理函数会读取一次事件信,并将其加入到事件队列中。
程序通过判断UCB1400触摸屏控制寄存}中的MX和YX是否有一位为高,判断笔抬起。
在笔抬起后,笔事件处理函数向事件队列中插入最后一个数据信,坐标值是笔没有抬起时触摸点的坐标值,压力值为0,然后利用信号量irq_wait,阻塞内部服务线程,等待下一次触摸中断的产生。
触摸屏驱动的file_operations数据结构是ucb1400_ts_fops
static struct file_operations ucb1400_ts_fops =
{
read: ucb1400_ts_read, //设备读操作
poll: ucb1400_ts_poll,
ioctl: ucb1400_ts _ioctl,
fasync,
//完成异步通知
fasync: ucb1400_ts
_
open: ucb1400_ts _open, //设备打开操作
release: ucb1400_ts _release, //设备关闭操作
}
ucb1400_ts_ioctl():实现对触摸的控制,可以用来调整触摸屏的参数以及校准。
ucb1400_ts_poll():允许进程决定是否可以对一个或多个打开的文件作非阻塞的读或写。
3)去飞点处理
所谓的飞点,是指由于触摸屏的电气噪声和机械误差影响AD转换的输入电压使转换后的坐标值偏离了实际笔触点的位置。
在触摸屏中,由于AD转换器的前端电路具有高输入阻抗,因此特别容易受到电气噪声的影响。
在硬件电路中,需要对带有触摸屏控制器的电路小心布局,通常在AD转换器输入端增加低通滤波器来减小各种噪声。
此外还需要在程序中使用一定的方法去除飞点。
在我们的系统中,去除飞点的操作过程很简中一:对同一个笔触点进行3次数据读取,如果其中最大值和最小值之间的差异大于50时,则认为此点为飞点,应舍弃。
如果差异不大,则取中间值作为该点的坐标值。
在这里50是一个理论值,可以变化,但是如果该值取的较大,则还会有飞点存在,如果较小,舍弃的点会增多,为了读取该
点的坐标,系统需要再次读取,影响系统效率。
在实际应用中,当采用的上述方法后,几乎没有飞点情况出现,系统运行良好。
6结束语
本文设计了触摸屏控制器UCB1400与PXA270处理器的硬件电路,并对嵌入式Linux 操作系统中触摸屏的驱动开发设计进行详细的分析。
基于本系统的触摸屏驱动程序已用于实际的嵌入式产品中,目前运行稳定可靠,具有很好的发展前景和社会经济效益。
本文作者创新点:文章讨论了在基于PXA270微处理器的开发平台上使用UCB1400控制芯片完成触摸屏模块的软硬件设计,以及在嵌入式Linux操作系统中的软件驱动程序开发。
参考文献:
1.舒志文,熊良山.改善Linux内核实时性方法的研究与实现[J].微计算机信息,2007,
7-2:46-47,157。
1. 李外云,胡文静,刘锦高. 基于PXA255的触摸屏控制器ADS7843驱动程序设计. 电子
器件,2005.3
2. 李波,吴光敏.基于StrongARM SA1100的嵌入式系统中触摸屏驱动设计. 现代电子技
术,2006年第21期
3. Touch Screen Controller UCB1400 Datasheet[EB/OL].
4. “Intel PXA270 Processor Developer’s Manual” Datasheet[EB/OL].
作者简介:
习贵平(1978—),男,湖北荆州人,助理工程师,主要从事嵌入式控制及应用研究。
Biography::Xi Gui Ping (1978-),male,Research onembedded system ,China Airborne Missile Acadaamy,Luo yang,China。