12.3.2. 功能描述
12.3.2.1. 关于采样的定义
为了方便表述,本模块引入三个有关采样的定义。
- 单次采样:
是指对任意输入的一次ADC采样,对应一条ADC采样命令。
- 单点采样:
是指ADC在任意一个点的连续采样,有可能是单次采样,也有可能包含多次采样。例如ADC在获取X轴坐标对Y+ 信号进行单点采样时,通常会连续采样多次,以获得多个采样值,然后进行适当的滤波(例如算数平均),以获得一个更加准确和稳定的结果。
- 单循环采样
是指自动采样模式下,为了能够计算出一个完整的触摸坐标,需要对多个点进行采样,一个单循环采样包括多个采样点, 包含的采样点数不确定,根据不同的自动模式会不同,例如自动模式1(XN-YN),就对应着两个采样点X-和Y-。
- 周期循环采样
是指间隔一定时间重复完成单采样循环。
12.3.3. 模块工作流程与控制机制
12.3.4. 中断产生机制
12.3.5. 按压检测
如下图所示,按压检测信号从外部到内部经过屏蔽控制以及去抖两个过程。
首先,按压检测信号PDETn输出采用PDETEN信号进行屏蔽,当PDETEN为高电平,PDETn输入有效,否则输入无效。
其次,按压检测信号经过屏蔽控制之后,还需要经过去抖才能为模块内部所使用。去抖原理如下图所示。
按压去抖过程描述:模块复位后,内部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+。
XN采样:如下图所示分别是单点触摸和两点触摸的情况,DRV[3:0] = 0x5,VPSEL[1:0] = VNSEL[1:0] = 0x2,采样点选择X-。
YP采样:如下图所示分别是单点触摸和两点触摸的情况,DRV[3:0] = 0xA,VPSEL[1:0] = VNSEL[1:0] = 0x1,采样点选择Y+。
YN采样:如下图所示分别是单点触摸和两点触摸的情况,DRV[3:0] = 0xA,VPSEL[1:0] = VNSEL[1:0] = 0x1,采样点选择Y-。
ZA采样:如下图所示分别是单点触摸和两点触摸的情况,DRV[3:0] = 0x9,VPSEL[1:0] = 0x1,VNSEL[1:0] = 0x2,采样点选择Y+。
ZB采样:如下图所示分别是单点触摸和两点触摸的情况,DRV[3:0] = 0x9,VPSEL[1:0] = 0x1,VNSEL[1:0] = 0x2,采样点选择X-。
ZC采样:如下图所示分别是单点触摸和两点触摸的情况,DRV[3:0] = 0x6,VPSEL[1:0] = 0x2,VNSEL[1:0] = 0x1,采样点选择X+。
ZD采样:如下图所示分别是单点触摸和两点触摸的情况,DRV[3:0] = 0x6,VPSEL[1:0] = 0x2,VNSEL[1:0] = 0x1,采样点选择Y-。
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. 自动模式下的采样循环描述
自动模式单循环采样说明:
自动模式周期循环采样说明: