基于Linux系统的触摸屏驱动方案.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE 1 PAGE 1 基于Linux系统的触摸屏驱动方案 引言 触摸屏作为一种输入设备,具有结实耐用、反应速度快、节约空间、易于沟通等优点,供应简洁、便利、自然的人机交互方式,目前被广泛应用于工业掌握、电子查询、消费性电产品领域。 Linux作为是目前的操作系统之一,在桌面系统、服务器领域有大量用户,具有源代码开放,支持的硬件丰富、高可移植等优点,在嵌入式领域也备受青睐。Linux依据不同设备,将驱动程序分为字符设备驱动、块设备驱动、网络设备驱动三种,Linux输入子系统u是对字符类型输入设备驱动实现方式的抽象,是对分散的、多种不同类别的输入设备进行统一处理的内核驱动模型。输入子系统具高效、无Bug和可重用等优点。本文对基于Linux输入子系统的触摸屏驱动进行深化的争论。 1 硬件平台 S3C2440是三星公司推出的采纳ARM920t内核的MCU,集成了丰富的外围设备,其中包括4线电阻式触摸屏掌握器和8通道多路复用ADC。 触摸屏由触摸检测部件和触摸屏掌握器构成,对应S3C2440平台的四线电阻触摸屏的外接电路和S3C2440芯片自带的A/D转换掌握部分。四线电阻触摸屏的外接电路掌握上下两层导电层的通断状况以及如何取电压,取电压之后由S3C2440芯片中的A/D将模拟量转换成数字量。S3C2440芯片的A/D转换器有8个输入通道,转换结果为10bit数字,转换过程在芯片内部自动实现,转换的结果从寄存器中取值,再进行肯定的转后可直接得到触摸点的坐标。S3C2440供应的ADC和触摸屏接口如图1所示,触摸屏直接与引脚XP,XM,YP和YM连接,对触摸屏两个导电层的通断通过XP,XM,YP和YM4个引脚掌握。通过读写指定的特别寄存器,S3C2440的触摸屏掌握器将自动掌握触摸屏接口打开或关闭,按指定操作模式完成触点数据的采集。 图1 S3C2440ADC和触摸屏接口结构 2 输入子系统体系结构简介 设备驱动程序在Linux内核中占很重要地位,设备驱动以内核模块方式实现,可动态加载和卸载。Linux设备驱动的实现只需依据内核供应的一组相关数据结构和驱动接口标准,完成关键数据结构初始化和回调函数的编写。对字符设备驱动内核供应cdev数据结构和file_operations结构体及操作方法,实现字符设备驱动只需完成cdev的初始化、file_operations中操作函数的实现并向内核注册。 Linux输入子系统是对物理形态各异的功能相像的输入设备的抽象,是内核中字符设备驱动接口的封装。输入子系统由设备驱动层、层和大事处理层构成。设备驱动层供应对硬件各寄存器的读写访问和将底层硬件对用户输入访问的响应转换为标准的输入大事,通过层提交给大事处理层;层对设备驱动层供应编程接口,对大事处理层的也供应编程接口;大事处理层为用户空间的应用程序供应了统一访问设备的接口和驱动层提交来的大事处理。基于输入子系统设计驱动时要实现设备驱动层的驱动和大事处理层的驱动,而输入子系统在大事处理层为触摸屏供应标准的大事接口,所以只要须完成设备驱动层的驱动,即硬件寄存器的操作和提交输入大事信息。基于输入子系统的设备驱动层驱动的实现过程如下: 1)驱动模块加载函数中设置输入设备支持输入子系统的大事;Linux内核用input_dev代表一个输入设备,对于触摸屏通过对input_dev实例的evbit[0]的设置来支持同步(EN_SYN)、按键(EN_KEY)和坐标(EV_ABS)大事。 2)通过内核供应的input_register_device0函数向输入子系统注册输入设备。 3)输入设备发生输入操作时提交所发生的大事及对应键值或坐标等状态信息。触摸屏使用输入子系统供应的通用输入大事驱动程序Evdev,将大事信息打包成Input_event类型进行。 3 Linux触摸屏驱动的实现 3.1 触摸屏触点数据采集 S3C2440触摸屏掌握器有四种工作模式,通过读写ADCTSC、ADCDA、ADCDATl和ADCDLY寄存器完成触摸屏掌握器工作模式的选择和触摸屏触点数据采集。由于触摸动作时间的随机性,驱动设计时选择中断工作方式。设置ADCTSC寄存器为0xD3使触摸屏掌握器进入等待中断模式,设置ADCDLY采样延迟时间。当触摸屏被按下,触摸屏掌握器将产生INT_TC中断:在ⅡTC中断处理程序中,设置ADCTSC寄存器为0x0C,触摸屏掌握器切换为自动X/Y坐标转换模式,将自动转换触点对应的x,y坐标值,并分别写入ADCDAT0寄存器和ADCDTA1寄存器,发出INTADC中断表示ADC转换完成;进入IN

文档评论(0)

x-668 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档