嵌入式Linux中触摸屏驱动设计与优化.docVIP

嵌入式Linux中触摸屏驱动设计与优化.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式Linux中触摸屏驱动设计与优化

嵌入式Linux中触摸屏驱动设计与优化   摘要:文章介绍了电阻式触摸屏的工作原理,给出了基于input子系统的触摸屏驱动设计的主要步骤,设计了在TQ2440硬件平台上基于input子系统的嵌入式Linux触摸屏驱动程序,并根据实验测试结果中存在的误差做了改进和优化,使驱动程序能处理长按、滑动,并具有较高的精度。   关键词: 触摸屏;input子系统;嵌入式Linux;驱动程序   中图分类号:TP316 文献标识码:A   引 言   触摸屏由于其友好的人机交互性、操作简单、输入响应速度快,大大简化了嵌入式系统的输入而被广泛应用于工业控制、仪器仪表、消费类电子产品等领域[1]。常见的触摸屏有电阻式触摸屏、电容式触摸屏、红外触摸屏以及表面声波式触摸屏四种虽然它们的材料不同,但实现原理都基本一致[8]。Linux操作系统由于开发源代码、内核稳定、易于移植、资源丰富、支持多种硬件平台、免费等优点,而被广泛应用嵌入式领域[5]。ARM处理器因其卓越的性能、良好的扩展性、丰富的文档资料以及丰富的嵌入式软件支持受到越来越多的设计者和学习者所喜爱,从而也使得以ARM处理器和Linux操作系统构造嵌入式系统成为嵌入式系统中的一个重要分支[9]。为了让触摸屏在嵌入式Linux系统中有效工作,需要有触摸屏驱动的支持,随着触摸屏在嵌入式Linux系统中的广泛使用,在触摸屏驱动的设计与研究方面做了大量工作,呈现出越来越多的文献。本文简要介绍了触摸屏的工作原理,详细分析了触摸屏驱动程序的实现框架,设计并实现了在S3C2440A上的触摸屏驱动程序,该驱动通过多种优化算法的结合,实现了较为精确的输入控制。   1 电阻式触摸屏的工作原理及S3C2440触摸屏接口   电阻式触摸屏基本上是薄膜加上玻璃的结构,薄膜和玻璃相邻的一面上均涂有ITO(纳米铟锡金属氧化物)涂层,ITO具有很好的导电性和透明性。当触摸操作时,薄膜下层的ITO会接触到玻璃上层的ITO,经由感应器传出相应的电信号,经过转换电路送到处理器,通过运算转化为屏幕上的X、Y值,从而完成点选的动作,并呈现在屏幕上。常见的电阻式触摸屏有四线触摸屏、五线触摸屏、七线触摸屏、八线触摸屏等,其中四线式最为基本,现以它为例简单介绍其工作原理。四线触摸屏包含两个阻性层,其中一层在屏幕的左右边缘各有一条垂直总线,另一层在屏幕的底部和顶部各有一条水平总线。为了在X轴方向进行测量,将左侧总线偏置为0V,右侧总线偏置为VREF。将顶部或底部总线连接到ADC,当顶层和底层相接触时即可作一次测量。为了在Y轴方向进行测量,将顶部总线偏置为VREF,底部总线偏置为0V。将ADC输入端接左侧总线或右侧总线,当顶层与底层相接触时即可对电压进行测量。对于四线触摸屏,最理想的连接方法是将偏置为VREF的总线接ADC的正参考输入端,并将设置为0V的总线接ADC的负参考输入端。   S3C2440的CMOS模数转换器可以接收8个通道的模拟信号的输入,并将其转换为10位的二进制数据。在2.5MHz的A/D转换时钟下,最大的转换速率可以达到500KSPS。   从图2可知,使用触摸屏时,引脚XP、XM、YP、YM被用于和触摸屏直接相连,剩下的AIN[3:0]可用于一般的ADC输入。当不使用触摸屏时,XP、XM、YP、YM也可以用于一般的ADC输入[5]。有两个中断信号:INT_ADC:表示A/D转换器转换已经结束;INT_TC:表示触摸屏被按下。S3C2440触摸屏控制器有ADC普通转换、独立X/Y轴坐标转换、自动X/Y轴坐标转换、中断等待、闲置五种模式。本文在测量X/Y坐标时,让控制器工作在自动X/Y轴坐标转换模式。该模式下将会自动进行X轴和Y轴的转换操作,随后产生相应的中断。   2 Linux触摸屏驱动设计与优化   2.1 Linux触摸屏驱动设计   Linux设备驱动程序是Linux内核和底层硬件之间的桥梁,为上层应用软件屏蔽了底层硬件的细节[8]。在Linux系统中,键盘、触摸屏、按键、鼠标等设备的驱动程序常推荐利用input输入子系统的接口函数来完成。input输入子系统向应用程序和底层驱动分别提供了统一的接口,input设备用input_dev结构体描述,使用input子系统实现输入设备驱动时,驱动的核心工作是向系统报告键盘、触摸屏、按键、鼠标等输入事件,不再关心文件操作接口,因为input子系统已经完成了文件操作接口,这样提高了驱动程序的通用性。通过input子系统,具体的输入设备驱动只需要完成如下工作[6]:   (1)在模块加载函数中,告知input子系统它可以报告的事件,注册输入设备;   (2)在键被按下/松开、触摸屏被触摸/松开/移动、鼠标被移动/单击/松开时,通过input_report _xxx()报

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档