1 引言
在我们的日常生活中,无论你是在商场购物,还是在银行存取款,触摸式的自动服务器将能为你提供了方便快捷的服务。这里通过对触摸屏原理的理解和分析,成功的设计出了CPU 与触摸屏芯片之间的硬件连接,并依照硬件和驱动设计的原理,设计出了基于嵌入式Linux 和飞思卡尔i.MX27芯片以及AD7873 触摸屏芯片的驱动程序,并成功移植到内核中,实现了家庭控制器系统的触摸技术。
2 硬件系统的构成
2.1 电阻式触摸屏原理。
电阻式触摸屏是一种传感器,它将矩形区域中触摸点(X,Y)的物理位置转换为代表X 坐标和Y 坐标的电压。当触摸屏表面受到的压力(如通过笔尖或手指进行按压)足够大时,顶层与底层之间会产生接触。所有的电阻式触摸屏都采用分压器原理来产生代表X 坐标和Y 坐标的电压。如图1 所示,分压器是通过将两个电阻进行串联来实现的。上面的电阻(R1)连接正参考电压(VREF),下面的电阻(R2)接地。两个电阻连接点处的电压测量值与下面那个电阻的阻值成正比。 为了在电阻式触摸屏上的特定方向测量一个坐标,需要对一个阻性层进行偏置:将它的一边接VREF,另一边接地。
同时,将未偏置的那一层连接到一个ADC 的高阻抗输入端。当触摸屏上的压力足够大,使两层之间发生接触时,电阻性表面被分隔为两个电阻。它们的阻值与触摸点到偏置边缘的距离成正比。触摸点与接地边缘之间的电阻相当于分压器中下面的那个电阻。因此,在未偏置层上测得的电压与触摸点到接地边之间的距离成正比。
图1 原理示意图
2.2 AD7873 介绍及与系统硬件原理
AD7873 是一款12 位逐次逼近型ADC,具有同步串行接口以及用于驱动触摸屏的低导通电阻开关,采用2.2 V 至5.25V 单电源供电,吞吐量大于125KBPS.
AD7873 可用于电池测量、温度测量和触摸压力测量,还具有一个2.5 V 片上基准电压源,可用于辅助输入、电池监控器和温度测量等模式。不使用时,可关断内部基准电压源以降低功耗。也可以使用外部基准电压,并可在1V 至VCC 范围内变化,模拟输入范围为0V 至VREF.这款器件具有关断模式,此模式下功耗不足1μA。
2.3 AD7873 与CPU 和触摸屏的硬件连接图
其硬件原理框图如下,其中的X+,Y+,X-,Y-与触摸屏的相应引脚相连,接受来自触摸屏的模拟信号,然后经过AD7873 芯片的内部处理成数字信号,通过SPI 总线将数据传送给CPU,请求处理。CS 为片选引脚,与CPU 的DTR_DCE1 相连,PENIRQ 为中断引脚,接CPU 的GPIO1_0.
图2 硬件连线图
图3 触摸系统框图
3 软件系统
3.1 Linux 设备驱动介绍
在Linux 系统中,为了简化对设备的管理,所有的外围设备被归结为3 类:字符设备、块设备、网络设备。Linux 对所有的物理设备进行了抽象,并定义了一个统一的概念:接口。AD7873 被定义为一个字符设备,采用spi 接口与CPU 通讯。