雅特力AT32 MCU实现SPI驱动触摸屏应用程序的一般方法

对于四线电阻式触摸屏的结构如下图1,在玻璃或丙烯酸基板上覆盖有两层透平,均匀导电的ito层,分别做为x电极和y电极,它们之间由均匀排列的透明格点分开绝缘。其中下层的ito与玻璃基板附着,上层的ito附着在pet薄膜上。x电极和y电极的正负端由“导电条”(图中黑色条形部分)分别从两端引出,且x电极和y电极导电条的位置相互垂直。引出端x-,x+,y-,y+一共四条线,这就是四线电阻式触摸屏名称的由来。当有物体接触触摸屏表面并施以一定的压力时,上层的ito导电层发生形变与下层ito发生接触,该结构可以等效为相应的电路,如下图2。图1. 触摸屏结构图
图2. 触摸屏等效电路
计算触点的x,y坐标分为如下两步:1) 计算y坐标,在y+电极施加驱动电压vdrive,y-电极接地,x+做为引出端测量得到接触点的电压,由于ito层均匀导电,触点电压与vdrive电压之比等于触点y坐标与屏高度之比。2) 计算x坐标,在x+电极施加驱动电压vdrive,x-电极接地,y+做为引出端测量得到接触点的电压,由于ito层均匀导电,触点电压与vdrive电压之比等于触点x坐标与屏宽度之比。
测得的电压通常由adc转化为数字信号,再进行简单处理就可以做为坐标判断触点的实际位置。四线电阻式触摸屏除了可以得到触点的x/y坐标,还可以测得触点的压力,这是因为top layer施压后,上下层ito发生接触,在触点上实际是有电阻存在的。压力越大,接触越充分,电阻就越小,通过测量这个电阻的大小可以量化压力大小。
通常在触摸屏应用中对于触摸屏控制有专门的控制芯片,主要就是为了完成两个任务:其一,完成电极电压的切换;其二,采集接触点处的电压值(adc数据)。本案例中触摸屏使用的触摸感应驱动芯片为xpt2046,显示器驱动芯片为ili9341,下面将分别做介绍。
触摸感应器
触摸感应器使用的驱动芯片为xpt2046,其包含了采样/保持、模数转换、串口数据输出等功能。同时芯片集成有一个2.5v的内部参考电压源、温度检测电路,工作时使用外部时钟。xpt2046可以单电源供电,电源电压范围为2.7v~5.5v。参考电压值直接决定adc的输入范围,参考电压可以使用内部参考电压,也可以从外部直接输入1v~vcc范围内的参考电压(要求外部参考电压源输出阻抗低)。x、y、z、vbat、temp和aux模拟信号经过片内的控制寄存器选择后进入adc,adc可以配置为单端或差分模式。选择vbat、temp和aux时可以配置为单端模式;作为触摸屏应用时,可以配置为差分模式,这可有效消除由于驱动开关的寄生电阻及外部的干扰带来的测量误差,提高转换准确度。图3. xpt2046原理框图
lcd显示器
lcd显示器为一块240*320的rgb屏幕,使用驱动芯片为ili9341。ili9341能够支持并行和串行数据总线,此案例中我们使用串行总线接口(spi)来进行数据传输。ili9341驱动器能够通过窗口地址函数在内部gram中指定动态图像的区域,并且可选择地更新此窗口区域,这样就可以在独立于静态图像区域的同时显示动态图像。ili9341支持全彩色,8色显示模式和休眠模式,能够通过软件进行精确的电源控制,使得ili9341能够作为手机、mp3和pmp等便携设备理想的液晶驱动器。
触摸屏工作原理
下面将对xpt2046驱动芯片的工作原理进行介绍。
模拟输入
下图描述了xpt2046片内多路选择器、adc的模拟差分输入和差分参考电压基准。图4. 模拟输入简图
内部参考电压
xpt2046的内部2.5v参考电压源可通过控制位pd1进行关闭或者打开。一般地,内部参考电压只用于单端模式下vbatt、temp和aux输入测量。使用差分模式,触摸屏可以获得最佳性能。如果要与ads7843兼容,xpt2046的内部参考电压源必须强行关闭。因此,上电后要对控制位pd1置0以确保关闭内部参考源。图5. 内部电压源示意图
外部参考电压输入
+ref和-ref(见图3)之间的电压差(下文用vref表示)决定了模拟输入的电压范围。xpt2046的参考电压输入范围为1v~vcc。参考电压越低,则adc输出的二进制数据结果每一个数字位所代表的模拟电压也越低。在12位工作方式下,数据结果的最低位所代表的模拟电压为vref/4096,其余位依此类推。因此,参考电压越低,干扰引入的误差会越大,此时要求尽可能使用低噪声、低波动的参考电压源;在设计电路板时,尽可能减少干扰,输入的信号噪音也不能太高,否则会直接影响转换精度。
差分工作模式
如前所述,当触摸感应器xpt2046作为触摸屏应用时,可以配置为差分模式。差分模式的优点是:+ref和-ref的输入分别直接接到yp、yn上,可消除由于驱动开关的导通电阻引入的坐标测量误差。缺点是:无论是采样还是转换过程中,驱动开关都需要接通,相对单端模式而言,功耗会有增加。当ser/dfr置为低电平时,xpt2046为差分工作模式,如下图所示。图6. 差分参考源工作模式简图
软件流程
接下来将简单介绍本案例的触摸屏驱动软件代码流程。首先上电之后需要对所用到的外设进行初始化,包括crm、gpio、spi和dma等外设。外设初始化完成后即可开始进行触摸校准,通过调用touch_adjust()函数完成。校准完成后会在屏幕显示一系列的校准参数,用于后续计算触摸坐标使用。随后,即可开始进行触摸测试,测试过程中会在屏幕画出已触摸的坐标点,以及坐标值。还设置了清屏按钮,点击即可清除屏幕已显示内容和坐标值。为了提高数据传输效率,此demo中清屏和画点数据通过dma-spi进行传输,软件流程图如下:图7. 软件流程图注:由于触摸校准对触摸功能来说是必须完成的,如果未完成校准则无法进行后续的工作。
触摸屏快速使用方法
硬件资源
1) at32-video-ev2) 2.4寸tft_lcd3) at-start-f403a v1.2实验板图8. 触摸屏硬件资源图note:1.该demo是基于at32f403a的硬件条件,若使用者需要在at32其他型号上使用,请修改相应配置即可。2.供电部分:使用电源供电,或usb线供电(勿使用link单独供电)。
软件资源
an0154_lcd_touch_sourcecode,触摸屏案例测试代码,工程路径位于:sourcecode\utilities\mdk_v5
关键代码
1) 触摸点坐标获取函数,用于获取触摸坐标值,关键代码如下:2) 触摸校准函数,用于获取校准参数,关键代码如下:3) 触摸屏测试函数,用于测试触摸屏,关键代码如下:4) lcd清屏函数,用于清除显示内容,关键代码如下:5) lcd画点函数,用于显示触摸坐标点,关键代码如下:
lcd touch demo 使用
lcd touch demo使用步骤如下:1) 编译下载触摸屏案例测试代码。2) 触摸屏进入校准界面,依次点击四个校准坐标点,如下图8。3) 校准完成后lcd会显示校准信息,包含四个校准参数vx、vy、chx和chy,如下图9。4) 点击屏幕任意处,将会跳转到触摸屏测试界面,此时触摸屏会将触摸点绘制在lcd上,还会实时显示触摸点的坐标,点击clear按钮将清除界面,如下图10。图9. 触摸屏校准界面图10. 触摸屏校准信息图11. 触摸屏测试界面

