欢迎光临散文网 会员登陆 & 注册

触摸按键异常问题汇总

2022-11-28 10:46 作者:赛元MCU平台  | 我要投稿

本文档主要为触摸按键出现异常,例如:异常跳键,触摸按键不出键等异常情况的汇总,主 要包含以下问题,请用户自行查阅: 

1、触控按键出现不灵敏,卡顿的现象; 

2、触摸按键无法出键是为什么; 

3、触摸按键不稳定,有跳键的情况; 

4、触摸按键在上电一段时间内反应,过一段时间会恢复正常; 

5、触控仿真时跑不到扫描函数里;

触摸按键出现异常情况以及解决办法 

1、触控按键出现不灵敏,快速按按键会出现漏键,卡顿的现象; 触控按键反应速度较慢,有漏键现象出现,建议首先从以下几个方面排查: 

1) 查看是否使用的按键数较多,按键个数超过 12 个一般反应速度就可以感受出来,如 果按键个数较多可以适当减小按键扫描周期,扫描周期的修改是在静态调试的单通道 调试界面进行修改,如下图,一般默认按键扫描周期为 8,建议修改后不要小于 4, 按键扫描周期和按键变化量成正比,扫描周期越小按键响应速度越快,但是按键变化 量越小,按键稳定性越差,一般建议按键变化量不要小于 250,所以在修改触摸按键 扫描周期时需要考虑变化量的因素,不能盲目修改;

2) 查看按键一轮扫描完成标志的判断时间间隔是不是比较长,建议 1ms 判断一次,以

便于用最快的速度对按键进行处理,加快按键响应速度;

3) 如果按键个数比较多可以适当减小按键确认次数,默认为 5 次,建议用户修改按键确

认次数不要小于 3 次;

4) 检查触摸面板的材质是否具有微导电性,触摸面板应该是绝缘的非导电材质,若触摸

按键面板具有导电性,触摸按键就有可能出现异常;

5) 检查触摸按键间临键影响是否比较大,按其中某个按键时,是否相邻按键也会有较大

的变化,可以通过静态调试查看各按键的数据,如果有临键影响较大的情况,可以更

换 T2 库看一下效果,T2 的触摸库可以适应更广的临键影响;

6) 应用层获取到键值后是否没有立刻进行处理,建议得到键值后立刻进行处理,以加快

检查程序逻辑,得到键按键响应速度;

7) 检查按键变化量是否过大或过小,一般变化量在 250~1500 以内比较常规;

8) 是否触摸参数调整的不合适,建议重新调整触摸参数。

9) 应用层中是否有对触摸键值再次进行滤波,触控库算法已经对触摸数据和键值进行滤

波,一般情况下应用层不需要再进行滤波了,得到键值后进行功能处理就可以了,如

果有进行滤波建议先去掉,看是否是由于额外的滤波导致的按键响应速度过慢。

2、触摸按键无法出键是为什么?

触摸按键不出键,可以从以下几个方面排查:

1) 请确认在进行触摸参数调试时,是否有盖上实际使用的面板进行调试;

2) 在调试软件调试完成之后,有没有将调试的数据替换到程序中;

3) 触控按键的确定需要多次确定才会给出按键值,默认的按键确认次数为 5,如果是用

仿真的方式去查看键值的,仿真的时候打断点让程序停下来就会导致确认次数不够,

建议让芯片全速跑程序,然后手按在触控按键上一段时间,然后停止运行,查看按键

返回值或者在程序中写一个 if 判断,判断按键返回值是否为 0,在 if 判断里面打断

点,看手指按下时,是否可以进入 if 判断;

4) 查看触摸扫描函数是如何调用的,如果是定时调用,可以直接将触摸扫描函数放到主

循环里面调用,排除由于定时器异常导致无法执行触摸扫描函数的原因;

5) 请检查加入的触控库是否与所使用的芯片型号对应,赛元每个系列的芯片都有单独的

触控库,获取触摸库请发送“触摸库的获取”;

6) 检查使用的库是否为 T2 库,T2 库不支持 3 个以下的触摸按键的应用,如果按键个数

小于 3 个,应该使用 T1 库;

7) 按键返回值的变量应该定义为 32 位,请检查是否定义为 32 位变量;

8) 检查原理图设计是否在 CMOD 脚上接了参考电容,此参考电容是必须要接的,推荐使

用 103 电容;

9) 检查 CMOD 电容是否有焊错或者虚焊的情况;

10) 检查触控 TK 走线上是否有虚焊或开路的情况,检查所按下的按键通道与实际使用的

是否相符;

11) 建议写个测试程序在获取到键值之后立马对触摸键值进行处理,例如:如果按键值非

0 即将某个 IO 口置 1,否则置 0,以此来判断是否为程序键值处理不当导致异常;

12) 可以将动态调试库加入到应用程序中,使用动态调试查看触摸数据是否有异常,查看

手指按下按键时对应触摸通道的 rawdata 的值是否有变化量,变化量是否达到阈值,

在没有按键按下时,触摸是否有噪声,动态调试的操作步骤可以发送“高灵敏度触控

动态调试操作说明”进行查看。

