0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

雅特力 AT32 MCU 2024-01-19 08:14 次阅读

对于四线电阻式触摸屏的结构如下图1,在玻璃或丙烯酸基板上覆盖有两层透平,均匀导电的ITO层,分别做为X电极和Y电极,它们之间由均匀排列的透明格点分开绝缘。其中下层的ITO与玻璃基板附着,上层的ITO附着在PET薄膜上。X电极和Y电极的正负端由“导电条”(图中黑色条形部分)分别从两端引出,且X电极和Y电极导电条的位置相互垂直。引出端X-,X+,Y-,Y+一共四条线,这就是四线电阻式触摸屏名称的由来。当有物体接触触摸屏表面并施以一定的压力时,上层的ITO导电层发生形变与下层ITO发生接触,该结构可以等效为相应的电路,如下图2。图1. 触摸屏结构图b634938a-b65f-11ee-aa22-92fbcf53809c.png

图2. 触摸屏等效电路

b641aba6-b65f-11ee-aa22-92fbcf53809c.png

计算触点的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原理框图b65b6262-b65f-11ee-aa22-92fbcf53809c.png

LCD显示器

LCD显示器为一块240*320的RGB屏幕,使用驱动芯片为ILI9341。ILI9341能够支持并行和串行数据总线,此案例中我们使用串行总线接口(SPI)来进行数据传输。ILI9341驱动器能够通过窗口地址函数在内部GRAM中指定动态图像的区域,并且可选择地更新此窗口区域,这样就可以在独立于静态图像区域的同时显示动态图像。ILI9341支持全彩色,8色显示模式和休眠模式,能够通过软件进行精确的电源控制,使得ILI9341能够作为手机、MP3和PMP等便携设备理想的液晶驱动器。

触摸屏工作原理

下面将对XPT2046驱动芯片的工作原理进行介绍。

模拟输入

下图描述了XPT2046片内多路选择器、ADC的模拟差分输入和差分参考电压基准。图4. 模拟输入简图b66c7cd2-b65f-11ee-aa22-92fbcf53809c.png

内部参考电压

XPT2046的内部2.5V参考电压源可通过控制位PD1进行关闭或者打开。一般地,内部参考电压只用于单端模式下Vbatt、Temp和AUX输入测量。使用差分模式,触摸屏可以获得最佳性能。如果要与ADS7843兼容,XPT2046的内部参考电压源必须强行关闭。因此,上电后要对控制位PD1置0以确保关闭内部参考源。图5. 内部电压源示意图b6822b54-b65f-11ee-aa22-92fbcf53809c.png

外部参考电压输入

+REF和-REF(见图3)之间的电压差(下文用VREF表示)决定了模拟输入的电压范围。XPT2046的参考电压输入范围为1V~VCC。参考电压越低,则ADC输出的二进制数据结果每一个数字位所代表的模拟电压也越低。在12位工作方式下,数据结果的最低位所代表的模拟电压为VREF/4096,其余位依此类推。因此,参考电压越低,干扰引入的误差会越大,此时要求尽可能使用低噪声、低波动的参考电压源;在设计电路板时,尽可能减少干扰,输入的信号噪音也不能太高,否则会直接影响转换精度。

差分工作模式

如前所述,当触摸感应器XPT2046作为触摸屏应用时,可以配置为差分模式。差分模式的优点是:+REF和-REF的输入分别直接接到YP、YN上,可消除由于驱动开关的导通电阻引入的坐标测量误差。缺点是:无论是采样还是转换过程中,驱动开关都需要接通,相对单端模式而言,功耗会有增加。当SER/DFR置为低电平时,XPT2046为差分工作模式,如下图所示。图6. 差分参考源工作模式简图b6926cc6-b65f-11ee-aa22-92fbcf53809c.png

软件流程

接下来将简单介绍本案例的触摸屏驱动软件代码流程。首先上电之后需要对所用到的外设进行初始化,包括CRM、GPIO、SPI和DMA等外设。外设初始化完成后即可开始进行触摸校准,通过调用touch_adjust()函数完成。校准完成后会在屏幕显示一系列的校准参数,用于后续计算触摸坐标使用。随后,即可开始进行触摸测试,测试过程中会在屏幕画出已触摸的坐标点,以及坐标值。还设置了清屏按钮,点击即可清除屏幕已显示内容和坐标值。为了提高数据传输效率,此demo中清屏和画点数据通过DMA-SPI进行传输,软件流程图如下:图7. 软件流程图b6a0bb28-b65f-11ee-aa22-92fbcf53809c.png注:由于触摸校准对触摸功能来说是必须完成的,如果未完成校准则无法进行后续的工作。

触摸屏快速使用方法

硬件资源

1) AT32-Video-EV2) 2.4寸TFT_LCD3) AT-START-F403A V1.2实验板图8. 触摸屏硬件资源图b6ad0784-b65f-11ee-aa22-92fbcf53809c.pngNote:1.该demo是基于AT32F403A的硬件条件,若使用者需要在AT32其他型号上使用,请修改相应配置即可。2.供电部分:使用电源供电,或USB线供电(勿使用Link单独供电)。

软件资源

AN0154_LCD_Touch_Sourcecode,触摸屏案例测试代码,工程路径位于:Sourcecode\utilities\mdk_v5

关键代码

