zoukankan      html  css  js  c++  java
  • 关于esp32的ADC采集

    对于ADC采集

    程序源码如下:

     1 /* ADC1 Example
     2 
     3    This example code is in the Public Domain (or CC0 licensed, at your option.)
     4 
     5    Unless required by applicable law or agreed to in writing, this
     6    software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
     7    CONDITIONS OF ANY KIND, either express or implied.
     8 */
     9 #include <stdio.h>
    10 #include <string.h>
    11 #include <stdlib.h>
    12 #include "freertos/FreeRTOS.h"
    13 #include "freertos/task.h"
    14 #include "freertos/queue.h"
    15 #include "driver/gpio.h"
    16 #include "driver/adc.h"
    17 
    18 #define ADC1_TEST_CHANNEL (4)
    19 
    20 void adc1task(void* arg)
    21 {
    22     // initialize ADC
    23     adc1_config_width(ADC_WIDTH_12Bit);
    24     adc1_config_channel_atten(ADC1_TEST_CHANNEL,ADC_ATTEN_11db);
    25     while(1){
    26         printf("The adc1 value:%d
    ",adc1_get_voltage(ADC1_TEST_CHANNEL));
    27         vTaskDelay(1000/portTICK_PERIOD_MS);
    28     }
    29 }
    30 
    31 void app_main()
    32 {
    33     xTaskCreate(adc1task, "adc1task", 1024*3, NULL, 10, NULL);
    34 }

      ESP32集成了两个12位SAR(“逐次逼近寄存器”)ADC(模数转换器),并支持18通道(模拟使能引脚)的测量。这些引脚中的一些可用于构建用于测量小型模拟信号的可编程增益放大器。

    ADC驱动程序API目前仅支持ADC1(9个通道,连接到GPIO 32-39)。

      进行ADC读取需要以所需的精度和注意事项设置ADC,然后调用adc1_get_voltage()来读取通道。

    本例程选用adc1task对adc进行初始化设置

        (1)adc1_config_width(),设定捕获宽度,其中ADC_WIDTH_12Bit表示捕获宽度位数,esp32有四种捕获宽度,分别为9bit,10bit,11bit和12bit。

        (2)adc1_config_channel_atten(),设定捕获通道,其中ADC1_TEST_CHANNEL为配置的通道,ADC_ATTEN_11db为设定衰减比(即满量程的电压,11db是满量程时电压为3.9V,其他衰减比看API手册)。
        (3)adc1_get_voltage()用来读取在单个通道上的ADC读数。
    最后在主函数中对adctask进行调用即可。

    程序源码如下;

       烧写程序后,将GPIO32连接到一个可以改变的电压输出口,打开minicom,观察电压输出值,调节电压,观察输出值变化。

    硬件连接如下

     minicom输出如下图所示

    相关知识:AD转换相关函数API接口

  • 相关阅读:
    常用的python模块
    程序人生--世界观
    JQuery与CSS之图片上放置button
    所谓的成就感,想想我们測过的那些功能
    王立平-bmp.compress()
    Android多媒体学习六:利用Service实现背景音乐的播放
    NHibernate3剖析:Mapping篇之集合映射基础(3):List映射
    freeradius 启动报错Refusing to start with libssl version OpenSSL 1.0.1
    超级简单JS网页倒计时代码
    一起talk C栗子吧(第一百一十二回:C语言实例--线程同步概述)
  • 原文地址:https://www.cnblogs.com/noticeable/p/7463411.html
Copyright © 2011-2022 走看看