am335矩阵按键驱动的使用

简介: am335矩阵按键驱动的使用

矩阵按键扫描原理

(即当我们按下一个矩阵键盘的按键时,如何获取按键的位置)

方法有2种,一种是逐行扫描,一种是行列扫描.接下来就主要讲讲行列扫描.


行列扫描的话,就是一开始让p1口高4位输出高电平,低4位输出低电平,若这4行按键里,有按键按下了,那么那一行按键对应的io的电平就会被拉低,我们就可以知道按键的行坐标.获取按键列坐标的方法也是类似的,就是一开始让p1口高4位输出低电平,低4位输出高电平,若这4列按键里,有按键按下了,那么那一列按键对应的io的电平就会被拉低,我们就可以知道按键的列坐标,获得了行坐标x,列坐标y后,4*(x-1)+y就是按键的编号.


修改dtsi文件

设备树的说明文档参考

linux4.4.54-ti-r93/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt

linux4.4.54-ti-r93/Documentation/devicetree/bindings/input/matrix-keymap.txt

实例

matrix-keypad {
compatible = "gpio-matrix-keypad";
debounce-delay-ms = <5>;
col-scan-delay-us = <2>;
row-gpios = <&gpio2 25 0
&gpio2 26 0
&gpio2 27 0>;
col-gpios = <&gpio2 21 0
&gpio2 22 0>;
linux,keymap = <0x0000008B
0x0100009E
0x02000069
0x0001006A
0x0101001C
0x0201006C>;
keypad,num-rows = <2>;
keypad,num-columns = <8>;
};


(1)compatible是系统用来决定绑定到设备的设备驱动的关键。compatible属性是用来查找节点的方法之一

(2)keymap的设置可以参考Documentation/devicetree/bindings/input/matrix-keymap.tx

在这里面可以看到keymap值的计算方式:row << 24 | column << 16 | key-code

(3)key-code可以参考Documentation/input/event-codes.txt文档

按键使用 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am335x-boneblack.dtb

sudo cp arch/arm/boot/dts/am335x-boneblack.dtb /media/kobe/rootfs

生成并更新dtb文件后,可以直接使用按键了

命令hexdump /dev/event0 可以获取按键的事件

共九列:

第六列表示上报事件: 0001 --> EV_KEY; 0000 ---> EV_SYN

第七列表示键值: 0004

第八列表示按键事件: 0001 --> PRESS, 0000 --> RELEASE

相关文章
|
3月前
|
存储 算法 计算机视觉
m基于FPGA的FIR低通滤波器实现和FPGA频谱分析,包含testbench和滤波器系数MATLAB计算程序
在Vivado 2019.2平台上开发的系统,展示了数字低通滤波器和频谱分析的FPGA实现。仿真结果显示滤波效果良好,与MATLAB仿真结果一致。设计基于FPGA的FIR滤波器,利用并行处理和流水线技术提高效率。频谱分析通过离散傅里叶变换实现。提供了Verilog核心程序以示例模块工作原理。
35 4
|
4月前
|
存储 缓存 算法
基于FPGA的二维DCT变换和逆变换verilog实现,包含testbench
基于FPGA的二维DCT变换和逆变换verilog实现,包含testbench
|
4月前
|
算法 关系型数据库 计算机视觉
基于FPGA的9/7整数小波变换和逆变换verilog实现,包含testbench
基于FPGA的9/7整数小波变换和逆变换verilog实现,包含testbench
第7章 符号计算——7.7 符号积分变换
第7章 符号计算——7.7 符号积分变换
【单片机】数码管矩阵显示
【单片机】数码管矩阵显示
82 0
|
算法 数据安全/隐私保护 计算机视觉
m基于FPGA的8点DCT变换verilog实现,包含testbench,并对比matlab的计算结果
m基于FPGA的8点DCT变换verilog实现,包含testbench,并对比matlab的计算结果
263 0
|
机器学习/深度学习 算法 异构计算
基于FPGA的FIR低通滤波器verilog开发,包含testbench测试程序,输入噪声信号使用MATLAB模拟产生
基于FPGA的FIR低通滤波器verilog开发,包含testbench测试程序,输入噪声信号使用MATLAB模拟产生
147 0
【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)
【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)
【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)
|
C语言
STM32矩阵按键
STM32矩阵按键
|
芯片
单片机:矩阵按键(行列法和线翻转法都有)
单片机:矩阵按键(行列法和线翻转法都有)
170 0
单片机:矩阵按键(行列法和线翻转法都有)