Skip to main content

ADC电压采样

1. Iconfig配置

以x2000_darwin_factory_defconfig为例. 打开IConfigTool工具,选择配置文件

3

勾选adc驱动

1

2

勾选adc相关辅助命令

4

配置完后保存

5

重新编译配置

bhu@bhu-PC:~/work/build$ make x2000_darwin_factory_defconfig 

bhu@bhu-PC:~/work/build$ make

烧录固件, 没烧录过见烧录说明

开机会自动执行 insmod soc_adc.ko adc_vref=设置的参考电压 ,加载驱动

# lsmod | grep  soc_adc
soc_adc 6625 1 keyboard_adc

soc_adc 相关的源代码见module_driver/soc/x2000/adc目录下的代码

2. ADC shell 命令详解

相关源码见libhardware2/src/cmds下的adc_main.c

cmd_adc get_value <channel> 

功能:读取指定通道的adc值

参数:channel //将要读取adc通道

example:

cmd_adc get_value 0
cmd_adc get_voltage <channel>
功能:读取指定通道的电压值
参数:channel //将要读取adc通道
example:
cmd_adc get_voltage 0
cmd_adc get_vref
功能:获取adc基准电压值
参数:无
example:
cmd_adc get_vref
cmd_adc set_vref <ref_voltage>
功能:设置adc基准电压值
参数:ref_voltage //基准电压值
example:
cmd_adc set_vref 1200

3. ADC 应用接口分析

3.1 API详细介绍

相关源码见libhardware2/src/lib/adc下的adc.c

long adc_enable(unsigned int channle_id)
功能:使能指定的adc通道
参数:channle_id //adc的通道号
返回值:成功:ADC操作句柄
失败:-1
void adc_disable(long handle)
功能:失能对应的adc通道
参数:handle //adc操作句柄
返回值:无
int adc_set_vref(long handle, unsigned int vref)
功能:设置 adc基准电压
参数:handle //adc操作句柄
vref //adc基准电压
返回值:成功:0
失败:负数
int adc_get_vref(long handle)
功能:获取 adc 基准电压
参数:handle //adc操作句柄
返回值:成功:adc基准电压
失败:负数
int adc_get_value(long handle)
功能:获取adc通道采样后的原始值
参数:handle //adc操作句柄
返回值:成功:adc原始值
失败:负数
int adc_get_voltage(long handle)
功能:获取adc通道采样后的电压值,由采样后的原始值和基准电压计算得到
参数:handle //adc操作句柄
返回值:成功:电压值
失败:负数

3.2 使用流程

包含头文件:

#include <libhardware2/adc.h>

adc使用流程:

  1. adc_enable 使能指定的adc通道,获取adc设备句柄
  2. adc_set_vref 设置基准电压
  3. adc_get_value/adc_get_voltage 获取adc原始值或电压值