荔枝派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测试

在这里插入图片描述

  • 彩蛋:既然是输入设备,自然是可以作键盘用的,如果适配了屏幕,并添加为控制台输入,可以通过按键与控制台交互 😃
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
荔枝Zero是一款基于Allwinner H2+芯片的开发板,它支持串口通信。要使用串口功能,你需要安装相应的串口驱动程序。以下是安装串口驱动的步骤: 1. 首先,连接荔枝Zero到电脑上。你可以使用Micro USB线缆将其连接到电脑的USB接口。 2. 打开终端或命令提示符窗口,并执行以下命令以确定荔枝Zero在电脑上的串口设备名称: ``` ls /dev/tty* ``` 在输出中查找类似于"/dev/ttyUSB0"或"/dev/ttyACM0"的设备名称。这是荔枝Zero的串口设备名称。 3. 安装串口通信工具minicom。在终端或命令提示符窗口中执行以下命令: ``` sudo apt-get update sudo apt-get install minicom ``` 4. 打开minicom配置文件。在终端或命令提示符窗口中执行以下命令: ``` sudo minicom -s ``` 5. 在minicom配置界面中,选择"Serial port setup",然后按回车键。 6. 在串口设备设置中,将串口设备名称设置为上一步中找到的荔枝Zero的串口设备名称。例如,如果设备名称为"/dev/ttyUSB0",则在该选项中输入"/dev/ttyUSB0"。 7. 设置波特率为115200,数据位为8位,停止位为1位,校验位为无。 8. 保存并退出minicom配置界面。 9. 现在,你可以使用minicom来进行串口通信了。在终端或命令提示符窗口中执行以下命令: ``` sudo minicom ``` 这将打开minicom界面,并将你连接到荔枝Zero的串口。 以上是在荔枝Zero上安装串口驱动并进行串口通信的步骤。如果你有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值