本 demo 主要介绍一个基于 ADC 的按键功能,使用 ADC 检测按键输入引脚的电压值,根据不同的分压值判断相应的按键是否按下
硬件连接
本 demo 基于 BL706_AVB 开发板,连接方式如下:
分压电路:
软件实现
软件代码见 examples/adc/adc_key
配置 ADC 设备时钟源,见 bsp/board/bl706_avb/clock_config.h
配置 ADC 设备复用引脚,见 bsp/board/bl706_avb/pinmux_config.h
使能 BSP_USING_ADC0 并配置 ADC 设备配置,见 bsp/board/bl706_avb/peripheral_config.h
首先调用 adc_register 函数注册 adc_key 设备,当前注册为 ADC0
然后通过 find 函数找到设备对应的句柄,保存于 adc_key 句柄中
然后使用 device_open 以轮询模式来打开 adc_key 设备,调用 device_control 完成 ADC 相关的配置
最后调用 adc_channel_start 启用ADC的转换
调用 device_read 读取 adc_key 设备信息保存到 result_val 结构体中
调用 get_adc_key_value 函数获取当前的键值和电压值
编译和烧录
CDK工具编译
打开项目中提供的工程文件:adc_key.cdkproj
参照 Windows 下使用 CDK (类 MDK Keil)开发指南 的步骤编译下载即可
命令行编译
实验现象
本实验依次按下开发板上的 SW1 ~ SW5 会得到不同的电压值:
key 0: 0V 左右
key 1: 0.1V 左右
key 2: 0.2V 左右
key 3: 0.3V 左右
key 4: 0.43V 左右
实际运行结果如下图所示:
原作者:BL_MCU_SDK 开发指南
|