基于ARM的触摸屏驱动设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于ARM的触摸屏驱动设计
陈雪花
【摘要】分析了电阻式触摸屏的工作原理和硬件结构,探讨了基于S3C2440A的触摸屏开发,把嵌入式ARM芯片S3C2440A应用于触摸屏的研制,设计了触摸屏的驱动程序.该驱动程序采用平均值法及中断处理方式来减小定位误差,在驱动开发中采用小任务机制,从而加快整个系统的速度,改进了实际开发中触摸屏常见的定位误差和响应速度慢等问题.
【期刊名称】《韶关学院学报》
【年(卷),期】2010(031)006
【总页数】4页(P21-24)
【关键词】触摸屏;S3C2440A;驱动程序;驱动设计
【作者】陈雪花
【作者单位】韶关学院,物理与机电工程学院,广东,韶关512005
【正文语种】中文
【中图分类】TP311
ARM芯片以高性能、小体积、低功耗、紧凑代码密度和多供应源的良好结合而著名,其RISC性能在业界内领先.具有集成尺寸小、芯片成本低和可在非常低的功耗和价格下提供高性能的处理器等特点.ARM已成为移动通信、手持计算机、多媒体数字消费等嵌入式解决方案的RISC标准.在众多输入方法中,触摸屏因其良好的人机界面,简易直观的操作,强大的系统功能,大大简化嵌入式系统的输入而被广泛应用.
本文报道了以S3C2440A处理器为核心的触摸屏程序的研究与开发.S3C2440A以ARM920T为内核,处理器内部集成了触摸屏控制器,它的触摸屏接口可以直接驱动四线电阻触摸屏.
触摸屏根据所用介质及工作原理可分为表面声波式、电容式、红外线式和电阻式四种.
(1)表面声波触摸屏:其边角有X、Y轴声波发射器和接收器,表面有X、Y轴横竖交叉的超声波传输.当屏幕被触摸时,声波从触摸点开始的部分被吸收,控制器根据到达X、Y轴的声波变化情况和声波传输速度计算出声波变化的起点,即触摸点. (2)电容感应触摸屏:人相当于地,给屏幕表面通上一个很低的电压,当用户触摸屏幕时,手指头吸走一个很小的电流.这个电流分别从触摸屏4个角或4条边上的电极中流出,并且理论上流经这4个电极的电流与手指到4个角的距离成比例.控制器通过对这4个电流比例的计算,得出触摸点的坐标.
(3)红外线触摸屏:在显示器屏幕的前面安装一个外框,外框里有电路板,在X、Y 方向排布红外发射管和红外接收管,一一对应形成横竖交叉的红外线矩阵.当有触摸时,手指或其他物体就会挡住经过该处的横竖红外线,由控制器判断触摸点在屏幕的位置.
(4)电阻式触摸屏:一个多层的复合膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层,上面再盖有一层塑料层.它的内表面也涂有一层透明的导电层,在两层导电层之问有许多细小的透明隔离点把它们绝缘隔开.工业中常用ITO (Indium Tin Oxide,氧化锡)导电层.当手指触摸屏幕时,平常绝缘的两层导电层在触摸点位置就有了一个接触,控制器检测到这个接通后,其中一面电层接通Y轴方向的5 V均匀电场,另一导电层将接触点的电压引至控制电路进行A/D转换,得到电压值后与5 V相比即可得触摸点的Y轴坐标;同理得出X轴的坐标.这是电阻式技术触摸屏的基本原理根据信号线又分为四线、五线式电阻触摸类型[1].笔者采用的是
四线电阻式触摸屏.
系统的硬件结构如图1所示.A7连接触摸屏的XP引脚,而A5连接触摸屏的YP引脚,要控制触摸屏的引脚(x+,x-,y+,y-),就要应用4个外部晶体管,并采用控制信号nYPON,YMON,nXPON和XMON来控制晶体管的打开与关闭.
设备驱动程序在Linux内核中扮演着特殊的角色,使某个特定硬件响应一个定义良好的内部编程接口,用户的操作通过一组标准化的调用执行,而这些调用独立于特定的驱动程序.将这些调用映射到作用于实际硬件的设备特有操作上,是设备驱动程序的任务[2].
采用外部晶体管接触摸屏,中断到来以后中断服务程序立即屏蔽掉中断,使中断不能再次进入.由于触摸屏在一段时间内被连续按下,所以还需要设置一个timer()函数,用于不断读取触摸屏坐标数据.当触摸笔抬起后退出触摸屏的中断服务程序,使中断使能,以便触摸笔再次按下时响应中断.
(1)中断处理:当触摸笔按下时,内核响应中断,进入中断处理程序.中断设为下降沿有效,当中断到来后,屏蔽中断,以保证在触摸屏被连续按下时,不会连续的触发中断,进入中断处理程序.在中断处理程序中设置一个timer()函数,这样连续监测从触摸屏取得的值.如果触摸笔按下,就读取坐标放到缓冲区中;如果触摸屏抬起,就在缓冲区中放入抬起信号.当触摸笔抬起时,打开中断,保证下一次触摸屏被按下时可以触发[3,4]为了加快中断的响应速度,不在一个中断处理程序中停留过久,将
digi_tasklet压入任务调度后立即退出,从而加快了整个系统的速度.在digi_tasklet 中已经将初始化digi_tasklet init()为其调度任务,通过调用digi_tasklet action()函数来读取触摸屏坐标,并且在digi_taskelet中设置wake_up_interruptible()用于唤醒体眠的进程.
(2)Read()函数:首先启动AD转换,写ADC控制寄存器的控制字以及ADCTSCADC(触摸屏控制寄存器)控制字,判断设置的返回触摸点坐标值是否在
有效范围内,如果在有效范围内采样标志ts.pressure=1,如果不在有效范围之内采样标志ts.pressure=0;read函数中通过调用copy_m_user(),实现将内核空间数据拷贝到用户空间.
如果驱动程序无法立即满足请求或调用read()函数时没有数据可读,采用阻塞I/O 方式,使该进程在read上体眠,另一个进程开始运行,只有当进程被唤醒后,该进程重新开始运行.等待队列wait queue_head_t,相当于一个进程链表,包含了等待某个特定事件的所有进程.
等待队列为空,没有数据可读,如果指定的是非阻塞I/O,返回-EAGAN;如果是阻塞
I/O的话,则要进行休眠Wait_event_interruptible(wq,tsdev.head=tsdev.tail). 分析了触摸屏的工作原理,探讨了基于S3C2440A的触摸屏及驱动程序的开发.将驱动程序加入到内核中,编译Linux内核生成内核映像并下载到S3C2440A处理器上,编写应用程序进行了测试.结果表明,该触摸屏驱动程序可以对触摸笔事件进行反映,并准确输出触摸笔落点的X和Y位置坐标.在实际开发中,触摸屏常见的定位误差,可以采用平均值法来减小误差.在触摸屏的响应速度上尤其是对于速度要求比较高的场合,选择在驱动的开发中采用小任务机制,将digi_taskle压入任务调度之后就立即退出,从而加快了整个系统的速度.
Key words:touch screen;S3C2440A;driver program;drive design
【相关文献】
[1]王骅,王晓忠.浅谈4线电阻触摸屏和stm32的接口实现[J].中国高新技术企业,2009(21):46-47.
[2]宋宝华.Linux设备驱动开发详解[M].北京:人民邮电出版社,2008:102-105.
[3]魏永明,耿岳,钟书毅.Linux设备驱动程序[M].第3版.北京:中国电力出版社,2007:56-60. [4]刘荣林,刘亚坤.基于ARM嵌入式触摸屏的设计与研究[J].内蒙古大学学报,2009(6):708-711.
Abstract:The design problem of touch screen based on S3C2440A is discussed,including its principle and structure of hardware.A system embedded ARM chip is applied to the touch screen development.The drive program of touch screen is developed.It uses the methods of reducing position error by mean value and interruption processing mode,that is,small task mechanism is used in driver development,and the program exists to quicken the whole system speed.。

相关文档
最新文档