关于esp32的ADC采集
对于ADC采集
程序源码如下:
/* ADC1 Example
This example code is in the Public Domain (or CC0 licensed, at your option.)
Unless required by applicable law or agreed to in writing, this
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied.
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "driver/gpio.h"
#include "driver/adc.h"
#define ADC1_TEST_CHANNEL (4)
void adc1task(void* arg)
{
// initialize ADC
adc1_config_width(ADC_WIDTH_12Bit);
adc1_config_channel_atten(ADC1_TEST_CHANNEL,ADC_ATTEN_11db);
while(){
printf("The adc1 value:%d\n",adc1_get_voltage(ADC1_TEST_CHANNEL));
vTaskDelay(/portTICK_PERIOD_MS);
}
}
void app_main()
{
xTaskCreate(adc1task, "adc1task", *, NULL, , NULL);
}
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接口
关于esp32的ADC采集的更多相关文章
- 关于ADC采集
对于ADC采集,想问的一些问题 1.如何初始化? 需要初始化 2.哪里可以看到是多少位采集? 3.8位ADC采集的误差是多少? 4.基准电压从哪里取?
- TMS320VC5509片内ADC采集
1. ADC采集比较简单,内部的10位的ADC,AIN0-AIN3的输入,主要是用的CSL的库函数#include <csl_adc.h> ; Uint16 samplestoraage[ ...
- CC2530的ADC采集外部电压
初窥ZIGBEE 要在zigbee的组网中加入烟雾传感器的模块,所以需要用到cc2530的ADC对传感器输出的模拟信号进行采样.下面是自己对实现用CC2530的ADC采集外部电压的程序过程. 以下是A ...
- ADC采集电流相关知识
1.AD电流采样电路,是把电路中的电流用采样元件转换为电压信号,然后用ADC量化转换为相应的数字信号.需要你在被采集端串联一个采样电阻,然后采集采样电阻两端的电压,这样就可以把电流输出变换为电压输出. ...
- 关于右移和除法的关系 , ADC采集电量 ,ADC采集MIC(麦克风)
//////////////////////////////////////////////////////////////////////////////////////////////////// ...
- STM32L15x——ADC采集DMA数据只第一次正确(已解决)
前提:我用的芯片是STM32L系列,可能对其它STM32系列不完全适用,仅供参考! 一.问题描述 我在使用DMA方式读取单ADC单通道采集的数据时,发现只能正确的采集一次数据,后来的就一直与第一次的相 ...
- stm8 同时使用dac和adc 采集异常,电平异常
这种现象在早期的 使用stm8l151的dac 和adc相互干扰很厉害.后来通过读手册发现 相邻三个引脚一般不建议同时使用dac和adc.也就是这两种功能,引脚分配至少隔离三个引脚.内部为了节省成本 ...
- STM32F103VET6 ADC采集64点做FFT变换
http://www.stmcu.org/module/forum/thread-598459-1-11.html http://bbs.21ic.com/icview-589756-1-1.html ...
- STM32F405的内部ADC采集
1. ADC的初始化部分基本一致,下面是引脚复用配置 void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc) { GPIO_InitTypeDef GPIO_Ini ...
随机推荐
- vue中.sync 修饰符
一直以来,都不太明白.sync的用法,归根结底原因在于,没有仔细阅读“.sync修饰符”. 正好,最近在拿一个项目练手,然后使用了elment-ui,然后在用到dialog的时候,属性visible是 ...
- NodeJS client code websocket
var WebSocketClient = require('websocket').client; var client = new WebSocketClient(); client.on('co ...
- ORACLE_11G归档空间满,由于数据库装完后使用的是默认空间是闪回区
1.首先根据alert跟踪日志发现归档空间满,路径大致如下:cd $ORACLE_BASE/diag/rdbms/jsswgsjk/jsswgsjk1/tracetail -f alert_jsswg ...
- spark java.lang.OutOfMemoryError: unable to create new native thread
最近迁移集群,在hadoop-2.8.4 的yarn上跑 spark 程序 报了以下错误 java.lang.OutOfMemoryError: unable to create new native ...
- shell数组的使用
定义: array=(1 2 3) echo ${array[0]} echo ${array[1]} echo ${array[2]} echo ${array[*]} 所有元素 echo $ ...
- Linux命令:readonly
readonly [-aAf] [name[=value] ...] or readonly -p -A 表示后面的name变量都是关联数组 -a 表示后面的name变量都是index数组 -f 表示 ...
- 译:SOS_SCHEDULER_YIELD类型等待在虚拟机环境中的增多
原文出处:Increased SOS_SCHEDULER_YIELD waits on virtual machines 注: 原文的用词是Increased,想译作增强(增长),或者加强,这么译起来 ...
- java.lang.String (JDK1.8)
String类实现了java.io.Serializable, Comparable<String>, CharSequence这三个interface. 看了下这三个interface中 ...
- Array.prototype.push.apply(a,b)和Array.prototype.slice.call(arguments)
Array.prototype.push.apply(a,b) 时常看到在操作数组的时候有这样的写法: var a = [1,2,3]; var b = [4,5,6]; a.push.apply(a ...
- oralce 中union 和union all 的简单使用说明
union:对两个结果集进行合并操作:不包括重复行:同时进行默认规则的排序: union all:对两个结果集进行合并操作:包括重复行:不排序: