主要为触摸按键出现异常,例如:异常跳键,触摸按键不出键等异常情况的汇总,主 要包含以下问题,请用户自行查阅: 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) 查看触摸扫描函数是如何调用的,如果是定时调用,可以直接将触摸扫描函数放到主 循环里面调用,排除由于定时器异常导致无法执行触摸扫描函数的原因。
|