sunrain_hjb的BLOG
Develop Helpful and Effective apps to make Jobs easier and Better!

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

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

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

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

clip_image002

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可得,

clip_image004

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

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

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

posted on 2009-12-16 23:01  sunrain_hjb  阅读(11659)  评论(32编辑  收藏  举报

Map