ESP32之ADC采样

ops/2025/3/14 10:38:16/

        ADC采样即模数转换器,将模拟数据转换为数字数据。为什么要做这样的转化呢?想想原因是啥呢?对单片机来说肯定是数字信号处理方便啊。用ADC的话单片机肯定好处理一些,外界的数据肯定是不一样的,那么我们转换的话肯定是转成数字信号比较方便运算处理。那么我们进行接下来的操作步骤:

 1.资源分配

        ADC采样的时候需要先进行资源分配,看一下相关函数:

esp_err_t adc_oneshot_new_unit(const adc_oneshot_unit_init_cfg_t *init_config, adc_oneshot_unit_handle_t *ret_unit)

参数1:const adc_oneshot_unit_init_cfg_t *init_config,显然是我们的我们的配置内容,内容分别是

typedef struct {adc_unit_t unit_id;              //选择ADC组,ESP32C3开发板有ADC1和ADC2adc_oneshot_clk_src_t clk_src;  //选择时钟源adc_ulp_mode_t ulp_mode;       //选择是否使用低功耗模式
} adc_oneshot_unit_init_cfg_t;

参数2:dc_oneshot_unit_handle_t *ret_unit这个参数是ADC的handle

2.配置通道

        因为ADC转换器有多个通道,所以我们需要配置相应的通道才能准确的告诉单片机是哪个引脚,根据下图我们使用ADC1的通道0

esp_err_t adc_oneshot_config_channel(adc_oneshot_unit_handle_t handle, adc_channel_t channel, const adc_oneshot_chan_cfg_t *config)

参数1:ADC的句柄

参数2:通道号

参数3:对ADC通道的配置

综合来说对ADC1的配置如下:

void ADC_config_init(void)
{const adc_oneshot_unit_init_cfg_t initadc_config={.clk_src=SOC_MOD_CLK_APB,.ulp_mode=ADC_ULP_MODE_DISABLE,.unit_id=ADC_UNIT_1};adc_oneshot_new_unit(&initadc_config, &adc_return);const adc_oneshot_chan_cfg_t chanle_config={.atten=    ADC_ATTEN_DB_11, .bitwidth=ADC_BITWIDTH_12};adc_oneshot_config_channel(adc_return, ADC_CHANNEL_0,& chanle_config);
}

 下面是读取的ADC值的代码:

adc_int_t ADC_get_value(void )
{adc_int_t out_raw;adc_oneshot_read(adc_return, ADC_CHANNEL_0, &out_raw);return out_raw;}

接下来到主函数中去调用:

extern "C" void app_main(void)
{ADC_config_init();int adc_value=0;while(1)
{adc_value=ADC_get_value();ESP_LOGI(TAG,"ADC_value%d",adc_value);vTaskDelay(10 );}}


http://www.ppmy.cn/ops/165641.html

相关文章

如何查看g++最高支持到C++的哪个版本

2025年3月13日,周四晚上 要查看当前安装的 g 编译器支持的最高 C 版本,可以通过以下方法实现: 1. 查看 g 版本 首先通过命令获取当前 g 的版本号: g --version或更详细的构建信息: g -v输出示例(假设当前…

【2025】基于springboot+vue的网络安全科普平台(源码、万字文档、图文修改、调试答疑)

基于 Spring Boot Vue 的网络安全科普平台通过整合前后端技术,实现了网络安全知识的信息化和智能化传播。系统为管理员、科普民警和用户提供了丰富的功能,提高了公众的网络安全意识和防范能力,促进了网络安全知识的普及。系统功能结构图如下…

基于deepseek的图像生成系统

目录 问题 核心思路 pollinations 提示词 基于deepseek的图像生成系统 项目说明 详细说明 1. 注册流程 2. 登录流程 3. 图片生成流程 4. 图片下载流程 项目结构 代码实现 1. 配置文件 config.py 2. 数据库模型 models.py 3. 解决循环引用 exts.py 4. 登录和…

Axure PR 9 中继器 04 条件查询

​大家好,我是大明同学。 接着上期的内容,这期内容,我们来了解一下Axure中继器图表条件查询。 预览地址:https://rtb1qx.axshare.com 条件查询 1.打开上期RP 文件,在元件库中拖入一个文本框,在样式窗格中…

【蓝桥杯—单片机】第十五届省赛真题代码题解析 | 思路整理

第十五届省赛真题代码题解析 前言赛题代码思路笔记竞赛板配置建立模板明确基本要求显示功能部分频率界面正常显示高位熄灭 参数界面基础写法:两个界面分开来写优化写法:两个界面合一起写 时间界面回显界面校准校准过程校准错误显示 DAC输出部分按键功能部…

二叉树中堆的实现

1 堆的声明和定义 typedef int HPDateType; typedef struct Heap {HPDateType* arr;int size;int capcity; }HP; 与顺序表相似,我们需要一个数组,有效空间大小,有效元素个数 2 堆的初始化 void HPInit(HP*php) {assert(php);php->arr …

第十一届蓝桥杯单片机国赛

什么?4T模拟赛和省赛做起来轻轻松松?不妨来挑战一下第十一届国赛,这一届的国赛居然没考超声波、串口通信!只要你正确地理解了题目的意思,规避出题人挖的坑,拿个国一轻轻松松。 附件:第十一届蓝桥…

socket编程与TCP协议

如果你想和远方的朋友通电话,但是,没有办法直接把自己的声音放在电线上变成电流信号,你需要使用电话机拿起听筒拨号,而这个电话就是Socket,它让你简单方便地完成电流通话,从我们编程的角度来看,…