12.3.2. 功能描述

12.3.2.1. 关于采样的定义

为了方便表述,本模块引入三个有关采样的定义。

  • 单次采样:

    是指对任意输入的一次ADC采样,对应一条ADC采样命令。

  • 单点采样:

    是指ADC在任意一个点的连续采样,有可能是单次采样,也有可能包含多次采样。例如ADC在获取X轴坐标对Y+ 信号进行单点采样时,通常会连续采样多次,以获得多个采样值,然后进行适当的滤波(例如算数平均),以获得一个更加准确和稳定的结果。

  • 单循环采样

    是指自动采样模式下,为了能够计算出一个完整的触摸坐标,需要对多个点进行采样,一个单循环采样包括多个采样点, 包含的采样点数不确定,根据不同的自动模式会不同,例如自动模式1(XN-YN),就对应着两个采样点X-和Y-。

  • 周期循环采样

    是指间隔一定时间重复完成单采样循环。

../../../_images/Periodic_cycle.png

图 12.12 采样定义说明

12.3.3. 模块工作流程与控制机制

../../../_images/12.png

图 12.13 模块工作流程与控制框图

12.3.4. 中断产生机制

../../../_images/22.png

图 12.14 中断连接框图

12.3.5. 按压检测

如下图所示,按压检测信号从外部到内部经过屏蔽控制以及去抖两个过程。

../../../_images/32.png

图 12.15 按压检测框图

首先,按压检测信号PDETn输出采用PDETEN信号进行屏蔽,当PDETEN为高电平,PDETn输入有效,否则输入无效。

其次,按压检测信号经过屏蔽控制之后,还需要经过去抖才能为模块内部所使用。去抖原理如下图所示。

../../../_images/42.png

图 12.16 去抖原理框图

按压去抖过程描述:模块复位后,内部PDETd=0,表示已抬起,当按压信号有效(PDETi=1)时,去抖计数开始 采用PCLK/256的频率进行计数,期间如果检测信号有抖动(PDETi=0),计数器就会被清零,如果在足够的时 间内无抖动(PDETi=1),计数器就会计数到按压检测的去抖值(PDET_DEB),那么PDETd取反(PDETd=1), 表示按压事件已被确定,随后计数器就会被清零。

抬起去抖过程描述:当触摸抬起(PDETi=0),去抖计数又 开始采用PCLK/256的频率进行计数,期间如果检测信号有抖动(PDETi=1),计数器就会被清零,如果在足够 的时间内无抖动(PDETi=0),计数器就会计数到抬起检测的去抖值(RDET_DEB),那么PDETd取反(PDETd=0 ),表示抬起事件已被确定,随后计数器就会被清零。

12.3.6. 采样模式描述

对于RTP模块而言,采样点有四个分别是X+,X-,Y+,Y-。采样模式主要是指对RTP的驱动电路的控制与采样 点选择。 根据采样点和驱动不同,可以分为以下8种常见采样模式,为了方便区别,分别对采样模式进行命令 如下。

XP采样:如下图所示分别是单点触摸和两点触摸的情况,DRV[3:0] = 0x5,VPSEL[1:0] = VNSEL[1:0] =0x2,采样点选择X+。

../../../_images/51.png

图 12.17 XP采样

XN采样:如下图所示分别是单点触摸和两点触摸的情况,DRV[3:0] = 0x5,VPSEL[1:0] = VNSEL[1:0] = 0x2,采样点选择X-。

../../../_images/61.png

图 12.18 XN采样

YP采样:如下图所示分别是单点触摸和两点触摸的情况,DRV[3:0] = 0xA,VPSEL[1:0] = VNSEL[1:0] = 0x1,采样点选择Y+。

../../../_images/7.png

图 12.19 YP采样

YN采样:如下图所示分别是单点触摸和两点触摸的情况,DRV[3:0] = 0xA,VPSEL[1:0] = VNSEL[1:0] = 0x1,采样点选择Y-。

../../../_images/8.png

图 12.20 YN采样

ZA采样:如下图所示分别是单点触摸和两点触摸的情况,DRV[3:0] = 0x9,VPSEL[1:0] = 0x1,VNSEL[1:0] = 0x2,采样点选择Y+。

../../../_images/9.png

图 12.21 ZA采样

ZB采样:如下图所示分别是单点触摸和两点触摸的情况,DRV[3:0] = 0x9,VPSEL[1:0] = 0x1,VNSEL[1:0] = 0x2,采样点选择X-。

../../../_images/10.png

