目录
  • 一、准备工作
  • 二、硬件设计
  • 三、软件设计
  • 四、编译调试

ADC采样

本示例将演示如何在BearPi-HM_Nano 2开发板上使用ADC读取GPIO的电压值。

一、准备工作

参考BearPi-HM_Nano_2十分钟上手教程完成开发环境搭建、代码获取等工作,以及熟悉代码的编译和烧录流程。

二、硬件设计

本案例将使用E53接口引出的GPIO12做为测试GPIO,通过将GPIO12分别与GND和V3.3短接,观察电压变化

三、软件设计

主要代码分析

打开device\bearpi\bearpi_hm_nano2\app\B4_basic_adc\adc_example.c,该函数通过使用IoTAdcRead()函数来读取 ADC_CHANNEL 的数值存储在data中, 读出值为电压值,单位为mv。

static int GetVoltage(void)
{
    unsigned int ret;
    unsigned int data;

    ret = IoTAdcRead(ADC_CHANNEL, &data, IOT_ADC_EQU_MODEL_8, IOT_ADC_CUR_BAIS_DEFAULT, 0xff);
    if (ret != IOT_SUCCESS) {
        printf("ADC Read Fail\n");
    }
    return data;
}

ADC API分析

本案例主要使用了以下API完成ADC采样的功能。

IoTAdcRead()

unsigned int IoTAdcRead(unsigned int channel, unsigned short *data, IotAdcEquModelSel equModel,
                     IotAdcCurBais curBais, unsigned short rstCnt);

描述:

根据输入参数从指定的ADC通道读取一段采样数据。

参数:

参数名描述
channel表示ADC通道。
data表示指向存储读取数据的地址的指针。
equModel表示平均算法的次数。
curBais表示模拟功率控制模式。
rstCnt指示从重置到转换开始的时间计数。一次计数等于334纳秒。值的范围必须从0到0xFF。

四、编译调试

修改 BUILD.gn 文件

修改device\bearpi\bearpi_hm_nano2\app 路径下 BUILD.gn 文件,指定 adc_example 参与编译。

#"B1_basic_led_blink:led_example",
#"B2_basic_button:button_example",
#"B3_basic_pwm_led:pwm_example",
"B4_basic_adc:adc_example",
#"B5_basic_i2c_nfc:i2c_example",
#"B6_basic_uart:uart_example",

运行结果

示例代码编译烧录代码后,按下开发板的RESET按键,通过串口助手查看日志,将GPIO12分别与GND和V3.3短接,观察电压变化

=======================================
*************ADC_example***********
=======================================
vlt:3371mv
=======================================
*************ADC_example***********
=======================================
vlt:3371mv
=======================================
*************ADC_example***********
=======================================
vlt:3373mv
=======================================
*************ADC_example***********
=======================================
vlt:248mv
=======================================
*************ADC_example***********
=======================================
vlt:244mv