RTC时钟与触摸功能详解(下)
58.5 电阻式触摸控制器——XPT2046
为了方便测量触摸屏的坐标,芯片厂商设计了专门的触摸屏控制芯片,实现触摸点电压测量与转换功能。本文采用的XPT2046是一款4导线制触摸屏控制器,内含12位分辨率
125KHz 转换速率逐次逼近型A/D转换器。XPT2046通过执行两次A/D转换便可以计算出触摸点位置,该芯片兼容 ADS7843 触摸芯片,其电路原理图和引脚图如图8-6和表8-1、表8-2所示。
XPT2046的电源VCC的范围为2.7V~5.5V。A/D转换所需的参考电压可以选择通过VREF输入,范围是1V~VCC;也可以采用内部内部 2.5V参考电压,采用内部参考电压时VREF引脚应悬空。XPT2046除了作为触摸驱动芯片,还可以进行电池电压检测、温度测量,以及压力测量。作为触摸屏应用时,X+、X-、Y+、Y-分别连接电阻触摸屏的X+、X-、Y+、Y-引脚,测量时芯片会根据指令自动切换X、Y电极的电压,并采集触摸点的电压进行快速A/D转换。
XPT2046的ADC可以配置为单端或差分模式,具体如下:
单端模式是以外部参考电压VREF为参考,在采样过程完成后,进行A/D转换时可以关闭驱动开关,以降低功耗。但这种模式的缺点是精度直接受参考电压源的精度限制,同时由于内部驱动开关存在导通电阻,导通电阻与触摸屏电阻的分压作用,也会带来测量误差。因此该模式主要应用于电池监测、温度测量和压力测量。
差分工作模式是以X、Y电极两端的电压作为差分输入电压,可消除由于驱动开关的导通电阻引入的坐标测量误差。缺点是驱动开关一直接通,相对于单端输入模式而言,功耗变高了。作为触摸屏应用时,为了提高转换精度,应该配置为差分模式。
68.6 XPT2046通信接口及控制命令
XPT2046允许采用SPI,SSI,Microwire等串行接口通信,本文采用IO口模拟SPI方式通信。XPT2046一次完整的数据转换一般需要24个时钟周期,即通信时单片机必须提供24个时钟周期才能保证XPT2046完成一次数据转换,数据按照高位在前、低位在后的顺序传输,当CS为低电平时,数据在CLK的上升沿锁存,下降沿输出(即CPOL=0,CPHA=1的模式)通信时序如8-7所示。
图8-7 XPT2046 24时钟周期转换时序图
结合时序图,操作步骤如下:
1、发送控制字命令。前8个时钟周期单片机通过DIN(MOSI)引脚发送控制字命令,用于配置XPT2046的工作模式。控制命令由8个数据位组成,包括起始位、通道选择位、分辨率选择位、输入方式和低功率模式,控制命令如表8-3所示。
(1)起始位——第一位,即 S 位。控制字的起始位必须为 1,否则所有的输入将被忽略。
(2)通道选择位——A2、A1、A0用于选择对哪一个通道进行A/D转换。差分模式下:当A2=0,A1=0,A0=1时表示选择X+通道,即测量Y轴坐标;当A2=1,A1=0,A0=1时表示选择Y+通道,即测量X轴坐标。测量坐标时,要分别测量X+和Y+通道。
(3)MODE——模式选择位,用于设置 ADC 的分辨率。为0表示下一次的转换为 12 位模式;为1表示下一次的转换将是 8 位模式,默认设置选择12位模式。
(4)SER/DFR——输入模式选择位,单端输入方式/差分输入方式选择位。为1是单端输入方式,为0是差分输入方式,触摸测量时默认选择差分模式,即设置该位为0。
(5)PD1和PD0——模式选择位,其功能如表8-4所示。若为11,器件总处于全功耗模式;若为00,器件在A/D转换之间处于低功率模式。同时PD0位还控制是否产生PENIRQ中断,如果使能PENIRQ中断,当有触摸动作时,PENIRQ引脚会输出0,否则输出1,通过PENIRQ引脚可以判断是否有触摸动作,本教材默认设置PD1、PD0为00。
2、电压采样。当XPT2046接收到5个控制命令位时,即在接收到MODE位后,XPT2046内部就可以根据控制位信息设置输入多路选择器和参考源输入,并启动触摸面板驱动器,开始进入采样模式,该动作与SPI串行通信是同步的,并不影响剩余控制位的传输,如图8-7种的时序图所示;3个多时钟周期后,控制字接收完成,于此同时采样完毕,转换器进入转换状态,此时XPT2046会将BUSY引脚置高,表示数据正在转换。
3、转换结束后需要提供16个时钟信号,其中第1个时钟信号用于清除BUSY位,然后再发送12个时钟周期将输出转换后的12位有效数据。最后3个时钟信号用于输出剩余3个无效数据,默认为0。
4、注意当次读取的转换数据,是上一次的转换结果,而当次的时钟提供的转换数据,下一次读取,因此第一次读取的数据是无效数据。
78.7 触摸屏校准
计算触摸点位置时需要引入两个概念——物理坐标和逻辑坐标。物理坐标就是触摸点在液晶屏上的实际位置,通常以液晶上像素的个数来度量。本文采用的TFT-LCD的X和Y轴坐标范围分别为0239和0319。逻辑坐标指的是触摸点的电压值经ADC转换后得到的坐标值,由ADC精度决定,12位ADC模式下其范围为0~4095。实际使用时需要通过逻辑坐标计算相应的实际物理坐标。
触摸屏是由液晶显示屏(TFT-LCD)叠加一层触摸层构成一个矩形的实际物理平面。一方面由于存在误差,这两个平面并不是完全重合;另一方面由于 A/D转换器的前端电路具有高输入阻抗,因此特别容易受到电气噪声的干扰;触摸屏本身电阻材料的均匀性以及模拟电子开关的内阻和 A/D转换器自身的转换精度都会影响转换后的逻辑坐标值。基于以上两方面原因导致实际的物理坐标与软件通过逻辑坐标所计算的物理坐标有所偏差。校准的作用就是要将逻辑平面映射到物理平面上,即得到触点在液晶屏上的位置坐标。
由于电阻式触摸屏的电压成线性均匀分布,那么A/D转换后的坐标值也成线性。首先假定物理平面和逻辑平面之间的误差是线性误差,如果已知触摸屏上一点A,其物理坐标为(X a ,Y a ),相应的逻辑坐标为(X b ,Y b ),根据假定的线性关系,可以得到:
Xa = K ~x ~ * X ~b ~ + D x ;
Ya = K ~y ~ * X ~b ~ + D y ;
其中Kx、Ky分别为触摸屏X方向和Y方向的缩放比例系数,D x 、Dy为偏差常数,它们由校准点计算而来。根据触摸屏的Kx、Ky、D x 、D y ,就可以通过逻辑坐标计算出相对准确的物理坐标。
触摸屏的校准方法大致有两点校准、三点校准、四点校准、五点校准等。其中校准的点数越多,触摸屏的校准相对越精确。本文采用五点校正法。五点校正法优势在于可以更加精确的计算出X和Y方向的比例缩放系数,同时提供了中心基准点,对于一些线性电阻系数比较差的电阻式触摸屏有很好的校正作用。
首先在液晶屏的4个角取4个固定物理坐标作为测量点,并且在液晶屏中心位置取一个基准点,然后依次显示各个校准点,并读取该点的触摸坐标,最后计算Kx、Ky、D x 、D y ,校准点如图8-8所示。
8-8 五点校准示意图
校准流程如下所示:
1、依次显示并触摸5个校准点,并读取触摸坐标;
2、根据坐标计算S1、S2、S3、S4、S5、S6五条线段的长度,并比较S1和S2,S3和 S4,S5和S6的距离,当二者的距离小于一定范围时,默认校准有效,否则无效,重新 校准。当距离差越小时,校准越准确。
3、根据所得的校准点的逻辑坐标计算缩放比例系数K x 、K y ,和偏差D x 、Dy公式如下:
Kx = ((X2-X1)/ S1+(X4-X3)/ S2)/2
Ky = ((Y3-Y1)/ S3+(Y4-Y2)/ S4)/2
D ~x ~ = (S1- K x *(X1+X2))/2
D ~y ~ = (S1- Ky*(Y1+Y2))/2
4、通过K x 、K y 、D x 、Dy以及中心基点的逻辑坐标计算相应的物理坐标,如果计算后的坐标与实际坐标误差小于一定范围,比如5个像素时认为校准成功,否则校准失败,需要重新校准。
88.8 触摸画板实验
根据液晶屏的触摸功能设计了一款简易的触摸画板实验。触摸画板分为两部分,功能区和绘画区,功能区用来选择画笔颜色和清除画板,然后通过触摸笔在绘画区绘制图案。
首先将触摸事件分为按下、滑动、抬起三种事件,不同事件对应不同的动作。当滑动事件触发时,如果触摸点的坐标位于绘画区,则在对应位置通过画点函数画一个2*2的点。当抬起动作触发时,如果抬起时的坐标是否位于功能区,则触发相应的功能。
具体代码如下: