From 46e71e43ba2d6834d34dda587df0fdc3ca02753d Mon Sep 17 00:00:00 2001 From: Armando Date: Tue, 7 Nov 2023 10:55:20 +0800 Subject: [PATCH] fix(adc): rename ADC_ATTEN_DB_11 to ADC_ATTEN_DB_12 By design, it's 12 dB. There're errors among chips, so the actual attenuation will be 11dB more or less --- components/driver/adc_deprecated.c | 2 +- components/driver/esp32c3/adc2_init_cal.c | 2 +- components/driver/esp32s2/adc2_init_cal.c | 2 +- components/driver/include/driver/adc.h | 2 +- components/driver/test/test_adc.c | 4 ++-- components/driver/test/test_adc2_with_wifi.c | 2 +- components/driver/test/test_adc_common.c | 4 ++-- components/driver/test/test_dac.c | 6 +++--- components/driver/test/test_i2s.c | 2 +- components/esp_adc_cal/esp32/esp_adc_cal.c | 6 +++--- components/esp_adc_cal/esp32s2/esp_adc_cal.c | 2 +- components/hal/esp32s2/include/hal/adc_ll.h | 6 +++--- components/hal/esp32s3/include/hal/adc_ll.h | 6 +++--- components/hal/include/hal/adc_hal.h | 4 ++-- components/hal/include/hal/adc_types.h | 9 +++++---- docs/en/api-reference/peripherals/adc.rst | 2 +- .../adc/single_read/single_read/main/single_read.c | 2 +- examples/peripherals/i2s/i2s_adc_dac/main/app_main.c | 2 +- .../main/app_trace_to_host_example_main.c | 2 +- .../system/ulp_fsm/ulp_adc/main/ulp_adc_example_main.c | 2 +- examples/system/ulp_riscv/adc/main/ulp/example_config.h | 2 +- 21 files changed, 36 insertions(+), 35 deletions(-) diff --git a/components/driver/adc_deprecated.c b/components/driver/adc_deprecated.c index 23a50573b41..90549d190c3 100644 --- a/components/driver/adc_deprecated.c +++ b/components/driver/adc_deprecated.c @@ -60,7 +60,7 @@ esp_pm_lock_handle_t adc_digi_arbiter_lock = NULL; #define ADC_MEAS_NUM_LIM_DEFAULT (1) #define ADC_MAX_MEAS_NUM_DEFAULT (255) #define DIG_ADC_OUTPUT_FORMAT_DEFUALT (ADC_DIGI_FORMAT_12BIT) -#define DIG_ADC_ATTEN_DEFUALT (ADC_ATTEN_DB_11) +#define DIG_ADC_ATTEN_DEFUALT (ADC_ATTEN_DB_12) #define DIG_ADC_BIT_WIDTH_DEFUALT (ADC_WIDTH_BIT_12) esp_err_t adc_digi_init(void) diff --git a/components/driver/esp32c3/adc2_init_cal.c b/components/driver/esp32c3/adc2_init_cal.c index 351e7950244..f8352fd099d 100644 --- a/components/driver/esp32c3/adc2_init_cal.c +++ b/components/driver/esp32c3/adc2_init_cal.c @@ -19,7 +19,7 @@ Don't put any other code into this file. */ static __attribute__((constructor)) void adc2_init_code_calibration(void) { const adc_ll_num_t adc_n = ADC_NUM_2; - const adc_atten_t atten = ADC_ATTEN_DB_11; + const adc_atten_t atten = ADC_ATTEN_DB_12; const adc_channel_t channel = 0; adc_cal_offset(adc_n, channel, atten); } diff --git a/components/driver/esp32s2/adc2_init_cal.c b/components/driver/esp32s2/adc2_init_cal.c index 351e7950244..f8352fd099d 100644 --- a/components/driver/esp32s2/adc2_init_cal.c +++ b/components/driver/esp32s2/adc2_init_cal.c @@ -19,7 +19,7 @@ Don't put any other code into this file. */ static __attribute__((constructor)) void adc2_init_code_calibration(void) { const adc_ll_num_t adc_n = ADC_NUM_2; - const adc_atten_t atten = ADC_ATTEN_DB_11; + const adc_atten_t atten = ADC_ATTEN_DB_12; const adc_channel_t channel = 0; adc_cal_offset(adc_n, channel, atten); } diff --git a/components/driver/include/driver/adc.h b/components/driver/include/driver/adc.h index 5cd19dacd7d..23a80a68816 100644 --- a/components/driver/include/driver/adc.h +++ b/components/driver/include/driver/adc.h @@ -89,7 +89,7 @@ typedef enum { #define ADC_ATTEN_0db ADC_ATTEN_DB_0 #define ADC_ATTEN_2_5db ADC_ATTEN_DB_2_5 #define ADC_ATTEN_6db ADC_ATTEN_DB_6 -#define ADC_ATTEN_11db ADC_ATTEN_DB_11 +#define ADC_ATTEN_11db ADC_ATTEN_DB_12 /** * The default (max) bit width of the ADC of current version. You can also get the maximum bitwidth diff --git a/components/driver/test/test_adc.c b/components/driver/test/test_adc.c index e7ad8b4427c..d881a8d2ed1 100644 --- a/components/driver/test/test_adc.c +++ b/components/driver/test/test_adc.c @@ -161,7 +161,7 @@ TEST_CASE("test_adc_dma", "[adc][ignore][manual]") bool print_figure; if (target_atten == ADC_ATTEN_MAX) { atten = ADC_ATTEN_DB_0; - target_atten = ADC_ATTEN_DB_11; + target_atten = ADC_ATTEN_DB_12; print_figure = false; } else { atten = target_atten; @@ -228,7 +228,7 @@ TEST_CASE("test_adc_single", "[adc][ignore][manual]") bool print_figure; if (target_atten == ADC_ATTEN_MAX) { atten = ADC_ATTEN_DB_0; - target_atten = ADC_ATTEN_DB_11; + target_atten = ADC_ATTEN_DB_12; print_figure = false; } else { atten = target_atten; diff --git a/components/driver/test/test_adc2_with_wifi.c b/components/driver/test/test_adc2_with_wifi.c index 20407b134a2..4e7290a6ca3 100644 --- a/components/driver/test/test_adc2_with_wifi.c +++ b/components/driver/test/test_adc2_with_wifi.c @@ -236,7 +236,7 @@ static void i2s_adc_init(void) i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL); // init ADC pad i2s_set_adc_mode(ADC_UNIT_1, ADC1_CHANNEL_4); - // enable adc sampling, ADC_WIDTH_BIT_12, ADC_ATTEN_DB_11 hard-coded in adc_i2s_mode_init + // enable adc sampling, ADC_WIDTH_BIT_12, ADC_ATTEN_DB_12 hard-coded in adc_i2s_mode_init i2s_adc_enable(I2S_NUM_0); } diff --git a/components/driver/test/test_adc_common.c b/components/driver/test/test_adc_common.c index 1b78c453afc..37f8d3bbfb1 100644 --- a/components/driver/test/test_adc_common.c +++ b/components/driver/test/test_adc_common.c @@ -32,8 +32,8 @@ static const char *TAG = "test_adc"; #define ADC2_TEST_WIDTH ADC_WIDTH_BIT_13 //ESP32S2 only support 13 bit width #endif -#define ADC1_TEST_ATTEN ADC_ATTEN_DB_11 -#define ADC2_TEST_ATTEN ADC_ATTEN_DB_11 +#define ADC1_TEST_ATTEN ADC_ATTEN_DB_12 +#define ADC2_TEST_ATTEN ADC_ATTEN_DB_12 #if CONFIG_IDF_TARGET_ESP32 #define ADC1_TEST_CHANNEL_NUM 8 diff --git a/components/driver/test/test_dac.c b/components/driver/test/test_dac.c index 377573516c6..fffa8aaeb3e 100644 --- a/components/driver/test/test_dac.c +++ b/components/driver/test/test_dac.c @@ -30,7 +30,7 @@ static const char *TAG = "test_dac"; #elif defined CONFIG_IDF_TARGET_ESP32S2 #define ADC_TEST_WIDTH ADC_WIDTH_BIT_13 //ESP32S2 only support 13 bit width #endif -#define ADC_TEST_ATTEN ADC_ATTEN_DB_11 +#define ADC_TEST_ATTEN ADC_ATTEN_DB_12 #if CONFIG_IDF_TARGET_ESP32 #define ADC_TEST_CHANNEL_NUM ADC2_CHANNEL_8 // GPIO25 @@ -180,8 +180,8 @@ TEST_CASE("esp32s2 adc2-dac with adc2 calibration", "[adc-dac]") subtest_adc_dac(1250, &chars); printf("Test 11dB atten...\n"); - adc2_config_channel_atten((adc2_channel_t)ADC_TEST_CHANNEL_NUM, ADC_ATTEN_DB_11); - esp_adc_cal_characterize(ADC_UNIT_2, ADC_ATTEN_DB_11, ADC_WIDTH_BIT_13, 0, &chars); + adc2_config_channel_atten((adc2_channel_t)ADC_TEST_CHANNEL_NUM, ADC_ATTEN_DB_12); + esp_adc_cal_characterize(ADC_UNIT_2, ADC_ATTEN_DB_12, ADC_WIDTH_BIT_13, 0, &chars); printf("a %d, b %d\n", chars.coeff_a, chars.coeff_b); subtest_adc_dac(1500, &chars); subtest_adc_dac(2500, &chars); diff --git a/components/driver/test/test_i2s.c b/components/driver/test/test_i2s.c index f6f5a667c06..333b51069f1 100644 --- a/components/driver/test/test_i2s.c +++ b/components/driver/test/test_i2s.c @@ -769,7 +769,7 @@ TEST_CASE("I2S adc test", "[i2s]") i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL); // init ADC pad i2s_set_adc_mode(ADC_UNIT_1, ADC1_CHANNEL_4); - // enable adc sampling, ADC_WIDTH_BIT_12, ADC_ATTEN_DB_11 hard-coded in adc_i2s_mode_init + // enable adc sampling, ADC_WIDTH_BIT_12, ADC_ATTEN_DB_12 hard-coded in adc_i2s_mode_init i2s_adc_enable(I2S_NUM_0); // init read buffer uint16_t *i2sReadBuffer = (uint16_t *)calloc(1024, sizeof(uint16_t)); diff --git a/components/esp_adc_cal/esp32/esp_adc_cal.c b/components/esp_adc_cal/esp32/esp_adc_cal.c index 187a35c3edf..b9a998ab49e 100644 --- a/components/esp_adc_cal/esp32/esp_adc_cal.c +++ b/components/esp_adc_cal/esp32/esp_adc_cal.c @@ -319,7 +319,7 @@ esp_adc_cal_value_t esp_adc_cal_characterize(adc_unit_t adc_num, chars->bit_width = bit_width; chars->vref = (EFUSE_VREF_ENABLED && efuse_vref_present) ? read_efuse_vref() : default_vref; //Initialize fields for lookup table if necessary - if (LUT_ENABLED && atten == ADC_ATTEN_DB_11) { + if (LUT_ENABLED && atten == ADC_ATTEN_DB_12) { chars->low_curve = (adc_num == ADC_UNIT_1) ? lut_adc1_low : lut_adc2_low; chars->high_curve = (adc_num == ADC_UNIT_1) ? lut_adc1_high : lut_adc2_high; } else { @@ -339,8 +339,8 @@ uint32_t esp_adc_cal_raw_to_voltage(uint32_t adc_reading, const esp_adc_cal_char adc_reading = ADC_12_BIT_RES - 1; //Set to 12bit res max } - if (LUT_ENABLED && (chars->atten == ADC_ATTEN_DB_11) && (adc_reading >= LUT_LOW_THRESH)) { //Check if in non-linear region - //Use lookup table to get voltage in non linear portion of ADC_ATTEN_DB_11 + if (LUT_ENABLED && (chars->atten == ADC_ATTEN_DB_12) && (adc_reading >= LUT_LOW_THRESH)) { //Check if in non-linear region + //Use lookup table to get voltage in non linear portion of ADC_ATTEN_DB_12 uint32_t lut_voltage = calculate_voltage_lut(adc_reading, chars->vref, chars->low_curve, chars->high_curve); if (adc_reading <= LUT_HIGH_THRESH) { //If ADC is transitioning from linear region to non-linear region //Linearly interpolate between linear voltage and lut voltage diff --git a/components/esp_adc_cal/esp32s2/esp_adc_cal.c b/components/esp_adc_cal/esp32s2/esp_adc_cal.c index 4de5b11eba3..3da83880d30 100644 --- a/components/esp_adc_cal/esp32s2/esp_adc_cal.c +++ b/components/esp_adc_cal/esp32s2/esp_adc_cal.c @@ -74,7 +74,7 @@ static bool prepare_calib_data_for(adc_unit_t adc_num, adc_atten_t atten, adc_ca case ADC_ATTEN_DB_6: parsed_data_storage->efuse_data.ver2.adc_calib_high_voltage = 1000; break; - case ADC_ATTEN_DB_11: + case ADC_ATTEN_DB_12: parsed_data_storage->efuse_data.ver2.adc_calib_high_voltage = 2000; break; default: diff --git a/components/hal/esp32s2/include/hal/adc_ll.h b/components/hal/esp32s2/include/hal/adc_ll.h index c9445cb2aa6..c91bec968e9 100644 --- a/components/hal/esp32s2/include/hal/adc_ll.h +++ b/components/hal/esp32s2/include/hal/adc_ll.h @@ -799,19 +799,19 @@ static inline adc_ll_rtc_raw_data_t adc_ll_rtc_analysis_raw_data(adc_ll_num_t ad * - 0dB attenuaton (ADC_ATTEN_DB_0) gives full-scale voltage 1.1V * - 2.5dB attenuation (ADC_ATTEN_DB_2_5) gives full-scale voltage 1.5V * - 6dB attenuation (ADC_ATTEN_DB_6) gives full-scale voltage 2.2V - * - 11dB attenuation (ADC_ATTEN_DB_11) gives full-scale voltage 3.9V (see note below) + * - 12dB attenuation (ADC_ATTEN_DB_12) gives full-scale voltage 3.9V (see note below) * * @note The full-scale voltage is the voltage corresponding to a maximum reading (depending on ADC1 configured * bit width, this value is: 4095 for 12-bits, 2047 for 11-bits, 1023 for 10-bits, 511 for 9 bits.) * - * @note At 11dB attenuation the maximum voltage is limited by VDD_A, not the full scale voltage. + * @note At 12dB attenuation the maximum voltage is limited by VDD_A, not the full scale voltage. * * Due to ADC characteristics, most accurate results are obtained within the following approximate voltage ranges: * * - 0dB attenuaton (ADC_ATTEN_DB_0) between 100 and 950mV * - 2.5dB attenuation (ADC_ATTEN_DB_2_5) between 100 and 1250mV * - 6dB attenuation (ADC_ATTEN_DB_6) between 150 to 1750mV - * - 11dB attenuation (ADC_ATTEN_DB_11) between 150 to 2450mV + * - 12dB attenuation (ADC_ATTEN_DB_12) between 150 to 2450mV * * For maximum accuracy, use the ADC calibration APIs and measure voltages within these recommended ranges. * diff --git a/components/hal/esp32s3/include/hal/adc_ll.h b/components/hal/esp32s3/include/hal/adc_ll.h index 45c1ce1beca..8d15073ef01 100644 --- a/components/hal/esp32s3/include/hal/adc_ll.h +++ b/components/hal/esp32s3/include/hal/adc_ll.h @@ -1011,19 +1011,19 @@ static inline adc_ll_rtc_raw_data_t adc_ll_rtc_analysis_raw_data(adc_ll_num_t ad * - 0dB attenuaton (ADC_ATTEN_DB_0) gives full-scale voltage 1.1V * - 2.5dB attenuation (ADC_ATTEN_DB_2_5) gives full-scale voltage 1.5V * - 6dB attenuation (ADC_ATTEN_DB_6) gives full-scale voltage 2.2V - * - 11dB attenuation (ADC_ATTEN_DB_11) gives full-scale voltage 3.9V (see note below) + * - 12dB attenuation (ADC_ATTEN_DB_12) gives full-scale voltage 3.9V (see note below) * * @note The full-scale voltage is the voltage corresponding to a maximum reading (depending on ADC1 configured * bit width, this value is: 4095 for 12-bits, 2047 for 11-bits, 1023 for 10-bits, 511 for 9 bits.) * - * @note At 11dB attenuation the maximum voltage is limited by VDD_A, not the full scale voltage. + * @note At 12dB attenuation the maximum voltage is limited by VDD_A, not the full scale voltage. * * Due to ADC characteristics, most accurate results are obtained within the following approximate voltage ranges: * * - 0dB attenuaton (ADC_ATTEN_DB_0) between 100 and 950mV * - 2.5dB attenuation (ADC_ATTEN_DB_2_5) between 100 and 1250mV * - 6dB attenuation (ADC_ATTEN_DB_6) between 150 to 1750mV - * - 11dB attenuation (ADC_ATTEN_DB_11) between 150 to 2450mV + * - 12dB attenuation (ADC_ATTEN_DB_12) between 150 to 2450mV * * For maximum accuracy, use the ADC calibration APIs and measure voltages within these recommended ranges. * diff --git a/components/hal/include/hal/adc_hal.h b/components/hal/include/hal/adc_hal.h index ab08a5dd479..1f5d2aa7177 100644 --- a/components/hal/include/hal/adc_hal.h +++ b/components/hal/include/hal/adc_hal.h @@ -267,7 +267,7 @@ void adc_hal_digi_stop(adc_hal_context_t *hal); * - 0dB attenuaton (ADC_ATTEN_DB_0) gives full-scale voltage 1.1V * - 2.5dB attenuation (ADC_ATTEN_DB_2_5) gives full-scale voltage 1.5V * - 6dB attenuation (ADC_ATTEN_DB_6) gives full-scale voltage 2.2V - * - 11dB attenuation (ADC_ATTEN_DB_11) gives full-scale voltage 3.9V (see note below) + * - 11dB attenuation (ADC_ATTEN_DB_12) gives full-scale voltage 3.9V (see note below) * * @note The full-scale voltage is the voltage corresponding to a maximum reading (depending on ADC1 configured * bit width, this value is: 4095 for 12-bits, 2047 for 11-bits, 1023 for 10-bits, 511 for 9 bits.) @@ -279,7 +279,7 @@ void adc_hal_digi_stop(adc_hal_context_t *hal); * - 0dB attenuaton (ADC_ATTEN_DB_0) between 100 and 950mV * - 2.5dB attenuation (ADC_ATTEN_DB_2_5) between 100 and 1250mV * - 6dB attenuation (ADC_ATTEN_DB_6) between 150 to 1750mV - * - 11dB attenuation (ADC_ATTEN_DB_11) between 150 to 2450mV + * - 11dB attenuation (ADC_ATTEN_DB_12) between 150 to 2450mV * * For maximum accuracy, use the ADC calibration APIs and measure voltages within these recommended ranges. * diff --git a/components/hal/include/hal/adc_types.h b/components/hal/include/hal/adc_types.h index 3490986c28e..f70fa0c2e7f 100644 --- a/components/hal/include/hal/adc_types.h +++ b/components/hal/include/hal/adc_types.h @@ -47,10 +47,11 @@ typedef enum { * @brief ADC attenuation parameter. Different parameters determine the range of the ADC. See ``adc1_config_channel_atten``. */ typedef enum { - ADC_ATTEN_DB_0 = 0, /*!