zoukankan      html  css  js  c++  java
  • 四线电阻式触摸屏驱动的优化(转)

    转自http://www.cnblogs.com/we-hjb/archive/2009/12/16/1626020.html

          触摸屏在电子产品中用得越来越多,其技术也在不断发展。目前常见的有电阻式、电容式、红外式和表面声波式等几大类,其中电阻式最为普遍。最近在WinCE下调试了一款四线电阻式的触摸屏驱动,利用检测触摸压力的方法实现了动态调整触摸屏的灵敏度。

          一般的嵌入式处理器中会有几个通道的AD,通常有四个通道用于连接触摸屏的XP、XM、YP和YM。如果MCU 没有Touch Screen Interface,可以选择如TSC2003一类的触摸屏控制器芯片。MCU可通过IIC总线与其通讯,以得到相应的触摸屏AD采样值。目前正在调试的 TCC8900芯片内部集成了触摸屏控制器,原厂的BSP中也提供了相应的驱动,实际测试时发现,该驱动在4.3寸屏上工作得挺好,但在某些7寸屏上经常 会出现跳笔,尤其是在开始按下和最后抬起时,跳笔非常严重。在快速手写时也有跳笔的情况,并且导致笔迹非常不圆滑。在触摸驱动中使用多次采样、去头掐尾求 平均等简单滤波算法,问题仍然存在。经分析,问题的根源在于轻点触摸屏时采样值严重不准,所以即使采用滤波算法也无济于事了。解决问题要从根本出发,在上 报数据时须严进宽出,压力较小的采样直接PASS,这样可以很好的去除一些抖动和跳笔。

          参考TSC2003获取触摸压力的方法修改触摸驱动,单独获取XP、YP等值,通过计算得到按下触摸屏时的电阻值。该值与点击触摸屏的位置无关,只与点击 触摸屏压力大小有关,压力越大,该值越小。在实际使用时规定一个参考值,当该值小于该参考值时才认为是可靠按下,将采样得到的坐标值上报,否则直接扔掉。 由于触摸屏硬件的差别,不同触摸屏的灵敏度可能不一样,可以通过应用程序修改驱动中的参考值,从而实现动态调整触摸屏灵敏度。修改后实际测试发现,效果比 原来要好一点。

          按下四线电阻式触摸屏,采样时的等效电路图如下所示。

    XPOS=V*R2/(R1+R2) (式1)

    Z1POS=V*R2/(R3+Rt+R2) (式2)

    Z2POS=V*(Rt+R2)/(R3+Rt+R2) (式3)

    由式2和3可得,Rt=(Z2/Z1-1)*R2 (式4)

    由式1可得R2=XPOS*(R1+R2)/V,即R2=XPOS*(RXplate)/V (式5)

    将式5和式4可得,

          对于同一触摸屏来说,Rx-plate是固定的,因为使用的是12bit的AD,故除以4096。对于触摸屏压力检测来说,式6即能说明当前压力大小关系。

    Ft=XPOS*Z2POS/Z1POS-XPOS (式6)

          Ft的绝对值越小,说明按下越可靠,采样值有效。反之,可以认为是轻按,采样值无效。


     

    PS:Rtouch就是压点上两层电阻膜之间的阻抗值。见下图,Ft就是Rt的一个反映。


  • 相关阅读:
    收藏的一个Sqlserver性能查询,包括查询CPU 网络等
    转载自博客园的一篇文章 通过SQL Server Profiler来监视分析死锁
    关于Sqlserver的换行和空格
    Sql Server查询性能优化之不可小觑的书签查找
    临时表和表变量,转载自博客园
    Sqlserver活动视图
    代码列表 4.5:显示累计最消耗 CPU 时间的前50个运行计划
    关于Sqlserver2012分页的新功能尝试
    sqlserver 东八时区的英文时间转换
    Flash应用效率优化启示录Ⅰ
  • 原文地址:https://www.cnblogs.com/tinz/p/2078119.html
Copyright © 2011-2022 走看看