触摸屏作为嵌入式产品中常用的交互设备,具有交互直观,编程简易等特点,本系列文章将以多种角度分析如何选择合适的触摸屏方案及常见的故障解决方法。本文主题为电阻屏的驱动组成以及多数触摸屏的异常分析。
1.1 测试环境处理器:AM335x
内核版本:Linux-3.2
硬件条件:四线电阻屏、五线电阻屏
1.2 驱动组成部分触摸屏的处理流程离不开,响应中断上报事件,对于电容屏同样有效的。所以对于触摸屏,只需仅仅把握中响应中断上报事件的流程,即可定位是软件还是硬件故障。
以AM335x的电阻屏为例,涉及的驱动子系统列表如表1.1所示。触摸子系统是对触摸屏的抽象层,输入子系统提供符合上层应用使用的接口,中断子系统负责接收外设的中断信号,ADC子系统负责提供电场信号以及采集电压值。
表1.1 电阻屏相关驱动
电阻屏相关驱动
1.3 AM335x电阻屏驱动相关代码位置如表1.2所示。
表1.2 电阻屏代码路径
电阻屏代码路径
板级文件记录下ADC模组中哪些通道用作触摸功能,哪些通道用作模数转换功能,如代码清单1.1所示。
代码清单1.1 板级描述文件
路径:arch/arm/mach-omap2/board-am335xevm.c
代码清单1.1 板级描述文件
ADC模块驱动是对ADC通道的抽象整理,会涉及部分触摸的寄存器。例如《【应用技术】触摸屏技术之二:原理分析》中提到CTRL Register的AFE_Pen_Ctrl Bits用于选择中断触发信号输入脚,如代码清单1.2所示。
代码清单1.2 ADC模块驱动
路径:drivers/mfd/ti_tscadc.c