Linux GPIO Key

Linux GPIO Key 实现方式

linux gpio key有两种实现方式:

  • 选择单个的gpio作为一个input event来上报,这样的方式的优点是按键比较独立,缺点是如果key比较多会生成比较多的input event;

  • 可以定义gpio key, 给不同的gio选择不同的键值,个人觉得这种方式比较正规,包括遥控按键的上报也是用这种方式。无论使用那种方式,通常只需要修改dts就可以了;

gpio-key 实现原理

gpio-key是基于input架构实现的通用gpio按键驱动,该驱动是基于platform_driver架构,实现了驱动和设备的分离,符合linux设备驱动模型的基本思想。

代码的驱动部分:

drivers/input/keyboard/gpio_keys.c

代码不需要我们修改,只需要解其中的实现流程就好。主要修改的部分是dts文件

dts修改

gpio-keys {

compatible = "gpio-keys";

pinctrl-names = "default";

pinctrl-0 = <&pinctrl_gpio_keys>;

key-a {

label = "Key_A";

gpios = <&gpio2 18 GPIO_ACTIVE_LOW>;

gpio-key;

linux,code = <KEY_A>;

};

};

pinctrl_gpio_keys: gpio_keysgrp {

fsl,pins = <

MX6UL_PAD_SD1_DATA0__GPIO2_IO180x1f0b1/* key_in */

>;

};

MX6UL_PAD_SD1_DATA0__GPIO2_IO18引脚触发后,就可以在"/dev/input/event1"设置读取"A"。

shell检测

cat /dev/input/event0
1

点击按钮时显示如下信息:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值