diff --git a/cpu/stm32/Makefile.dep b/cpu/stm32/Makefile.dep index cce11554dc..43e12b5ca8 100644 --- a/cpu/stm32/Makefile.dep +++ b/cpu/stm32/Makefile.dep @@ -43,7 +43,7 @@ ifneq (,$(filter periph_rtc_mem,$(USEMODULE))) endif ifneq (,$(filter periph_adc,$(FEATURES_USED))) - ifneq (,$(filter $(CPU_FAM),wl)) + ifneq (,$(filter f3 l4 wl, $(CPU_FAM))) USEMODULE += ztimer USEMODULE += ztimer_msec endif diff --git a/cpu/stm32/periph/Kconfig b/cpu/stm32/periph/Kconfig index 0770a36680..5cea7a9c59 100644 --- a/cpu/stm32/periph/Kconfig +++ b/cpu/stm32/periph/Kconfig @@ -31,6 +31,6 @@ config MODULE_PERIPH_CAN config MODULE_PERIPH_ADC bool "ADC peripheral driver" depends on HAS_PERIPH_ADC - select MODULE_ZTIMER if HAS_CPU_STM32WL - select MODULE_ZTIMER_MSEC if HAS_CPU_STM32WL + select MODULE_ZTIMER if HAS_CPU_STM32F3 || HAS_CPU_STM32L4 || HAS_CPU_STM32WL + select MODULE_ZTIMER_MSEC if HAS_CPU_STM32F3 || HAS_CPU_STM32L4 || HAS_CPU_STM32WL select MODULE_PERIPH_COMMON diff --git a/cpu/stm32/periph/adc_f3.c b/cpu/stm32/periph/adc_f3.c index 87c29fdb63..2f0603719c 100644 --- a/cpu/stm32/periph/adc_f3.c +++ b/cpu/stm32/periph/adc_f3.c @@ -23,7 +23,7 @@ #include "mutex.h" #include "periph/adc.h" #include "periph_conf.h" -#include "xtimer.h" +#include "ztimer.h" #define SMP_MIN (0x2) /*< Sampling time for slow channels (0x2 = 4.5 ADC clock cycles) */ @@ -134,7 +134,13 @@ int adc_init(adc_t line) if (!(dev(line)->CR & ADC_CR_ADEN)) { /* Enable ADC internal voltage regulator and wait for startup period */ dev(line)->CR |= ADC_CR_ADVREGEN; - xtimer_usleep(ADC_T_ADCVREG_STUP_US); +#if IS_USED(MODULE_ZTIMER_USEC) + ztimer_sleep(ZTIMER_USEC, ADC_T_ADCVREG_STUP_US); +#else + /* to avoid using ZTIMER_USEC unless already included round up the + internal voltage regulator start up to 1ms */ + ztimer_sleep(ZTIMER_MSEC, 1); +#endif if (dev(line)->DIFSEL & (1 << adc_config[line].chan)) { /* Configure calibration for differential inputs */ diff --git a/cpu/stm32/periph/adc_l4.c b/cpu/stm32/periph/adc_l4.c index 5b637d640f..6dc7df9bf8 100644 --- a/cpu/stm32/periph/adc_l4.c +++ b/cpu/stm32/periph/adc_l4.c @@ -25,7 +25,7 @@ #include "mutex.h" #include "periph/adc.h" #include "periph_conf.h" -#include "xtimer.h" +#include "ztimer.h" /** * @brief map CPU specific register/value names @@ -138,7 +138,13 @@ int adc_init(adc_t line) /* enable ADC internal voltage regulator and wait for startup period */ dev(line)->ADC_CR_REG |= (ADC_CR_ADVREGEN); - xtimer_usleep(ADC_T_ADCVREG_STUP_US); +#if IS_USED(MODULE_ZTIMER_USEC) + ztimer_sleep(ZTIMER_USEC, ADC_T_ADCVREG_STUP_US); +#else + /* to avoid using ZTIMER_USEC unless already included round up the + internal voltage regulator start up to 1ms */ + ztimer_sleep(ZTIMER_MSEC, 1); +#endif /* configure calibration for single ended input */ dev(line)->ADC_CR_REG &= ~(ADC_CR_ADCALDIF);