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

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

3天内不再提示

基于STM32的电阻触摸屏原理解析

454398 来源:csdn 作者:坏坏成不坏 2020-10-23 14:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文共有三个内容:一、电阻触摸屏的原理;二、XPT2046的控制字与数字接口;三、程序源码讲解(参考正点原子的代码)

一、电阻触摸屏的原理,上图:

图上的文字介绍了触摸的原理,下面总结一下触摸的原理:

触摸屏工作主要是两个电阻屏(上下两层)在工作,如上图,当某一层电级加上电压时,会在该网络上形成电压梯度。如果有外力使得上下两层在某一点接触,则在未加电压的那一层可以测得接触点的电压,从而得出接触点的坐标(X或Y)。举个例子:当我们在上层的电极间(Y+和Y-)加上电压,则会在上层形成电压梯度(这里读者可以想想AD转换的原理),当有外力使得上下两层在某一点接触时,在底层X层就可以测得接触点处的电压(每个点电压都不同),再根据测得电压和电极电压的关系与距离成正比关系(看上图的关系式)就可以得到该点的Y坐标。然后,将电压切换到下层电极(X+和X-)上,并在顶层Y层上测量接触点的电压,从而得到X坐标。

原理说完了,不知道读者注没注意到上一段中提到 ‘要测得接触点的电压’,怎么测得电压还转换为数字呢?那就需要一个AD转换器,AD转换器在哪儿?下面就来介绍一下本文中的触摸屏控制芯片-XPT2046:4导线控制器;内含12位分辨率,125KHz转换速率逐步逼近型A/D转换器;支持从1.5V~5.25V的低电压IO接口。通过两次AD转换查出被按的屏幕位置。除此之外,该芯片还有内部自带2.5V参考电压作为辅助输入,温度测量和电池监测模式,电池监测的范围可以从0V~6V,功耗小等等。XPT2046引脚图如下:

二、XPT2046的控制字与数字接口:

再来看XPT2046的数字接口(传输格式):

下面详细解释下XPT2046的转换时序:

1、为完成一次电压切换和AD转换,前8个时钟通过DIN引脚往XPT2046发8位控制字节(控制字);

2、转换器收到有关下次转换的足够信息之后,接着根据获得的信息设置输入多路选择器和参考源输入,并进入采样模式;

3、3个多时钟周期后,控制字节设置完成,转换器进入转换状态;

4、接着12个时钟周期你将完成真正的AD转换;

5、如果是度量比例转换方式(控制字节的第2位)=0,驱动器将一直工作,第13个时钟将输出转换结果的最后一位,剩下3个时钟完成转换器忽略的最后字节。

一次完整的转换需要24个串行同步时钟(DCLK)来完成。

三、程序源码讲解(参考正点原子的代码)

首先我们要知道触摸屏控制器XPT2046的哪些引脚与STM32的IO相连。在上文的XPT2046引脚图中,11,12,13,14,15,16引脚,13引脚(转换状态信号)不用;第二,我们这里不用笔中断(引脚11),而是将笔中断引脚接到了STM32的F10上。

注意:拿万用表测F10引脚,不触摸时输出3.3几V,触摸屏幕时,此引脚会输出低电平(0V)。其实我之前用的是示波器测的,不触摸时输出3.3几V,当触摸时,F10的输出电压会在几百mV到2V之间,不知道咋回事,折腾半天。可能是我不会使示波器。感兴趣的读者可以去测一测

1、通过模拟SPI时序往XPT2046中写一个字节void TP_Write_Byte(u8 num)

和通过模拟SPI时序从XPT2046中读取adc值(AD转换结果)u16 TP_Read_AD(u8 CMD),

这里说一下,形参CMD是命令控制字,详情第二讲。。这里我们可以CMD_RDX=0xD0和CMD_RDY=0x90传入CMD中,就是读取X方向的AD值时,把控制字的A2~A0配置为101,读取Y方向的AD值时,把控制字的A2~A0配置为001,都是选择12位模式,差分输入,低功率模式。

注意:这里提一下为什么要用差分输入模式:手册说,配置为差分输入模式可有效消除由于驱动开关的寄生电阻及外部的干扰带来的测量误差,提高转换精度。

一般来说我们要调用多次u16 TP_Read_AD(u8 CMD)这个函数,因为一次转换往往与真实值存在较大误差,故我们设定一个次数:READ_TIMES,多次转换。然后斩头去尾留中间,再取平均值,这样得到的AD转换结果就相当精确了。看函数u16 TP_Read_XOY(u8 xy)。

2、还有u8 TP_Read_XY(u16 *x,u16 *y)就是同时读取X、Y的AD转换值,是上一个函数u16 TP_Read_XOY(u8 xy)的升级版~

而u8 TP_Read_XY2(u16 *x,u16 *y)是连续两次读取X和Y的AD转换值,并将有效的AD值存入*x和*y指向的内存中,这样得到的AD值就很准确了,再通过相应的比例计算就可以转换为实际坐标了。。

