licheepi nano添加BS818A触摸按键

本文介绍了如何在licheepi nano上使用BS818A触摸按键替换原有的LRADC按键,由于LRADC按键在数据线过长时存在精度问题。BS818A是一款8键串行接口触摸芯片,通过2根IO线控制。文章详细讲述了内核驱动的修改,包括设备树配置、中断处理函数的调整以及生成所需的clock波形。最终,成功在licheepi nano上编译并测试了新的触摸驱动,能够识别8个不同按键。
摘要由CSDN通过智能技术生成

原来使用了荔枝派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
分享一套基于BS818A的八位电容触摸按键方案 Altium Designer画的原理图和PCB图如下: 成品pcb正面和背面: 元件清单: 1.触发关闭的动作从中断it文件中拿出。 某些情况下,可能出现设定左右中断后halt过程中。突然进入中断,关闭中断,导致再也无法唤醒。 2.代码里面放一个计数器,计算唤醒的次数。 3.ADC 的while(1)等待需要做一个超时限制。 4.整机需要RTC唤醒,或者看门狗么? 5.需要减少唤醒功耗。 第一次更新修改部分: 1.增加开机后的debug显示。 2.关闭初始化后的debug。 3.增加一个次数的变量。增加一个唤醒次数的变量。 4.增加检测detect引脚,触发debug输出的代码。 5.修改err显示值的设定范围。---------------------------- 6.修改电池电压的获取时间。---------------------------- 7.关闭屏幕的时候,按照正确的流程来。将多余的电留在屏幕电容里面上,估计可以减少对启动电流的需求。 第二次更新修改部分: 1.修改detect pin输出的debug信息。========= 2.增加独立watchdog。========= 3.显示时间增加到5秒========== 4.修改option 代码为 00 00 00 03 00 00 00 00 ,iwatchdog 由硬件启动,halt后停止,关闭代码读取。=========== 5.增加reset次数记录和显示。 PCB空板使用说明 1.焊接电池座时,注意焊盘正负极。 2.根据自己的需要,在按键上覆盖按键面板材料。 3.J1跳线用于测试整机功耗。 4.J11跳线用于测试芯片的工作模式(串行,并行) 5.J13跳线用于测试芯片的低功耗模式(会影响按键扫描速度) 6.整个板子可以根据需要,从中间切开,分成单独的芯片模块和MCU模块。以便使用其他方案驱动。 7.J12为STM8L的SWIM接口。 8.在粘接压克力等面板到PCB上时,建议使用3M的468MP无基材胶。 附件内容截图:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值