耐用的降噪耳机有哪些?降噪蓝牙耳机测评
玩游戏用什么手机比较好,rog3备受好评实至名归
华为一场不发手机的发布会,一场沉默且浩瀚的远征
共享单车是双赢还是双“受伤”共享单车投放减少,企业重调策略
工业机器人设计学会这些你也能会
雅特力AT32 MCU实现SPI驱动触摸屏应用程序的一般方法
全面优化SSD,浪潮智能全闪存储G2-F满足企业关键业务需求
iPhone8双曲面+隐藏式摄像头设计,真机上手图
曼顿发布智慧电箱L10,让电老虎变成手机里的数字世界
紫光展锐携手诺基亚为全球数亿用户带来智能体验
智能手机国内市场格局已定,印度市场和欧洲市场成为国产手机的海外主战场
TD多载波技术取得重大进展
华为PK三星 首发打孔屏智能手机
大数据怎样在5G运维管理上得到更好的应用?
PoE设备的过电流和过电压保护方案
空气自动监测微站主要检测什么
河北省巨鹿县正式上线了基于区块链技术的疫情防控大数据管理平台
奥迪、杜卡迪、爱立信等5大企业联合推出 多项先进的网联汽车功能现场演示
联发科技曦力 P23 和 P30 已经来了
GDC China 2010于12月5日-7日隆重登场