From 1fdf242750fc45bc3e668fd39bfc891b405597d8 Mon Sep 17 00:00:00 2001 From: Armando Date: Mon, 22 Aug 2022 11:17:08 +0800 Subject: [PATCH] esp_adc: add a kconfig to disable dac on certain adc IOs Added a kconfig option. By default, when using ADC oneshot driver, it will disable DAC channels: - ESP32: IO25, IO26 - ESP32S2: IO17, IO18 if ADC2 is in use. You can disable this option, to measure DAC output, via internal ADC. This is for test usage. --- components/esp_adc/Kconfig | 14 +++++++++++++- components/hal/adc_oneshot_hal.c | 6 +++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/components/esp_adc/Kconfig b/components/esp_adc/Kconfig index 87a8fbe567..4d8e4205e8 100644 --- a/components/esp_adc/Kconfig +++ b/components/esp_adc/Kconfig @@ -41,7 +41,19 @@ menu "ADC and ADC Calibration" This option will allow the ADC calibration component to use Lookup Tables to correct for non-linear behavior in 11db attenuation. Other attenuations do not exhibit non-linear behavior hence will not be affected by this option. - endmenu + config ADC_DISABLE_DAC_OUTPUT + depends on SOC_DAC_SUPPORTED + bool "Disable DAC when ADC2 is in use" + default y + help + By default, this is set. The ADC oneshot driver will disable the output of the + corresponding DAC channels: + ESP32: IO25 and IO26 + ESP32S2: IO17 and IO18 + + Disable this option so as to measure the output of DAC by internal ADC, for test usage. + + endmenu diff --git a/components/hal/adc_oneshot_hal.c b/components/hal/adc_oneshot_hal.c index e8597f62f3..b7664aa0c9 100644 --- a/components/hal/adc_oneshot_hal.c +++ b/components/hal/adc_oneshot_hal.c @@ -25,7 +25,7 @@ #endif -#if SOC_DAC_SUPPORTED +#if CONFIG_ADC_DISABLE_DAC_OUTPUT // To disable DAC, workarounds, see this function body to know more static void s_disable_dac(adc_oneshot_hal_ctx_t *hal, adc_channel_t channel); #endif @@ -52,7 +52,7 @@ void adc_oneshot_hal_setup(adc_oneshot_hal_ctx_t *hal, adc_channel_t chan) adc_ll_amp_disable(); //Currently the LNA is not open, close it by default. #endif -#if SOC_DAC_SUPPORTED +#if CONFIG_ADC_DISABLE_DAC_OUTPUT s_disable_dac(hal, chan); #endif @@ -144,7 +144,7 @@ bool adc_oneshot_hal_convert(adc_oneshot_hal_ctx_t *hal, int *out_raw) /*--------------------------------------------------------------- Workarounds ---------------------------------------------------------------*/ -#if SOC_DAC_SUPPORTED +#if CONFIG_ADC_DISABLE_DAC_OUTPUT static void s_disable_dac(adc_oneshot_hal_ctx_t *hal, adc_channel_t channel) { /**