打印
[技术问答]

触摸按键异常问题汇总

[复制链接]
311|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vivilyly|  楼主 | 2024-2-17 23:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文档主要为触摸按键出现异常,例如:异常跳键,触摸按键不出键等异常情况的汇总,主 要包含以下问题,请用户自行查阅:
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) 查看触摸扫描函数是如何调用的,如果是定时调用,可以直接将触摸扫描函数放到主
循环里面调用,排除由于定时器异常导致无法执行触摸扫描函数的原因。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

86

主题

1697

帖子

1

粉丝