2

HarmonyOS技术社区 · 2020年11月11日

实现S1,S2,User三个物理按键的独立事件-上(解决思路分析)

Huawei IoT

上一篇帖子《实现物理按键的“长按事件”(按键通用框架 V0.0.2)》中开源了 DTButton – V0.0.2 的完整代码,这个版本的实现完全封装了Hi3861的原生SDK,实现了开箱即用,所见即所得。然而,相信大家也发现了一个有趣的现象:S1, S2 和 User 三个物理按键同时对应了 GPIO_5 端口。

图片.png

程序中将 GPIO_5 作为按键端口连接使用后,无论按下 S1,S2,User 中的哪一个都会触发事件,就好像“同一个 GPIO 按键有了3个不同分身”。为什么会这样呢?因为在硬件连接上,这三个物理按键确实共用了 GPIO_5 ,所以才有了这个问题。

那么,怎么解决这个问题呢?

就目前来看,想要区分 S1,S2 和 User 只能从电气特性来入手了,根据上图中黄色下划线处的提示翻看原理图《HiSpark_WiFi_IoT_OLED_VER.A》,可以发现 S1 和 S2 的连接如下:

图片.png

明显可知:S1 和 S2 按下之后红框位置 switch 处的电压肯定会发生变化,并且 S1 按下后的电压与 S2 按下后的电压不同。

所以,可以考虑通过检测电压的方式来判断究竟哪个键被按下了!!!

看起来是不是有点疯狂!然而,确实可以这么解决问题。

通过实验发现这 3 个物理按键按下后的电压范围大致如下:

图片.png

并且,通过查阅文档《Hi3861V100/Hi3861LV100 设备驱动 开发指南》中的第 5 章可以找到读取 ADC 值的 API 接口,以及 ADC 值到电压值的转换公式:

图片.png

问题:ADC 是什么?
ADC 指的是 Analog-to-Digital Convertor,即:模/数转换器。

在这个问题中,3 个物理按键的电压模拟值会被 ADC 转换为数字值(ADC值),并且电压值和 ADC 值是单纯的线性转换关系,所以,通过检测 ADC 值的变化就可以判断被按下的物理按键。

将表一中的电压范围通过公式转换为 ADC 范围:

图片.png

有了这张表之后,离解决问题就更近了一步,接下来看看相关 API 接口的示例:调用 hi_adc_read() 读取通道7的 ADC 值。

图片.png

函数 hi_adc_read() 第一个参数用于指定需要读取的 ADC 通道,第二个参数用于保存读取的 ADC 值。

对于我们这个问题来说,最关键的就是要知道 GPIO_5 对应的 ADC 通道是哪一个。这时可以查阅文档《Hi3861V100/Hi3861LV100/Hi3881V100 WiFi芯片 用户指南》,在第 6 章中可以找到下面的表格:

图片.png

表6-2中红框部分的对应关系指出:由于 Hi3861 数字管脚有限,故 GPIO_5 与 ADC_2 复用同一管脚。

So! 在代码层面,可以通过 hi_adc_read() 读取 HI_ADC_CHANNEL_2 处的 ADC 值,进而判断 S1,S2,User 中被按下的按键。

OK!所有障碍已被扫清,这时可以用代码描述了:

图片.png

很显然,每次调用 GetSSU() 即可知道是否有键被按下,以及具体哪个键被按下。

图片.png

看到此处,问题已彻底解决!!

PS:所查阅的文档以及最终示例代码均可在附件中下载。

Enjoy it!

获取原文资源包


作者:唐佐林
想了解更多内容,请访问:
51CTO和华为官方战略合作共建的鸿蒙技术社区
https://harmonyos.51cto.com#jssq

2 阅读 919
收藏 0
推荐阅读
华为物联网操作系统LiteOS内核教程02-HelloWorld 端侧AI进化论:HUAWEI HiAI Foundation的奇妙旅程 使能全场景智慧生态,HUAWEI DevEco 2.0 创新来袭! 升级芯片限制,美国把华为逼上了绝路? IOT操作系统分析与比较 Hi3861_WiFi IoT工程:理解IoT外设控制模块
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息
  • 用户指南 · 用户协议 · 隐私政策
  • 关于我们 · 联系合作
  • 粤ICP备18004469号
  • 粤公网安备 44030502008014号
  • 版权所有 © 2024 极术社区
  • 由 SegmentFault 提供技术支持

  • 友情链接
    • 安谋科技
    • 安创空间
    • 开源中国
    • InfoQ
    • 边缘计算社区
    • 21IC 电子网
    • HarmonyOS 技术社区
    • 电子芯吧客
    • CSDN
    • 全志在线
    • 芒果派
    • 深度强化学习实验室
    • LiveVideoStack
    • 智东西

玻璃钢生产厂家西安玻璃钢大型雕塑云南玻璃钢花盆批发商场dp点春季美陈布置沈阳户内玻璃钢雕塑制作沧州玻璃钢托马斯雕塑嘉祥玻璃钢蔬菜雕塑广州玻璃钢雕塑生产中国台湾玻璃钢雕塑模型山西高质量玻璃钢雕塑制作扬州玻璃钢雕塑景观设计许昌校园玻璃钢雕塑定制玻璃钢雕塑价格图片西安牢固玻璃钢座椅雕塑漯河玻璃钢花盆供应商场美陈 礼盒永川玻璃钢人物雕塑售卖玻璃钢雕塑巩义玻璃钢智能雕塑安徽玻璃钢雕塑供货商安徽学校玻璃钢雕塑制作商场主题创意商业美陈报价济宁市玻璃钢人物雕塑生产厂家太康玻璃钢雕塑费用上海商场招聘美陈师陕西玻璃钢仿真水果雕塑厂家北京水果玻璃钢雕塑供应商沈阳玻璃钢雕塑之家武威玻璃钢动物雕塑设计宁乡长沙玻璃钢雕塑厂家代理玻璃钢雪山雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化