矩阵扫描是薄膜开关最常用的信号读取方式,行线列线交叉形成按键节点。这种结构有一个固有问题:当同时按下多个键时,电流会通过未按下的键形成寄生通路,导致控制器误判有额外的键被按下,这就是鬼键现象。在工程实践中,防鬼键设计直接关系到产品能不能通过功能验证。
鬼键产生的条件可以用一个简单的三键模型来理解。假设一个3x3矩阵,同时按下(行1,列1)、(行1,列2)、(行2,列1)三个键。扫描到行1时,列1和列2都读到按下状态。扫描到行2时,列1读到按下状态。控制器根据这些信息推断(行2,列2)也被按下了,但实际上这个键并没有被操作。这就是一个典型的鬼键。

防鬼键的第一个措施是硬件层面加隔离二极管。
在每个按键节点串联一个二极管,电流只能单向流动,寄生通路被二极管反向截止。这种方法简单可靠,但增加了面板的厚度和成本。每个按键多一个二极管,对于64键的面板就是64个二极管,需要在面板上留出足够的空间。宝盛达在做高键数面板时,会把二极管贴在FPC上而不是直接做在薄膜开关里,这样面板本身的结构不受影响,二极管的焊接质量也更可控。
第二个措施是软件层面的扫描算法优化。
最常用的方法是逐行扫描加消抖判断。扫描某一行时,只给这一行施加电压,其他行全部拉低或者悬空,然后读取所有列的状态。这样即使存在寄生通路,因为没有形成完整的回路,不会被误读。这种方法不需要额外硬件,但扫描速度会受影响。对于16键的面板,逐行扫描需要4个周期,每个周期加消抖时间大约20毫秒,总扫描周期80毫秒,对于大多数应用可以接受。但如果键数增加到64键以上,扫描周期变长,可能出现按键响应延迟。
第三个措施是矩阵结构设计上的优化。
把矩阵设计成非对称结构,行线和列线的数量差异大一些,可以减少鬼键出现的概率。比如一个12键的面板,用3行4列比4行3列的鬼键概率更低,因为寄生通路的形成需要更多的同时按下条件。宝盛达在面板布局阶段会和客户的固件工程师一起优化矩阵结构,在满足布局需求的前提下尽量减少鬼键风险。
第四个措施是双键锁定策略。
在软件层面设定,如果检测到三个以上的键同时按下,就判定为鬼键,全部忽略。这种方法适用于那些不会出现真正多键同时按下的场景,比如工业遥控器上的模式切换,正常操作不会同时按三个键。但如果产品确实需要多键同时操作,比如游戏手柄,这种方法就不适用。
实际工程中,宝盛达建议客户在设计阶段就明确多键同时按下的需求。如果只需要两点同时按下,用软件消抖加逐行扫描就够了。如果需要三点以上同时按下,必须加二极管。这两种方案的成本差异在面板总价中占比不大,但对可靠性的影响是决定性的。
常见问题解答
怎么判断现场出现的异常按键是鬼键还是触点问题?
鬼键的特征是按键组合有规律性,总是出现在特定的多键组合下,而且按下的多余键位置可以预测。触点问题的特征是随机性的,同一个键时好时坏,和其他键的组合无关。用示波器抓取矩阵扫描波形,鬼键会在不该有信号的列上出现稳定的低电平,触点问题则是信号抖动或者时有时无。
加了隔离二极管后面板厚度会增加多少?
贴片二极管厚度大约0.5mm,加上焊盘和绝缘层,面板总厚度增加大约0.3到0.5mm。如果原始面板厚度是1.0mm,加二极管后变成1.3到1.5mm。对于大多数安装空间这个增量可以接受,但如果空间特别紧张,可以考虑用薄膜二极管或者把二极管放到连接器端。
软件防鬼键和硬件防鬼键可以一起用吗?
可以,而且推荐一起用。硬件二极管解决物理层面的寄生通路,软件算法处理二极管失效或者漏加的情况。两层防护叠加,可以把鬼键概率降到接近零。宝盛达在高可靠性项目中通常建议这种双保险方案。