网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 模拟技术 >

基于博流BL606P音视频开发板的ADC Key按钮例程

时间:2023-05-22 11:09

人气:

作者:admin

标签: 音视频  按键  开发板  key  adc 

导读:本文是关于开发者 kit7828 基于BL606P-DVK开发板实战开发的系列文章中的第三篇,主要介绍了ADC Key按钮例程,后面还会持续更新该开发者的测评内容,敬请期待!...

编辑语:

芯片开放社区(OCC)面向广大开发者推出应用实战系列内容,通过分享开发者实战开发案例,总结应用开发经验,梳理开发中的常见问题及解决方案,为后续参与的开发者提供更多参考与借鉴。

本文是关于开发者 kit7828基于BL606P-DVK开发板实战开发的系列文章中的第三篇,主要介绍了ADC Key按钮例程,后面还会持续更新该开发者的测评内容,敬请期待!

BL606P的ADC按键都接在IO管脚上的GPIO16,需要设置跳线帽。根据分压电阻网络获取不同的电压值,通过AD转换值区分按下了哪个按键。

01硬件及连接

根据官方提供的资料,可以看到如下的原理图

20cd2eaa-f84c-11ed-90ce-dac502259ad0.png

ADC的管脚使用的是GPIO16,需要设置跳线帽。

KEY_IN通过FPC连接线连接至KEY

20e535ea-f84c-11ed-90ce-dac502259ad0.png

而key连接至按键电阻分压网络

20f89f54-f84c-11ed-90ce-dac502259ad0.png

通过不同大的分压,确定哪个按键按下

02软件实现

平头哥官网给出的ADC例程

210d3216-f84c-11ed-90ce-dac502259ad0.png

具体实现代码

212d9614-f84c-11ed-90ce-dac502259ad0.png

CDK中具体代码为:

2.1 设置管脚

void adcpin_init(void)
{
csi_pin_set_mux(GPIO_PIN_16, GPIO16_ADC_CH8);
}

2.2 ADC初始化

void adckey_Init()
{
adc.port = 8;
adc.config.sampling_cycle = 100;
    hal_adc_init(&adc);
}

2.3 按键检测代码

#define KEY_NOTHING19

uint16_t GetKey()
{
//持续检测按键次数
#define CHECKNUM 10

uint32_t value;
uint16_t kval=0;
uint16_t oldkey=KEY_NOTHING,i=0;

hal_adc_value_get(&adc, &value, HAL_WAIT_FOREVER);
kval = (value & 0xffff)>> 9;

if(kvalCHECKNUM)i=CHECKNUM;
}
}
else oldkey=KEY_NOTHING;

return KEY_NOTHING;
}
){>

2.4 按键判定代码

keyval = GetKey();
if( keyval < 19)
printf("Key Pressed:  %d 
", keyval);

aos_msleep(5);
switch (keyval) {
case 0:
printf("K4 Pressed. 
");
break;
case 3:
printf("K3 Pressed. 
");
break;
case 8:
printf("K6 Pressed. 
");
break;
case 11:
case 12:
printf("K5 Pressed. 
");
break;
case 17:
printf("K7 Pressed. 
");
break;
}

03运行后效果

2143021a-f84c-11ed-90ce-dac502259ad0.png

按键检测过程中,由于运用ADC检测电压,会出现浮动情况,比较好的解决办法是多读数几次,取平均值。

审核编辑:汤梓红

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信