图 12.22 ZB采样

ZC采样:如下图所示分别是单点触摸和两点触摸的情况,DRV[3:0] = 0x6,VPSEL[1:0] = 0x2,VNSEL[1:0] = 0x1,采样点选择X+。

../../../_images/111.png

图 12.23 ZC采样

ZD采样:如下图所示分别是单点触摸和两点触摸的情况,DRV[3:0] = 0x6,VPSEL[1:0] = 0x2,VNSEL[1:0] = 0x1,采样点选择Y-。

../../../_images/121.png

图 12.24 ZD采样

12.3.7. 工作模式描述

本模块规定了多个工作模式,主要可分为两类:手动工作模式,自动工作模式。

手动工作模式,是指各采样模式完全由软件对寄存器进行控制而构造出来的,不限于以上定义的8种采样模式,不同采样模式的先后顺序都是由软件进行控制,这样可以获得最大的灵活度,以面对未来应用的不确定性。

自动工作模式,是指模块按照预先定义的采样模式(参考以上定义的8种采样模式),以及预定的顺序进行采样。让软件驱动控制得到最大程度的简化,可以做到一键完成所需的所有采样工作,软件只需要使用获得的采样值进行坐标运算即可。根据不同应用需要,自动模式分了4种情况,详细参考寄存器定义。

12.3.8. 自动模式采样数据滤波

自动工作模式下,采样数据滤波包括三个步骤:排序,超限判断,算数平均。

排序:把单点多次采样结果进行排序,找出最大和最小的值;

超限判断,用最大值-最小值,然后进行相对值和绝对值分别比较,如果同时超过两个数值,则整组采样数据判为无效,否则就认为数据有效;

算数平均:把最大值/最小值排除之后,对中间值进行算数平均,得到的结果作为单点采样的最终结果存入FIFO。

滤波配置有:无滤波,2/4,4/6,4/8。

“2/4”表示,单点采样连续采样4次,获得同一个点的连续的4个ADC样本数据,然后去掉最大和最小,再对剩下的数据进行算数平均;

“4/6”表示,单点采样连续采样6次,获得同一个点的连续的6个ADC样本数据,然后去掉最大和最小,再对剩下的数据进行算数平均;

“4/8”表示,单点采样连续采样8次,获得同一个点的连续的8个ADC样本数据,然后去掉最大2个和最小2个,再对剩下的数据进行算数平均。

举例如下:假设采样模式为XP,滤波配置为4/6,XYRUR=1/64,XYAUR=16,则对X+进行连续采样,得到6个数值,分别为A,B,C,D,E,F,并且A<B<C<D<E<F。

  • 步骤1,排序:最小值A,最大值F;

  • 步骤2,超限判断:如果((F-A) > XYAUR) || ((F-A) > ((F+A)/2* XYRUR)) == 1,则保留采样所得的数据,停止自动采样。数据超限与抬起都会导致RTP进入Error状态停止自动采样(周期性或单循环采样下)无需等待本自动采样完成,需要等待正在执行的单点采样完成,需软件清除采样不完整与数据超限标志。

  • 步骤3,算术平均:DATA = (B+C+D+E)/4。

注:超限判断与算术平均同时进行。

12.3.9. 自动模式下的单点采样描述

自动模式下单点采样步骤如下:

  • 步骤1,检查按压检测信号:确保DRV[3:0]=4’h1,并且PDETEN有效,检查经过去抖前的按压检测信号(PDETi),如果按压有效,则进入步骤2,否则置位SCI_FLG(采样循环不完整标志),并进入步骤N;

  • 步骤2,驱动RTP电路:根据采样模式,分别配置DRV/VPSEL/VNSEL驱动电路,同时PDETEN无效,进入步骤3;

  • 步骤3,发送ADC采样命令:根据滤波配置,连续向ADC发出多个采样命令,采样优先级PRI=1,收到对应数量的采样数据后,进入步骤4;

  • 步骤4,采样数据滤波:按照前面描述的方式,对采样数据进行滤波,如果滤波完成则进入步骤5,否则置位DOUR_FLG(数据超限标志),并进入步骤N;

  • 步骤5,完成采样:设置DRV=1,并且PDETEN有效,并完成采样;

  • 步骤N,等待软件干预:进入Error状态,直到(SCI_FLG || DOUR_FLG)==0,重新进行下一次采样循环。

12.3.10. 自动模式下的采样循环描述

自动模式单循环采样说明:

../../../_images/13.png

自动模式周期循环采样说明:

../../../_images/14.png