矩阵键盘配置方法

文档说明

本文档以SC806-CN-00(8909平台)为例,结合实际的原理图,说明矩阵键盘配置方法。

2. 原理图

下面是一个键盘的原理图,4*5的矩阵键盘,行号为ROW0-3,列号为COL0-4。
在这里插入图片描述
嗯,键盘图画的很漂亮。

3. 相关文档

OK,我们开始看看相关的文档:
kernel/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt
kernel/Documentation/devicetree/bindings/input/matrix-keymap.txt
打开gpio-matrix-keypad.txt:
在这里插入图片描述
把example这部分内容,原样copy到 kernel/arch/arm/boot/dts/qcom/sc806-evk/msm8909-mtp.dtsi
修改:
debounce-delay-ms = <200>
col-scan-delay-us = <200>
上述两个值,根据实际按键效果自行调整,避免误判和错判。

matrix-keymap.txt 对 linux,keymap做了解释:
在这里插入图片描述
以某个值为例:
在这里插入图片描述

4. 如何确定keymap

以原理图的KEY8为例,是由ROW3*COL0交叉而成,行号:0x03;列号:0x00
那么键值是多少呢?
在这里插入图片描述
KEY8对应”←”功能键,查询kernel/include/uapi/linux/input.h,里面列出了所有键值。
在这里插入图片描述
到这里,我们确定了KEY8的键值是105,换算成16进制0x69。
那么KEY8在keymap中对应的值就是:0x03000069,键值不够16bit高位用0补齐。
现在我们写下里程碑的第一个keymap值:
linux,keymap = <0x03000069 //105 KEY_LEFT

用同样的办法,参考原理图,计算出其他按键对应的keymap值。
keymap值的排列顺序无所谓,可以按照个人喜好,只要和实际电路图相符即可。
在这里插入图片描述

5. 确定行号列号对应的GPIO管脚

这一步很简单,根据原理图找出行和列对应的GPIO管脚,注意是GPIO号,不是模块的管脚编号。

在这里插入图片描述
把上图的信息整理并顺序填入 kernel/arch/arm/boot/dts/qcom/sc806-evk/msm8909-mtp.dtsi
在这里插入图片描述

6. 打开编译选项

在 kernel/arch/arm/configs/la0920_defconfig 和 kernel/arch/arm/configs/la0920_user_defconfig中增加编译选项:
CONFIG_KEYBOARD_MATRIX=y

本文档所涉及的修改点,见下面百度链接:
链接:https://pan.baidu.com/s/1w8muLo29SpTUDR4oLFXi1Q
提取码:9w4n

发布了16 篇原创文章 · 获赞 3 · 访问量 3201

猜你喜欢

转载自blog.csdn.net/qq_33790215/article/details/97798293
今日推荐