上面一直在讲AD值的精确获取。。。下面就要把获得的精确AD值转换为实际坐标。譬如我们点了一下触摸屏,返回的AD值为(1600,1200),即触点X方向的AD值为1600,Y方向的AD值为1200,下面就是介绍如何把像1600和1200这种AD值转换为实际坐标。

在转换为实际坐标之前要讲一下一个非常重要的知识点------触摸屏校正,为什么要校正,博主在这里就不给大家列举了,请读者自己查阅相关资料~

校正原理(借鉴了一些网络上的优秀文章):

因为我们再实际中无法确定TFT屏的原点,那么我们只能在TFT屏上先确定4个点,如图:

这4个点的坐标是我们知道的,然后用笔去触摸这4个点,记录下这4个点的AD值,分别为:(AD_X1,AD_Y1),(AD_X2,AD_Y2),(AD_X3,AD_Y3),(AD_X4,AD_Y4),根据这四个点,我们计算出四个校准参数(下文会详细介绍):xfac,yfac,xoff,yoff,我们把得到的所有物理坐标都按这个关系式来计算:

LCDx=xfac*Px+xoff

LCDy=yfac*PY+yoff

其中(LCDx,LCDy)是在LCD上的实际坐标(像素坐标),(Px,Py)是从触摸屏读到的物理坐标。剩下4个参数,下文会介绍

校正代码:

图上画红圈的,请读者注意tp_dev.sta状态位的变化,下面就进入第二个红圈:tp_dev.scan(1)触摸扫描函数中看看,这里scan是函数指针:

这里应该从校准函数中说,应该能好理解。→_→在校准函数中,不断扫描TP_Scan()函数,如果这时候你触摸了一下屏幕,PEN所对应STM32的引脚将会从高电平跳变为低电平,详情看上文第二讲的注意→_→。即Ttp_dev.sta=1100,0000(根据上图第一个方框得出)。不满足校准函数中的if((tp_dev.sta&0xc0)==TP_CATH_PRES),故不会进行下面的画点。如果之前并没有按下触摸屏,这时同样是不满足上面if的。如果之前按下后松下了,这时Ttp_dev.sta=0111,1111,这时满足校准函数中的if((tp_dev.sta&0xc0)==TP_CATH_PRES),然后在校准函数中标记下触摸已经被处理了(清除tp_dev.sta),清除第一个点,画第二个点,清除第二个点,画第三个点,清除第三个点,画第四个点,清除第四个点。也就是,触摸屏幕有两个状态:按下和松开。当按下时,程序执行的是将按下的AD值坐标存到两个数组中即上图中的TP_Read_XY2(&tp_dev.x[0],&tp_dev.y[0]);当松开时,清除原来的点,并画一个新点。这样触摸4次。

在校准函数中,由于之前重复触摸了4下屏幕,触摸的4个点的AD值被存入到了pos_temp[4][2]数组中,然后算出(x1,y1),

(x2,y2)之间的距离d1和(x3,y3),(x4,y4)之间的距离d2,把这两个水平距离相除得到一个比值fac1;再计算出(x1,y1),(x3,y3)之间的距离d3和(x2,y2),(x4,y4)之间的距离d4,把这两竖直方向的距离相除,得到一个比值fac2.如果0.95《fac1《1.05且0.95《fac2《1.05则认为校准成功。否则显示触摸的AD值,不断校正。如果校准成功,就计算AD值与实际坐标之间的校准参数,并将这些校准参数存到EEPROM(断点可保存数据)中。每次重新上电系统初始化后再读出来。

xfac、yfac:每个AD点对应的像素点数目。(液晶理论宽度-40)/(x2-x1) 即液晶理论宽度点阵值/AD测量值

xoff、yoff:测量误差值。[液晶理论宽度点阵值 - 每AD值对应多少点阵*(AD测量值)]/2 = 测量误差值(理论值为 20 点阵,实际是有误差的)
编辑:hfy

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

    关注

    2305

    文章

    11122

    浏览量

    371193
  • AD转换器
    +关注

    关注

    4

    文章

    252

    浏览量

    42875
  • 电阻触摸屏
    +关注

    关注

    0

    文章

    19

    浏览量

    12499
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    应用 I 触摸屏静电浪涌防护方案

    一、应用背景触摸屏(又称触控或、触控面板)是一种可接收触头输入信号的感应式液晶显示装置。用户通过手指与屏幕直接触碰,就可与计算机等设备进行交互。触摸屏被广泛运用在各个行业,其中较为常见的就是手机
    的头像 发表于 11-03 13:37 155次阅读
    应用 I <b class='flag-5'>触摸屏</b>静电浪涌防护方案

    Microchip maXTouch® mXT448UD-CCUBHA1 触摸屏控制器技术解析

    Microchip Technology ATMXT448UD maXTouch®触摸屏控制器优化用于 家用电器市场中需要功能安全的高达8.3"的显示面板。该器件通过IEC/UL
    的头像 发表于 10-14 16:35 422次阅读
    Microchip maXTouch® mXT448UD-CCUBHA1 <b class='flag-5'>触摸屏</b>控制器技术<b class='flag-5'>解析</b>

    工业智能网关:PLC触摸屏数据采集场景覆盖指南

    针对"能否采集PLC触摸屏数据"问题,本文通过功能模块化拆解,结合真实应用场景,解析工业智能网关在PLC触摸屏数据采集中的技术实现与商业价值。
    的头像 发表于 07-16 10:36 687次阅读
    工业智能网关:PLC<b class='flag-5'>触摸屏</b>数据采集场景覆盖指南

    聚徽分享——解决工控触摸屏触摸不灵敏问题的实用技巧

    在工业自动化场景中,工控触摸屏作为人机交互的核心设备,其灵敏度直接影响生产效率与操作准确性。当触摸屏出现触摸不灵敏的情况时,及时排查并解决问题至关重要。以下是一些实用的解决技巧。 清洁屏幕表面 日常
    的头像 发表于 06-26 17:26 1040次阅读

    工业智能网关能够采集PLC触摸屏

    工业智能网关能够采集PLC触摸屏的数据。工业智能网关作为连接工业场景本地设备(如PLC、传感器、触摸屏等)与远端业务系统的网络通信设备,具备数据采集、协议解析、边缘计算等功能,可实现对PLC
    的头像 发表于 06-25 14:30 559次阅读
    工业智能网关能够采集PLC<b class='flag-5'>触摸屏</b>吗

    聚徽解析电容式触摸屏常见失灵问题:从跳、漂移到无反应的修复指南

    不仅影响使用体验,还可能耽误重要事务。想要快速解决这些问题,就需要深入了解其背后的原因和对应的修复方法。 一、跳问题解析与修复 跳,即屏幕不受控制地自动跳动、乱点,是电容式触摸屏
    的头像 发表于 06-25 10:31 1854次阅读

    指尖上的科技:电容式与电阻触摸屏如何选择?

    在现代生活中,从智能手机到工业控制面板,触摸屏已成为人机交互的核心界面。面对琳琅满目的设备,你是否好奇屏幕如何感知你的触碰?这背后主要归功于两大技术:电容式(Capacitive)和电阻
    的头像 发表于 06-19 10:03 1034次阅读
    指尖上的科技:电容式与<b class='flag-5'>电阻</b>式<b class='flag-5'>触摸屏</b>如何选择?

    昆仑通态物联网触摸屏配置教程

    昆仑通态物联网触摸屏配置教程
    发表于 06-09 14:59 0次下载

    触摸屏的防水方案该如何选择?#触摸屏 #工作原理大揭秘 #人工智能

    触摸屏
    jf_95705721
    发布于 :2025年04月14日 13:59:29

    工业触摸屏在调色机械设备中的应用

    工业触摸屏,又称工业显示器,是一种应用在工业控制过程或设备的显示器,是人机互动的终端展示。以下是对工业触摸屏在调色机械设备中应用的详细分析:
    的头像 发表于 03-13 17:23 982次阅读

    案例解说PLC、触摸屏及变频器综合应用

    《案例解说PLC、触摸屏及变频器综合应用》一书详细阐述了PLC(可编程逻辑控制器)、触摸屏及变频器的综合应用。以下是对该书的案例解说以及PLC、触摸屏及变频器综合应用的一些介绍: 一、书籍介绍
    的头像 发表于 02-19 09:43 1450次阅读

    Maxtouch触摸屏:多场景触控解决方案

    Maxtouch触摸屏方案以其卓越的性能和高度适应性,为汽车、工业和消费类电子设备提供全面的触摸屏解决方案。凭借专用触摸屏芯片和高效开发工具,它满足多种应用场景的需求,具有强抗干扰能力、支持厚手套操作、防水、防刮等特性,是高性能
    的头像 发表于 02-11 09:25 1495次阅读
    Maxtouch<b class='flag-5'>触摸屏</b>:多场景触控解决方案

    4线电阻触摸屏是如何工作的

    4线电阻触摸屏是一种常见的触控技术,广泛应用于各种工业和消费电子产品中。这类触摸屏的工作原理是基于压力感应:当屏幕表面受到触摸时,顶层(通常是一层透明的导电涂层)会与底层接触,从而形
    的头像 发表于 01-17 17:14 3633次阅读
    4线<b class='flag-5'>电阻</b>式<b class='flag-5'>触摸屏</b>是如何工作的

    深度应用在智能冰箱触摸屏中的电容式触摸芯片-GT301L

    ‌智能冰箱触摸屏的工作原理主要基于电容式触摸屏技术‌。当手指触摸到屏幕上时,会对屏幕的电容板产生电荷,通过感应电极实现电荷的感应和定位。
    的头像 发表于 01-14 09:41 1024次阅读
    深度应用在智能冰箱<b class='flag-5'>触摸屏</b>中的电容式<b class='flag-5'>触摸</b>芯片-GT301L

    触摸屏与传统显示器比较

    。它基于多种技术,如电阻式、电容式、声波式和红外式等。电容式触摸屏是目前最常见的类型,它通过检测手指接触屏幕时产生的微小电容变化来识别触摸位置。 传统显示器技术: 传统显示器,如液晶显示器(LCD)、等离子显示器(PDP)和
    的头像 发表于 01-06 17:02 1856次阅读