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

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

3天内不再提示

RTC时钟与触摸功能详解(下)

jf_78858299 来源:金沙滩工作室 作者:金沙滩工作室 2023-05-26 14:45 次阅读

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的点。当抬起动作触发时,如果抬起时的坐标是否位于功能区,则触发相应的功能。

具体代码如下:

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

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

    关注

    31

    文章

    5317

    浏览量

    119999
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10824

    浏览量

    211129
  • 实时时钟
    +关注

    关注

    4

    文章

    239

    浏览量

    65690
  • STM32F103
    +关注

    关注

    33

    文章

    476

    浏览量

    63476
收藏 人收藏

    评论

    相关推荐

    STM32 RTC实时时钟(一)

    STM32处理器内部集成了实时时钟控制器(RTC),因此在实现实时时钟功能时,无须外扩时钟芯片即可构建实时
    的头像 发表于 07-22 15:41 4589次阅读
    STM32 <b class='flag-5'>RTC</b>实时<b class='flag-5'>时钟</b>(一)

    RTC时钟模块有哪些功能

    很多嵌入式设备在使用过程中,会碰到未联网的状态,但是有需要保证时间的正常,或者定时开关机功能。这个时候就需要添加RTC 时钟模块。下面通过mstar 平台的rx8130ce 型号时钟
    发表于 07-27 08:15

    W601的RTC时钟功能概述

    计数器/定时器,两个 32 位寄存器包含秒、分、时、日、月、年,以二进制编码的十进制格式表示(BCD),能自动对 28、29(闰年)、30、31 天的月份进行修正。在相应软件配置RTC 既可以提供时钟日历
    发表于 01-10 08:05

    浅谈RTC实时时钟特征与原理

    计数的计数器,在相应软件配置,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 RTC模块和时钟配置系统(RCC_B
    的头像 发表于 06-30 15:54 1.1w次阅读

    STM32开发 -- RTC详解

    RTC (Real Time Clock):实时时钟实时时钟是一个独立的定时器。 RTC模块拥有一组连续计数的计数器,在相应软件配置,可
    发表于 11-30 13:06 27次下载
    STM32开发 -- <b class='flag-5'>RTC</b><b class='flag-5'>详解</b>

    【STM32】RTC详解

    00. 目录文章目录00. 目录01. RTC概述02. RTC主要特性03. RTC部分功能3.1 时钟和预分频器3.2 实时
    发表于 12-04 17:21 26次下载
    【STM32】<b class='flag-5'>RTC</b><b class='flag-5'>详解</b>

    STM32CubeMX | 基于STM32使用HAL库驱动RTC时钟及闹钟功能

    STM32使用HAL库驱动RTC时钟及闹钟功能目录STM32使用HAL库驱动RTC时钟及闹钟功能
    发表于 12-06 09:21 52次下载
    STM32CubeMX | 基于STM32使用HAL库驱动<b class='flag-5'>RTC</b><b class='flag-5'>时钟</b>及闹钟<b class='flag-5'>功能</b>

    RTC时钟讲解(一)

    什么是RTC RTC (Real Time Clock):实时时钟 RTC是个独立的定时器。RTC模块拥有一个连续计数的计数器,在相应的软件
    的头像 发表于 06-09 17:48 9678次阅读
    <b class='flag-5'>RTC</b><b class='flag-5'>时钟</b>讲解(一)

    STM32CubeMX-实时时钟(RTC)

    实时时钟 (RTC) 是一个独立的 BCD 定时器/计数器。RTC 提供具有可编程闹钟中断功能的日历时钟 /日历。
    的头像 发表于 01-14 17:24 2484次阅读

    STM32学习笔记之RTC实时时钟1

    STM32 的实时时钟RTC)是一个独立的定时器。 STM32 的 RTC 模块拥有一组连续计数的计数器,在相应软件配置,可提供时钟日历
    的头像 发表于 05-26 14:26 1854次阅读
    STM32学习笔记之<b class='flag-5'>RTC</b>实时<b class='flag-5'>时钟</b>1

    STM32学习笔记之RTC实时时钟2

    STM32 的实时时钟RTC)是一个独立的定时器。 STM32 的 RTC 模块拥有一组连续计数的计数器,在相应软件配置,可提供时钟日历
    的头像 发表于 05-26 14:26 1135次阅读
    STM32学习笔记之<b class='flag-5'>RTC</b>实时<b class='flag-5'>时钟</b>2

    RTC时钟触摸功能详解(上)

    是CPU内部集成RTC模块。STM32F103内部集成了RTC模块,可以通过配置相应的寄存器来实现实时时钟功能
    的头像 发表于 05-26 14:44 1820次阅读
    <b class='flag-5'>RTC</b><b class='flag-5'>时钟</b>与<b class='flag-5'>触摸</b><b class='flag-5'>功能</b><b class='flag-5'>详解</b>(上)

    RTC详解

    RTC的本质很简单,就是一个时钟经过精确分频最后得到的一个1Hz的时钟,也可以说是计数器,其他大部分功能都是基于这个计数器设计的数字逻辑。 本文讲的
    的头像 发表于 05-26 15:15 8974次阅读
    <b class='flag-5'>RTC</b><b class='flag-5'>详解</b>

    CW32实时时钟RTC)介绍(

    实时时钟RTC)是一个专用的计数器 / 定时器,可提供日历信息,包括小时、分钟、秒、日、月份、年份以及星期。RTC 具有两个独立闹钟,时间、日期可组合设定,可产生闹钟中断,并通过引脚输出;支持时间
    的头像 发表于 05-26 17:07 891次阅读
    CW32实时<b class='flag-5'>时钟</b>(<b class='flag-5'>RTC</b>)介绍(<b class='flag-5'>下</b>)

    一文看懂RTC实时时钟

    RTC是个独立的定时器。RTC模块拥有一个连续计数的计数器,在相应的软件配置,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和
    的头像 发表于 06-16 12:24 4327次阅读
    一文看懂<b class='flag-5'>RTC</b>实时<b class='flag-5'>时钟</b>