高端网站建设上盐城网站建设有限公司

张小明 2026/3/13 11:25:50
高端网站建设上,盐城网站建设有限公司,移动网站开发 王府井,福州高端网站制作目录 目录 前言 DTS配置的参考 内核配置的参考 验证测试的参考 常见问题 驱动匹配失败 按键无响应 按键误触发或重复触发 无法唤醒系统 键值上报错误 总结 前言 矩阵键盘#xff08;Matrix Keypad#xff09;是一种通过行列扫描实现多按键识别的电路设计#x…目录目录前言DTS配置的参考内核配置的参考验证测试的参考常见问题驱动匹配失败按键无响应按键误触发或重复触发无法唤醒系统键值上报错误总结前言矩阵键盘Matrix Keypad是一种通过行列扫描实现多按键识别的电路设计可显著减少I/O占用。其核心原理与实现方法如下1. 结构设计将按键排列为行Row和列Column的矩阵形式每个按键位于行线与列线的交叉点。例如4x4矩阵仅需8个I/O4行4列即可检测16个按键。2. 电平检测机制按键闭合时对应行线与列线导通通过扫描行列电平变化确定按键位置。3. 扫描方法逐行扫描法步骤1所有列线置低电平检测行线是否有低电平判断是否有按键按下。步骤2逐列置低电平检测行线变化定位具体按键。线反转法通过交替反转行/列电平状态结合逻辑运算快速定位按键适用于高速扫描场景。矩阵按键是嵌入式系统中常用的输入设备其中Linux内核自带的驱动核心源码位于linux-x.xx/drivers/input/keyboard/matrix_keypad.c原生的参考文档路径位于linux-x.xx/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt和linux-x.xx/Documentation/devicetree/bindings/input/matrix-keymap.txt。DTS配置的参考matrix-keypad { compatible gpio-matrix-keypad; /* 匹配驱动名称 */ debounce-delay-ms 60; /* 按键消抖延时推荐10~20ms需要根据具体硬件调整 */ col-scan-delay-us 60; /* 列扫描间隔推荐10~50us避免信号串扰 */ linux,no-autorepeat 1; /* 禁止按键自动重复 */ linux,wakeup 0; /* 支持系统唤醒 */ wakeup-source 0; gpio-activelow 1; /* GPIO低电平有效 */ drive-inactive-cols 0; /* 在扫描过程中驱动非活动列默认情况下是将非活动列转换为输入 */ keypad,num-rows 4; /* 行GPIO引脚数量 */ keypad,num-columns 4; /* 列GPIO引脚数量 */ pinctrl-names default; pinctrl-0 pinctrl_row_gpios; row-gpios /* 行GPIO引脚包含引脚编号与电平属性 */ gpioe 5 GPIO_ACTIVE_HIGH gpioc 22 GPIO_ACTIVE_HIGH gpioc 26 GPIO_ACTIVE_HIGH gpioc 27 GPIO_ACTIVE_HIGH ; col-gpios /* 列GPIO引脚包含引脚编号与电平属性 */ gpioc 16 GPIO_ACTIVE_HIGH gpioc 17 GPIO_ACTIVE_HIGH gpioc 18 GPIO_ACTIVE_HIGH gpioc 19 GPIO_ACTIVE_HIGH ; linux,keymap /* 键码映射格式为行 列 键值需转换为32位数据行24 | 列16 | 键值 */ 0x00000074 /* row 0, col 0 */ 0x00010027 /* row 0, col 1 */ 0x0002001c /* row 0, col 2 */ 0x0003006c /* row 0, col 3 */ 0x0100003a /* row 1, col 0 */ 0x0101008b /* row 1, col 1 */ 0x01020067 /* row 1, col 2 */ 0x01030008 /* row 1, col 3 */ 0x02000009 /* row 2, col 0 */ 0x02010010 /* row 2, col 1 */ 0x02020011 /* row 2, col 2 */ 0x02030012 /* row 2, col 3 */ 0x03000013 /* row 3, col 0 */ 0x03010014 /* row 3, col 1 */ 0x03020015 /* row 3, col 2 */ 0x03030016 /* row 3, col 3 */ ; };内核配置的参考CONFIG_INPUT_KEYBOARDy CONFIG_KEYBOARD_MATRIXy验证测试的参考1. 烧录固件后主控端接入矩阵键盘正常开机命令行终端可以输入dmesg | grep matrix-keypad如下# dmesg | grep matrix-keypad [0.873870] input: matrix-keypad as /devices/platform/matrix-keypad/input/input12. 确认输入设备注册状态命令行终端可以输入cat /proc/bus/input/devices如下# cat /proc/bus/input/devices ... I: Bus0019 Vendor0000 Product0000 Version0000 N: Namematrix-keypad P: Phys S: Sysfs/devices/platform/matrix-keypad/input/input1 U: Uniq H: Handlersevent1 B: PROP0 B: EV13 B: KEY800 101080 0 4000080 107f0300 B: MSC10 ...3. 使用evtest工具实时监测按键事件上报验证键值与触发逻辑如下# evtest /dev/input/event1 Input driver version is 1.0.1 Input device ID: bus 0x19 vendor 0x0 product 0x0 version 0x0 Input device name: matrix-keypad Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 8 (KEY_7) Event code 9 (KEY_8) Event code 16 (KEY_Q) Event code 17 (KEY_W) Event code 18 (KEY_E) Event code 19 (KEY_R) Event code 20 (KEY_T) Event code 21 (KEY_Y) Event code 22 (KEY_U) Event code 28 (KEY_ENTER) Event code 39 (KEY_SEMICOLON) Event code 58 (KEY_CAPSLOCK) Event code 103 (KEY_UP) Event code 108 (KEY_DOWN) Event code 116 (KEY_POWER) Event code 139 (KEY_MENU) Event type 4 (EV_MSC) Event code 4 (MSC_SCAN) Properties: Testing ... (interrupt to exit) Event: time 1686704106.478928, type 4 (EV_MSC), code 4 (MSC_SCAN), value 03 Event: time 1686704106.478928, type 1 (EV_KEY), code 108 (KEY_DOWN), value 1 Event: time 1686704106.478928, -------------- SYN_REPORT ------------ Event: time 1686704106.738950, type 4 (EV_MSC), code 4 (MSC_SCAN), value 03 Event: time 1686704106.738950, type 1 (EV_KEY), code 108 (KEY_DOWN), value 0 Event: time 1686704106.738950, -------------- SYN_REPORT ------------常见问题驱动匹配失败1. 将检查设备树compatible属性是否与驱动匹配驱动表为“gpio-matrix-keypad”。2. 确认GPIO引脚编号是否正确是否与其它设备冲突。3. 查看内核日志dmesg | grep matrix-keypad排查资源分配失败原因。按键无响应1. 排除硬件的问题比如按键是否已经损坏或接触不良等。2. 验证GPIO配置方向行线为输入、列线为输出电平属性与硬件一致。3. 调整DTS配置的debouce-delay-ms消抖时间避免因消抖过短或过长导致检测失败。4. 检查键码映射配置确保linux,keymap的32位格式正确行、列、键值未颠倒。5. 通过cat /proc/bus/input/devices确认输入设备已注册。按键误触发或重复触发1. 增大debounce-delay-ms消抖延迟推荐15~20ms需要根据实际具体硬件调整。2. 启用linux,no-autorepeat属性禁止按键自动重复功能。3. 调整col-scan-delay-us扫描间隔减少信号串扰导致的误检测。4. 检查硬件电路排查GPIO引脚虚焊、供电电源纹波干扰等问题。无法唤醒系统1. 确保设备树配置linux,wakeup属性。2. 验证行GPIO中断支持唤醒功能设备树中GPIO需要配置wakeup-source属性。3. 检查内核电源管理配置确保中断唤醒功能已启用CONFIG_PM_SLEEPy键值上报错误1. 对照Linux标准键码表linux-x.xx/include/linux/input.h确保键值定义正确。2. 检查matrix_keymap_data的keymap数组确保行列与键值映射对应。3. 通过evtest工具测试执行evtest /dev/input/eventXX为输入设备编码按压按键查看是否上报正确事件。总结矩阵键盘作为一种在MCU或SoC片外设备中常见的键盘布局其排布类似于矩阵。在电路设计中 矩阵键盘通过行列式结构优化了MCU或SoC的I/O资源使用可以满足更多的外部输入需求可解决单独控制每个按键会消耗大量的IO资源的问题。因此矩阵键盘一定程度上可有效地节约了资源常见的矩阵键盘尺寸有4x4和8x8而其中4x4尺寸的矩阵键盘应用最为广泛。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

福州外贸建站长治网站开发

Qwen3-30B-A3B-Instruct-2507:256K上下文升级,大模型长文本处理能力再突破 【免费下载链接】Qwen3-30B-A3B-Instruct-2507 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3-30B-A3B-Instruct-2507 导语:阿里达摩院旗下Qwen系…

张小明 2026/3/5 4:03:50 网站建设

徐州免费网站制作上海移动云网站建设

文章目录系统截图项目简介大数据系统开发流程主要运用技术介绍爬虫核心代码展示结论源码文档获取定制开发/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统截图 Python_6z73z1t1_ 论文大数据基于机器学习的电商评论情感分析 项目简介 本次研…

张小明 2026/3/5 4:03:52 网站建设

河源网站推广新产品推广

电机控制器,IGBT结温估算(算法模型)国际大厂机密算法,多年实际应用,准确度良好…… 能够同时对IGBT内部6个三极管和6个二极管温度进行估计,并输出其中最热的管子对应温度。 可用于温度保护,降额…

张小明 2026/3/5 4:03:52 网站建设

网站qq代码生成模具厂咋做网站

前言 弹窗对话框是商城应用中重要的交互组件,用于确认操作、展示提示信息、收集用户输入等场景。一个设计良好的弹窗组件需要在吸引用户注意力的同时不造成过度打扰,并提供清晰的操作指引。本文将详细介绍如何在Flutter和OpenHarmony平台上开发各类弹窗对…

张小明 2026/3/5 4:03:53 网站建设

上海怎样建设网站网站建设的领军 18年网站建设

MailView:终极Rails邮件预览工具完整指南 【免费下载链接】mail_view Visual email testing 项目地址: https://gitcode.com/gh_mirrors/ma/mail_view 在Rails应用开发过程中,邮件模板的调试往往是最令人头疼的环节之一。每次修改后都需要发送测试…

张小明 2026/3/5 4:03:54 网站建设

无锡网站建设 首选无锡立威云商一 网站建设总体目标

5个关键步骤:用downkyi完美解决HDR视频播放难题 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等)…

张小明 2026/3/5 4:03:57 网站建设