网站首页
关于时恒
公司新闻
产品中心
荣誉资质
人才招聘
联系我们
您的位置:首页 > 行业资讯 > 正文

电阻式触摸屏中模数转换器的应用

发布时间:2016/3/14    访问人数:831次

  为了将电阻式触摸屏上的触摸点坐标读入微控制器,需要使用一个专用的触摸屏控制器芯片,或者利用复杂的外部开关网络来连接微控制器的片上模数转换器。本文以夏普公司带有内置片上ADC的LH754xx系列和LH7A404微控制器为例,详细介绍这种用于电阻式触摸屏的模数转换器接口与编程特性。

  LH75400/01/10/11系列和LH7A404等微控制器带有一个内含触摸屏偏置电路的片上模数转换器,它是一种逐次逼近寄存器型转换器。这些控制器可以在触摸屏传感器和微控制器之间进行直接联系,无需CPU介入即可控制所有触摸屏偏置电压,并记录全部测量结果。

  其中的ADC模块由ADC内核、测量结果FIFO、正输入多路复用器、负输入多路复用器、正参考多路复用器、负参考多路复用器、测量序列发生器和偏置与控制网络组成。除了LH7A404外,所有ADC模块的I/O管脚都穿过GPI MUX,这个多路复用器可由用户将每个管脚配置为通用数字输入或模拟管脚。将ADC模块I/O管脚配置为数字输入时,GPI MUX会把一个数字输入缓冲器连接到这个管脚;而将其配置为模拟管脚时,GPI MUX则把它与数字输入缓冲器断开,同时将缓冲器接地。在低功耗应用中,为了尽量减少漏电流,可以将所有未使用的ADC I/O管脚都接地,或者将未使用的ADC I/O管脚编程为模拟管脚。本文假设ADC模块中所有需要的I/O管脚都已被设置为模拟管脚。

  对于LH75400/01/10/11系列器件,ADC的正输入多路复用器可以对所有8个ADC管脚(AN0~AN4、AN6、AN8和AN9)中的任何一个进行采样;对于LH7A404,ADC的正输入多路复用器可以对所有10个ADC管脚的任何一个进行采样。为了节省LH75400/01/10/11的管脚,制造商只引出了10个管脚中的8个,因此LH75400/01/10/11系列的模拟管脚序号不是完全连续的。在所有的芯片上,负输入多路复用器可以选择负参考输入或VSSA_ADC作为ADC的负输入,正参考多路复用器可以选择片上参考或三个外部管脚之一作为正参考,负参考多路复用器则可选择VSSA_ADC或三个其它外部管脚作为负参考。这些多路复用器将模拟输入连接到SAR ADC的内核。图1为ADC的方框图,需要注意的是,LH7A404的11到1多路复用器还有另外两个模拟输入。

  通过低阻模拟开关,ADC的偏置与控制网络可以将模拟管脚切换到VDDA_ADC或VSSA_ADC。另外,偏置与控制网络也可以将弱上拉电阻切换到AN0和AN4管脚。图2为偏置与控制网络结构图。启动测量后,测量序列发生器将控制整个过程,包括需要激活哪些模拟开关来偏置触摸屏、什么时候激活这些开关、使用哪些管脚作为ADC内核的模拟输入、采样间隔为多长等等。测量序列发生器的功能很强,但也比较复杂。

  A2DCLK时钟信号决定序列发生器和ADC内核的时基,A2DCLK频率通过电源配置寄存器进行编程。测量序列发生器是一个状态机,它向偏置与控制网络、多路复用器和模拟内核发送信息。序列发生器发送的信息称为控制字(control word),长度为32位。由于ADC的片内数据总线只有16位,所以控制字被分开保存在控制高位字寄存器和控制低位字寄存器中。要查看序列发生器发送给ADC其余部分信号的当前状态,可以让程序读取控制高位字寄存器和控制低位字寄存器。控制高位字寄存器中包含了正负输入多路复用器、正参考多路复用器和测量建立时间的当前设置,控制低位字寄存器中则含有负参考多路复用器和偏置与控制网络的控制位当前状态。

  测量序列发生器状态机在开始时为IDLE(空闲)状态。在空闲状态期间,控制高位字包含了空闲高字节值,控制低字包含空闲低字节值,这意味着空闲低字节设置的是偏置与控制网络中的开关状态。当触摸屏被触摸而触发测量时,状态机将等待空闲高位字寄存器中空闲时间字段所设定的A2DCLK周期数。之后,如果ADC仍然检测到触摸屏上有触摸动作,序列发生器将前进到GET_DATA状态。在GET_DATA状态,测量序列发生器从控制区数组中取出控制字,控制区是一个包含16个控制高位字数值和16个控制低位字数值的数组。序列发生器使用索引号0到15来访问控制区。电源配置寄存器的NOC字段设定为序列发生器将要从控制区读取的总次数减1。

  序列发生器进入GET_DATA状态时,控制区索引号为0。序列发生器从控制区高位字加载控制高位字,并从控制区低位字加载控制低位字,控制低位字中的新值使偏置与控制网络中的开关切换到编程设定的状态。新的控制字加载完成之后,序列发生器进入WAIT_CONV状态。在WAIT_CONV状态,序列发生器将等待控制区高位字建立时间字段中编程设定的A2DCLK周期数,这给触摸屏的电压、偏置和控制开关设置提供了稳定时间。随后,ADC内核执行一次测量操作,测量结束时,ADC内核发出信号,示意测量序列发生器读取转换结果。测量序列发生器前进到END_OF_SEQ状态,读取转换结果,保存到结果FIFO,并将控制区索引号加1。图2:偏置与控制网络结构图。

  这个以读出新控制字为开始、保存测量结果为结束的过程重复执行,直到序列发生器进行了电源配置寄存器NOC字段所设定的测量次数为止。当序列所有测量完成之后,序列发生器将设置中断状态寄存器中的EOSINTR_UM位。测量序列发生器可以编程为检测到触摸屏被触摸时触发,在这种模式下,只要屏幕上检测到触摸动作,序列发生器便会自动重新触发。测量序列发生器也可以设定为由软件命令触发或连续触发。

  基本ADC设置

  无论要测量哪一种类型的触摸屏,都应当配置测量序列发生器执行下列步骤:

  1. 执行触摸检测;

  2. 测量X;

  3. 测量Y;

  4. 继续进行触摸检测。

  其中有一个假设,即如果测量序列开始时你正摸着屏幕,测量序列结束时还在触摸,那它就认为测量X和Y的整个期间都在触摸屏幕。

  为了测量是否触摸了屏幕,需要对偏置与控制网络进行编程,将一个弱上拉电阻连接到AN0管脚,并将一个强下拉电阻连接到AN4管脚(对五线和七线触摸屏)或AN3管脚(对四线和八线触摸屏),将参考输入多路复用器设为使用片上的2.0V参考。

  将正输入多路复用器编程为测量AN0,负输入与负参考相同。例如,如果选择的测量阈值为三分之一满量程,那么当AN0上的电压为2.0V÷3=0.66V时将会检测到一次触摸。在3.3V范围内,它有足够的噪声余量。上拉电阻将触摸屏上拉到VDDA_ADC的过程可能非常缓慢,解决的方法是,在测量触摸状态之前,用偏置与控制网络中的强上拉位2对AN0管脚预先充电。此时如果触摸面板受到触摸,测量序列发生器在下一步骤中切换进来的强下拉将很快把AN0拉下来;如果没有触摸面板,那么在触摸检测测量期间,弱上拉将把AN0管脚保持在VDDA_ADC。