荔枝派zero适配内核驱动:按键输入设备(LRADC)

参考:https://blog.csdn.net/qq_28877125/article/details/123218751
参考:https://whycan.com/t_2691.html#p21548

概述

LRADC全称“低分辨率模拟数字转换器”,就是分辨率较低的ADC,可以通过电阻分压来识别按键,单引脚可以外接多个按键,节省引脚资源(普通ADC也可以做按键识别,但会浪费性能,也没有设计相关中断)

下图为荔枝派zero的原理图(全志v3s),6位分辨率(0~64)

请添加图片描述

AVCC电压为3V,当VOL+按下时,通过电阻分压,KEYADC0读取到的电压为3/106.8x6.8≈0.191V;当VOL-按下时,KEYADC0读取到的电压为3/115x15≈0.391V;以此类推,通过检测电压即可确定按下的按键

设备树修改

  • 注意要在dts文件开头添加头文件(否则会报错找不到KEY_SELECT等定义)

修改sun8i-v3s-licheepi-zero.dts,添加配置lradc节点

#include <dt-bindings/input/input.h>

&lradc {
        vref-supply = <&reg_vcc3v0>;
        status = "okay";

        button@200 {
                label = "KEY_C"; // 丝印"+"
                linux,code = <KEY_C>;
                channel = <0>;
                voltage = <200000>;
        };

        button@400 {
                label = "KEY_V"; // 丝印"-"
                linux,code = <KEY_V>;
                channel = <0>;
                voltage = <400000>;
        };

        button@600 {
                label = "Select"; // 丝印SELECT
                linux,code = <KEY_SELECT>;
                channel = <0>;
                voltage = <600000>;
        };

        button@800 {
                label = "Enter"; // 丝印START
                linux,code = <KEY_ENTER>;
                channel = <0>;
                voltage = <800000>;
        };
};

上述lradc节点的定义在sun8i-v3s.dtsi,无需修改

		lradc: lradc@1c22800 {
			compatible = "allwinner,sun4i-a10-lradc-keys";
			reg = <0x01c22800 0x400>;
			interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
			status = "disabled";
		};

内核配置

默认已经勾选上,检查此项即可

  • 通过在内核中查找"allwinner,sun4i-a10-lradc-keys"属性也可以确定使用的驱动文件,即drivers/input/keyboard/sun4i-lradc-keys.c,若感兴趣可以自行研究源码

在这里插入图片描述

基础测试

驱动会完成lradc的初始化,并在/dev/input/下注册输入设备,通过hexdump即可完成简单的测试

在这里插入图片描述

应用层使用

通过hexdump调试不太方便直观,可以写个简单的应用层app读取/dev/input/eventx并处理

或是直接使用evtest.c编译测试(https://elinux.org/images/9/93/Evtest.c),将源码下载到docker,调用交叉编译工具编译即可,将生成的evtest拷贝到开发板测试

/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc Evtest.c -o evtest

在这里插入图片描述

evtest测试

在这里插入图片描述

  • 彩蛋:既然是输入设备,自然是可以作键盘用的,如果适配了屏幕,并添加为控制台输入,可以通过按键与控制台交互 😃
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值