// static void continuous_adc_init(uint16_t adc1_chan_mask, uint16_t adc2_chan_mask, adc_channel_t *channel, uint8_t channel_num) // { // esp_err_t ret = ESP_OK; // assert(ret == ESP_OK); // adc_digi_init_config
adc1_config_width(ADC_WIDTH_BIT_12); // 设置 ADC 分辨率(12 位) adc1_config_channel_atten(ADC1_CHANNEL_6, ADC_ATTEN_DB_11); // 设置通道和衰减 b. 启用 DMA I2S 外设驱动:ESP32 的 ADC DMA 通常借用 I2S 接口实现,需调用专用库: #include <driver/i2s.h> i2s_config_t i2s_config = {...
每个ADC单元支持两种工作模式,ADC单读模式和ADC连续(DMA)模式。ADC单读模式适用于低频采样操作。ADC连续(DMA)读模式适用于高频连续采样动作。 从一个没有连接到任何信号的引脚读取ADC是随机的。应该在读取之前配置ADC。注意ADC1/2的配置方式是不一样的。 对于ADC1,可以通过调用adc1_config_width()和adc1_config_ch...
adc_dma_config.adc1_chan_mask |= BIT(channel2);adc_pattern[0] = { .atten = ADC_ATTEN_DB...
1.3 ADC的采样模式 每一个ADC都支持两个采样模式:ADC单次采样模式和ADC连续采样(DMA)模式。 ADC单次采样模式适用于低频采样 ADC连续采样(DMA)模式适用于高频连续采样 1.4 ADC的衰减 如果对于ESP32单片机的采集电压过大,而ADC的衰减也不是合适的值,ADC将对电压采集无效,而通过更高设置的电压衰减越高,能读取的电压...
上一份自己稍微修改的最后测试的adc_dma_example_main.c源码 针对自己的板子只有一个 ADC 接口进行代码精简 增加实际电压值的计算输出 LED切换表示采样一次 注释部分为了避免警告需要自行去掉,使用单次模式注释连续采样代码,反之一样 #include<string.h>#include<stdio.h>#include"freertos/FreeRTOS.h"#include"free...
上面这个结构体初始化中,决定了ADC每转换TIMES次产生一次DMA中断,那么如果配置了n个通道,是每个通道都采集TIMES,还是每个通道转换TIMES/n次? adc_digi_configuration_t dig_cfg = { .conv_limit_en = ADC_CONV_LIMIT_EN, .conv_limit_num = 250, .sample_freq_hz = 10 * 1000, .conv_mode = ADC_CONV...
if (data->type2.channel >= SOC_ADC_CHANNEL_NUM(unit)) return false; ^~ ../main/adc_dma_example_main.c: In function 'continuous_read': ../main/adc_dma_example_main.c:68:5: error: implicit declaration of function 'adc_digi_start' [-Werror=implicit-function-declaration] ...
I know that I could get some hints from the driver test code in esp-idf at components/driver/test/adc_dma_test. And I even found some guess work from someone. But how about some documentation? Same for the DAC, see issue #6333 from almost a year ago... ...
2. 创建一个新的 ESP-IDF 项目。你可以使用以下命令创建一个名为 "spi_dma_example" 的项目:```...