13) 查看所使用的触摸库是那种类型,使用的库为 T2 库时,当按键个数大于 8 个,需要

判断半轮标志是否被置起,然后启动下半轮;使用的库为高可靠的库时,需要判断单

通道扫描完成的标志是否置起,触摸资料里面每一个类型的库都有提供对应的例程,

建议客户按照例程中的写法来写程序;

14) 检查总中断 EA 是否关闭了,触摸库中需要用到触摸中断,所以需要总中断保持为打

开状态;

15) 触摸库的编译模式分为 S 和 L 两种,S 表示编译模式为 small,L 表示编译模式为

large,在触摸库文件的命名中都有写明编译模式为 S 或者 L,如果是触摸库文件的

命名中没有写明编译模式是 S 还是 L,则此触摸库文件的编译模式为 S,客户需要查

看 keil 中的设置 Option for Target 'Target 1'<Target<Memory Model 查看编译

模式的设置是否与触摸库文件的编译模式一致。

3、触摸按键不稳定,有跳键的情况

当遇到触摸按键不稳定时建议先排查如下问题:

1) 检查 TK 的 IO 口是否设置为输出模式,使用到的 TK 通道所在的 IO 口需要设置为强

推挽输出模式;

2) 检查触摸扫描函数的调用,是否是当程序处理完触控数据后,再启动的下一轮扫描函

数;

3) 可能触控调试参数不是最佳,可重新调试触控参数后测试并对比与原本机器上的触摸

参数差异有多大;

4) 程序中先屏蔽触控,看一下是否还会有异常现象,或直接将触摸键值赋值为 0,排查

一下是不是触控引起的跳键,还是其它原因导致的异常现象;

5) 检查触摸面板是否导电,触摸面板需要为绝缘材料;

6) 检查触摸调试数据时所用的面板与实际使用的面板是否一致;

7) 检查触摸参考电容容值是否正确,推荐 103,检查电容是否有虚焊的情况;

8) 将动态调试库加入到功能程序中,在触摸调试软件上面去查看触摸的实时数据,看跳

键时,触摸的 rawdata 以及 besline 的数据是否正常,如果看到数据异常导致跳键,

说明是有干扰存在导致触摸跳键,可以通过屏蔽某些功能,换供电电源,换 PCB 板

上的关键元器件(例如 CMOD 电容)等方式去排查干扰来源,然后再想办法解决干

扰,动态调试库的使用方法可以发送“高灵敏度触控动态调试操作说明”查看动态调试

的操作步骤。

4、触摸按键在上电一段时间内反应,过一段时间会恢复正常

程序在上电时会调用触摸初始化函数 TouchKeyInit();触摸初始化函数的作用是适应当前

环境并确定触摸按键基线的初始值,所以需要尽量保证此时的环境稳定,且尽量保持与初

始化完之后触摸按键扫描时的环境相近;比如:触摸初始化函数需要在没有手指触摸的情

况下执行,所以在刚上电时,手指不能接触到按键,否则可能会导致触摸按键有几秒钟的

时间无法响应;在执行触摸初始化函数的时候,如果有 LED 灯全亮全灭或其他对芯片供

电电压以及芯片电流有较大影响的操作或有触摸按键的动作时,可能会出现短时间的按键

无反应或触摸按键跳键的情况,建议等全部初始化和 LED 全亮的动作完成后再调用触摸

初始化函数。

5、触控仿真时跑不到扫描函数里

触摸按键仿真时无法跑到触摸扫描函数的位置,可以从以下几个方面查看:

1) 请检查参考电容是否焊接良好,推荐使用 103 电容;

2) 请检查 TouchKeyInit(); TouchKeyRestart(); TouchKeyScan();这 3 个函数是否有正

确调用,触摸资料里面每一个类型的库都有提供对应的例程,可以按照例程里面的方

式对函数进行调用;

3) 检查使用的库是否为 T2 库,T2 库不支持 3 个以下的触摸按键的应用,如果按键个数

小于 3 个,应该使用 T1 库;

4) 查看所使用的触摸库是哪种类型,使用的库为 T2 库时,当按键个数大于 8 个,需要

判断半轮标志是否被置起,然后启动下半轮;使用的库为高可靠的库时,需要判断单

通道扫描完成的标志是否置起,触摸资料里面每一个类型的库都有提供对应的例程,

建议客户按照例程中的写法来写程序;

5) 触摸库的编译模式分为S和L两种,S表示编译模式为small,L表示编译模式为large,

在触摸库文件的命名中都有写明编译模式为 S 或者 L,如果是触摸库文件的命名中没

有写明编译模式是 S 还是 L,则此触摸库文件的编译模式为 S,客户需要查看 keil 中

的设置 Option for Target 'Target 1'<Target<Memory Model 查看编译模式的设置

是否与触摸库文件的编译模式一致;

6) 查看触摸扫描函数是如何调用的,如果是定时调用,可以直接将触摸扫描函数放到主

循环里面调用,排除由于定时器异常导致无法执行触摸扫描函数的原因。


触摸按键异常问题汇总的评论 (共 条)

分享到微博请遵守国家法律