瑞芯微Rockchip开发者社区
直播中

CDCNKA

8年用户 1231经验值
擅长:385288
私信 关注
[经验]

怎样使用ADC去检测按键输入引脚的电压值呢

本 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 开发指南

更多回帖

发帖
×
20
完善资料,
赚取积分