1) 触摸点坐标获取函数,用于获取触摸坐标值,关键代码如下:b6ce2e3c-b65f-11ee-aa22-92fbcf53809c.png2) 触摸校准函数,用于获取校准参数,关键代码如下:b6e735da-b65f-11ee-aa22-92fbcf53809c.png3) 触摸屏测试函数,用于测试触摸屏,关键代码如下:b704fb2e-b65f-11ee-aa22-92fbcf53809c.png4) LCD清屏函数,用于清除显示内容,关键代码如下:b7181ea2-b65f-11ee-aa22-92fbcf53809c.png5) LCD画点函数,用于显示触摸坐标点,关键代码如下:b723f966-b65f-11ee-aa22-92fbcf53809c.png

LCD Touch demo 使用

LCD Touch demo使用步骤如下:1) 编译下载触摸屏案例测试代码。2) 触摸屏进入校准界面,依次点击四个校准坐标点,如下图8。3) 校准完成后LCD会显示校准信息,包含四个校准参数VX、VY、CHX和CHY,如下图9。4) 点击屏幕任意处,将会跳转到触摸屏测试界面,此时触摸屏会将触摸点绘制在LCD上,还会实时显示触摸点的坐标,点击Clear按钮将清除界面,如下图10。图9. 触摸屏校准界面b732a54c-b65f-11ee-aa22-92fbcf53809c.png图10. 触摸屏校准信息b7460628-b65f-11ee-aa22-92fbcf53809c.png图11. 触摸屏测试界面b75ab12c-b65f-11ee-aa22-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16024

    浏览量

    343716
  • 触摸屏
    +关注

    关注

    42

    文章

    2131

    浏览量

    113682
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1615

    浏览量

    89678
  • 雅特力
    +关注

    关注

    0

    文章

    135

    浏览量

    7774
收藏 人收藏

    评论

    相关推荐

    AT32 MCU Printf的功能使用方法

    AT32 MCU Printf的功能使用方法
    的头像 发表于 10-27 09:27 459次阅读
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> Printf的功能使用<b class='flag-5'>方法</b>

    AT32微控制器上实现基于Zbar解码库的QR Decode应用程序

    本应用笔记的目的是提供在AT32微控制器上实现基于Zbar解码库的QR Decode应用程序一般方法
    发表于 10-26 08:07

    AT32微控制器上实现SPI驱动触摸屏应用程序一般方法

    AT32 LCD Touch Driven By SPI提供在AT32微控制器上实现SPI驱动
    发表于 10-26 07:07

    使用CAN的AT32 IAP

    AT32微控制器上创建IAP应用程序一般准则。AT32微控制器可以运行用户特定的固件来对微控制器中嵌入的闪存执行IAP。此功能可以使用产品可用和支持的任何通信接口。本应用笔记使用自
    发表于 10-26 06:39

    AT32 MCU SDIO入门指南

    AT32 MCU SDIO入门指南本应用入门指南主要介绍以下几部分内容:1.基于提供V2.x.x 的BSP板级支持包来进行SD 存储卡
    发表于 10-25 08:08

    AT32 MCU QSPI应用说明

    AT32 MCU QSPI Application Note主要介绍以下几部分内容:1. 基于提供的V2.x.x 的BSP 板级支持包
    发表于 10-25 06:18

    如何优化MCU SPI驱动程序实现高ADC吞吐速率

    如何优化MCU SPI驱动程序实现高ADC吞吐速率
    的头像 发表于 10-24 16:03 331次阅读
    如何优化<b class='flag-5'>MCU</b> <b class='flag-5'>SPI</b><b class='flag-5'>驱动程序</b>以<b class='flag-5'>实现</b>高ADC吞吐速率

    局域网上的AT32 EMAC唤醒

    AT32 EMAC wake on LAN本文以的AT32F407系列,演示了系列的范例
    发表于 10-24 08:30

    AT32微控制器上创建IAP by Kermit应用程序方法

    AT32 IAP by Kermit提供在AT32微控制器上创建IAP by Kermit应用程序方法
    发表于 10-24 07:56

    AT32 EMAC iperf相关资料

    AT32 EMAC iperf本文以的AT32F407系列,演示了系列的范例
    发表于 10-24 06:54

    AT32微控制器上创建Multi MCU IAP应用程序方法

    对于大多数基于闪存的系统,项重要要求是能够在最终产品中安装固件时进行更新。此功能称为应用程序内编程(IAP)。本应用笔记的目的是提供在AT32微控制器上创建Multi MCU IAP
    发表于 10-24 06:48

    AT32 EMAC远程登录

    AT32 EMAC telnet本文以的AT32F407系列,演示了系列的范例
    发表于 10-24 06:04

    AT32微控制器上创建OTA应用程序一般准则

    AT32 OTA using the USART提供在AT32微控制器上创建OTA应用程序一般准则。
    发表于 10-19 07:43

    AT32微控制器上实现QR Decode应用程序一般方法

    QR Decode to VirtualComPort提供在AT32微控制器上实现QR Decode应用程序一般方法
    发表于 10-19 07:03

    车载触摸屏点不动怎么办 触摸屏失灵修复小技巧

    触摸屏问题有时可能是由于应用程序或系统缓存导致的。在设备设置中找到应用程序管理器,选择相关的应用程序,清除其数据和缓存。这将帮助解决与触摸屏
    发表于 08-15 15:17 7613次阅读