一种抗干扰触摸按键设计
2019-05-21张赛男陈梅金
张赛男 陈梅金
摘 要:触摸按键在电子产品中无处不在,而且越来越普遍,同时市面上出现触摸按键的问题也越来越多,主要体现在使用过程中被外界干扰后触摸按键自动触发。该文提出一种多次循环侦测触摸按键的算法,用来增强按键抗干扰的能力,以改善显示器触摸按键带来的种种干扰问题。
关键词:触摸按键;侦测;人机交互
中图分类号:TP212 文献标志码:A
0 引言
我們日常使用的家用电器中,大部分都在使用触摸按键,并通过它对设备进行控制。触摸按键也越来越受到广大用户的认可和喜爱。不过触摸式按键在复杂的干扰环境下经常会出现一些问题,象自动触发按键功能,并且去执行相应按键的动作,这样就容易导致用户不能正常使用设备。该文主要通过显示器触摸按键的侦测算法来改善按键侦测流程,利用侦测算法来改善按键的抗干扰能力。
该设计是基于显示器的硬件系统,对软件控制系统功能进行改善设计。硬件系统包括电源板电路、主板电路和触摸按键回路。软件上从3个方面着手设计,一方面是Scaler IC通过IIC控制方式与触摸按键IC进行通信控制。另一方面是设计触摸按键的侦测流程。第三是测试比对显示器触摸按键在不同的侦测条件下的作用效果。
1 硬件系统
1.1 硬件系统组成
该设计系统是基于显示器系统研究的,主要由电源板、主板、按键板和喇叭以及液晶显示面板组成。电源板输出电源给主板和外围电路。外围电路包括按键板、Audio和显示面板等这些电路回路。主板搭载着系统的核心处理器,即Scaler图像处理芯片。Scaler及外围电路给后续软件设计提供了坚实的硬件基础。显示面板主要负责对图像处理芯片送来的信号进行显示处理。这些硬件电路模块组成了该设计的硬件系统,系统框图如图1所示。
1.2 IIC电路
IIC总线是由串行数据(SDA)总线和串行时钟(SCL)总线组成的。数据总线在器件上传递相关指令信息,每个器件都可以识别相对应的地址。器件在执行相关数据传输时,也可以被看成是主机或者是从机。主机主要负责初始化总线的数据传输和停止发送数据,被寻址的任何器件都将被认为是从机。SDA和SCL都是双向线路,都通过一个电流源或上拉电阻连接到正电压的电源。现在很多上拉电阻电路都已经不这样设计了,原因是很多图像处理器IC内部电路已经添加相关的上拉或下拉电阻电路模块。当总线空闲时,这2条线都设置成高电平,同时连接到总线的器件。连到总线上的任一器件输出为低电平时,都将使总线的信号变低,即各器件的SDA和SCL都是“线与”关系。IIC总线进行数据传送过程中,时钟信号为高电平,数据线上的数据必须保持稳定。只有在时钟线上的信号为低电平时,数据线上的高电平或低电平状态才允许变化。
1.3 按键控制电路
该设计按键板使用触摸按键板。触摸按键板有自己的MCU IC进行处理控制。上位机为图像处理器IC,下位机为Touch Key MCU IC。图像处理器到触摸按键板之间的控制电路图如图2所示,与Scaler连接的部分有3个引脚,分别是SDA_KEY,SCL_KEY,INT_KEY即Reset Key。
2 软件系统
有了硬件系统作为基础,我们就可以对软件控制系统进行设计搭建。软件上我们分成2个模块设计,模块一是触摸按键IIC驱动设计,需要完成对MCU IC通信命令控制和数据读写设计;模块二是触摸按键控制流程设计,需要完成加强对触摸按键抗干扰能力的设计。
2.1 IIC软件设计
IIC软件设计分为起始条件控制、数据传输控制和停止控制。起始条件控制需要根据IIC标准设计,先将IIC的SCL拉高,再Delay一段时间(时间以微秒为单位),然后SDA产生一个从高电平到低电平的下降沿,这样就符合IIC标准的起始信号条件。
有了起始控制条件后就可以对数据进行传输控制了。在数据传输控制时需要对状态机进行忙状态判断,如果总线处理繁忙状态则需要等待数据处理;如果收到正常可以发送命令的状态,即主机收到正常ACK,则可以开始数据发送或接收处理。数据读写过程中同样需要判定对应的ACK,再决定是否重新开始传输数据。
同样IIC停止控制需要按照IIC标准设计。首先将SCL拉成低电平,确保停止信号是我们软件操作控制的前提下;再将SDA拉成低电平;接着将SCL设置成高电平,这时形成了控制SCL为高电平的必要条件;等待一段时间后再将SDA设置成高电平,这样就达到了IIC停止信号的控制。
2.2 触摸按键板控制设计
触摸按键是对Touch Key MCU的控制。从工作经验来看,下位机Touch Key的MCU通常会告知上位机Scaler对应被执行的地址位数据信息,并且将其对应到相应的触摸按键,这样Scaler则直接去执行它读取到的地址位数据而做出相应的按键动作控制。如果我们用这种一般的方式思考则会出现后续不可估量的隐藏问题,当电路受到干扰时,Touch Key 的MCU很有可能对数据识别出现错误。由于二进制数据可能会从“0”变成“1”,也可能从“1”变成“0”,因此当我们无法确保硬件线路绝对可靠的情况下,还是需要从软件上对其进行尽可能多的严格控制设计。
对Key的定义,我们会以十六进制的数据进行定义,如下为该设计方案Key数据对应值的数据结构定义:
#define TPREG_POWER 0x10 //电源按键值定义。
#define TPREG_MENU_EXIT 0x04 //菜单和退出按键值定义。
#define TPREG_PLUS 0x01 //按键“+”值定义。
#define TPREG_MINUS 0x02 //按键“-”值定义。
#define TPREG_RESET 0x80 //重置按键值定义。
#define TPREG_SELECT 0x08 //选中按键值定义。
#define TPREG_UP 0x40 //向上按键值定义。
#define TPREG_DOWN 0x20 //向下按鍵值定义。
Touch Key软件控制的流程图如图3所示。软体主流程中会先对相关IC初始化,再对Touch Key MCU确认是否准备好或当前数据状态是否正常,如果有异常,Scaler会要求Touch Key MCU执行Reset,接着再对Touch Key MCU发送相关读写控制命令。读取指令是0x01,写指令是0x00。在读取数据过程中,需要先向下位机MCU确认其寄存器地址位置,并查找到对应的存放页面,这些前提条件设置好后,我们就可以开始对下位机MCU进行数据命令的读写了。
2.3 TOUCH Key侦测
Touch Key侦测一般都会在运行OSD菜单中进行,由于每个按键的执行结果都会对应到菜单的显示。原本对Touch Key的设计方法,基本上都是依靠软体主流程的时间作为延长时间,并且是单次向Touch Key Register读取数据,然后Scaler再去执行相关数据的动作。但问题很可能会出现从寄存器读到的数据是被干扰到的数据的情况,也就是很有可能是错误的数据。该设计的提出就是需要确保这样读取到的数据是准确的,对每个Touch Key寄存器读取一次是不足的,因此需要做多次循环读取确认。根据系统的稳定性,该设计设置读取数据次数为3次,在3次读取数据都相同的情况下才判定有对应按键被触发。这里需要说明一点,原来机械按键都会做De-bounce设计来防止抖动问题,基本上大家已经都知道了,但是触摸按键往往不需要De-bounce。实际经验和实验结果表明触摸按键也有必要做De-bounce设计。
在Touch Key侦测过程中,我们是使用中断计数方式进行设计控制的,这样能确保数据及时快速地处理,不容易出现卡顿情况。
3 人机交互显示
当我们设计好按键后,就可以将编译好的软件烧录到样机显示器上进行实际人机交互操作实验。我们编译出2套修改前后的软体,分别烧录到同一受干扰的显示器中。在对没有添加触摸按键De-bounce流程的软体进行测试时,可以发现样机的触摸按键自动被触发,从而自动弹出菜单的问题。而在相同条件下,对有添加触摸按键De-bounce程序流程的软件进行测试,则不会发生被自动触发菜单的问题,而且触摸按键的流畅度体验效果并不会被影响。
4 结语
该文提出的通过多次循环侦测触摸按键的方法来增强按键抗干扰的能力,适用于相关触摸按键的产品中。由于是用软体方式实现的抗干扰触摸按键,它经济实用,不增加硬件成本,值得推广使用。
参考文献
[1]周志永,胡建人.低成本电容式触摸按键设计[J].机电工程, 2011,28(3):365-368.
[2]凌六一,伍龙.基于软件模拟的51单片机IIC总线的实现[J].电子技术,2004,31(5):13-16.
[3]洪胜和,林志贤,郭太良.基于OSD交互的液晶显示器光学测试系统设计[J].电视技术,2017,41(4-5):268-273.
[4]刘颖.人机交互界面的可用性评估及方法[J].人类工效学,2002,8(2):35-38.