原来使用了荔枝派nano的Lradc按键,挺好用的。但是在使用过程中发现当采样的数据线太长时,最后采样的电压会飘,导致按键不准,所以引出此文。
一、BS818A
BS818A是一款具有8个触摸按键的触摸解决方案芯片,采用串行接口用2根io线即可实现触摸控制。
当检测到有按键按下时,会在data脚输出低电平,可用来唤醒主机。主机在接收到低电位后,由clock输出时钟信号,并从data脚回读按键值。
二、按键驱动修改
内核是4.15.0-rc8,里面已经有了按键驱动,位于Device Drivers > Input device support > Keyboards->GPIO Buttons,选中它。
我们需要修改这个驱动,但是事先必须把设备树中的gpio配置好。硬件上我用的是PE9,PE10,PE9用作BS818A的data脚,PE10用作BS818A的clock脚。
pio: pinctrl@1c20800 {
......
test_pin1: test_pin@1 {
pins = "PE9";
function = "gpio_in";
};
};
mygpio-key {
compatibl