diff --git a/cpu/stm32/include/periph/c0/periph_cpu.h b/cpu/stm32/include/periph/c0/periph_cpu.h index 81408b034902..ab6e7cf69b04 100644 --- a/cpu/stm32/include/periph/c0/periph_cpu.h +++ b/cpu/stm32/include/periph/c0/periph_cpu.h @@ -31,6 +31,21 @@ extern "C" { */ #define STM32_BOOTLOADER_ADDR (0x1FFF0000) +/** + * @brief Override ADC resolution values + * @{ + */ +#define HAVE_ADC_RES_T +typedef enum { + ADC_RES_6BIT = (ADC_CFGR1_RES), /**< ADC resolution: 6 bit */ + ADC_RES_8BIT = (ADC_CFGR1_RES_1), /**< ADC resolution: 8 bit */ + ADC_RES_10BIT = (ADC_CFGR1_RES_0), /**< ADC resolution: 10 bit */ + ADC_RES_12BIT = (0x00), /**< ADC resolution: 12 bit */ + ADC_RES_14BIT = (0xfe), /**< ADC resolution: 14 bit (not supported) */ + ADC_RES_16BIT = (0xff) /**< ADC resolution: 16 bit (not supported) */ +} adc_res_t; +/** @} */ + /** * @name Constants for internal VBAT ADC line * @{ diff --git a/cpu/stm32/include/periph/f0/periph_cpu.h b/cpu/stm32/include/periph/f0/periph_cpu.h index f8202c1798a8..9323084b3adf 100644 --- a/cpu/stm32/include/periph/f0/periph_cpu.h +++ b/cpu/stm32/include/periph/f0/periph_cpu.h @@ -53,12 +53,12 @@ extern "C" { */ #define HAVE_ADC_RES_T typedef enum { - ADC_RES_6BIT = (0x3 << 3), /**< ADC resolution: 6 bit */ - ADC_RES_8BIT = (0x2 << 3), /**< ADC resolution: 8 bit */ - ADC_RES_10BIT = (0x1 << 3), /**< ADC resolution: 10 bit */ - ADC_RES_12BIT = (0x0 << 3), /**< ADC resolution: 12 bit */ - ADC_RES_14BIT = (0xfe), /**< not applicable */ - ADC_RES_16BIT = (0xff) /**< not applicable */ + ADC_RES_6BIT = (ADC_CFGR1_RES), /**< ADC resolution: 6 bit */ + ADC_RES_8BIT = (ADC_CFGR1_RES_1), /**< ADC resolution: 8 bit */ + ADC_RES_10BIT = (ADC_CFGR1_RES_0), /**< ADC resolution: 10 bit */ + ADC_RES_12BIT = (0x00), /**< ADC resolution: 12 bit */ + ADC_RES_14BIT = (0xfe), /**< ADC resolution: 14 bit (not supported) */ + ADC_RES_16BIT = (0xff) /**< ADC resolution: 16 bit (not supported) */ } adc_res_t; /** @} */ diff --git a/cpu/stm32/include/periph/f2/periph_cpu.h b/cpu/stm32/include/periph/f2/periph_cpu.h index f16d4f5f3571..a43eebeb9628 100644 --- a/cpu/stm32/include/periph/f2/periph_cpu.h +++ b/cpu/stm32/include/periph/f2/periph_cpu.h @@ -54,12 +54,12 @@ extern "C" { */ #define HAVE_ADC_RES_T typedef enum { - ADC_RES_6BIT = 0x03000000, /**< ADC resolution: 6 bit */ - ADC_RES_8BIT = 0x02000000, /**< ADC resolution: 8 bit */ - ADC_RES_10BIT = 0x01000000, /**< ADC resolution: 10 bit */ - ADC_RES_12BIT = 0x00000000, /**< ADC resolution: 12 bit */ - ADC_RES_14BIT = 1, /**< ADC resolution: 14 bit (not supported) */ - ADC_RES_16BIT = 2 /**< ADC resolution: 16 bit (not supported)*/ + ADC_RES_6BIT = (ADC_CR1_RES), /**< ADC resolution: 6 bit */ + ADC_RES_8BIT = (ADC_CR1_RES_1), /**< ADC resolution: 8 bit */ + ADC_RES_10BIT = (ADC_CR1_RES_0), /**< ADC resolution: 10 bit */ + ADC_RES_12BIT = (0x00), /**< ADC resolution: 12 bit */ + ADC_RES_14BIT = (0xfe), /**< ADC resolution: 14 bit (not supported) */ + ADC_RES_16BIT = (0xff) /**< ADC resolution: 16 bit (not supported)*/ } adc_res_t; /** @} */ diff --git a/cpu/stm32/include/periph/f3/periph_cpu.h b/cpu/stm32/include/periph/f3/periph_cpu.h index 01ccf69573e0..03afd1fa4b8f 100644 --- a/cpu/stm32/include/periph/f3/periph_cpu.h +++ b/cpu/stm32/include/periph/f3/periph_cpu.h @@ -61,12 +61,12 @@ extern "C" { */ #define HAVE_ADC_RES_T typedef enum { - ADC_RES_6BIT = (ADC_CFGR_RES), /**< ADC resolution: 6 bit */ - ADC_RES_8BIT = (ADC_CFGR_RES_1), /**< ADC resolution: 8 bit */ - ADC_RES_10BIT = (ADC_CFGR_RES_0), /**< ADC resolution: 10 bit */ - ADC_RES_12BIT = (0x0), /**< ADC resolution: 12 bit */ - ADC_RES_14BIT = (0x1), /**< not applicable */ - ADC_RES_16BIT = (0x2) /**< not applicable */ + ADC_RES_6BIT = (ADC_CFGR_RES), /**< ADC resolution: 6 bit */ + ADC_RES_8BIT = (ADC_CFGR_RES_1), /**< ADC resolution: 8 bit */ + ADC_RES_10BIT = (ADC_CFGR_RES_0), /**< ADC resolution: 10 bit */ + ADC_RES_12BIT = (0x00), /**< ADC resolution: 12 bit */ + ADC_RES_14BIT = (0xfe), /**< ADC resolution: 14 bit (not supported) */ + ADC_RES_16BIT = (0xff) /**< ADC resolution: 16 bit (not supported) */ } adc_res_t; /** @} */ diff --git a/cpu/stm32/include/periph/f4/periph_cpu.h b/cpu/stm32/include/periph/f4/periph_cpu.h index 231e2461619b..d57130610e68 100644 --- a/cpu/stm32/include/periph/f4/periph_cpu.h +++ b/cpu/stm32/include/periph/f4/periph_cpu.h @@ -56,17 +56,17 @@ extern "C" { #define GET_RDP(x) ((x & 0xFF00) >> 8) /** - * @brief Override the ADC resolution configuration + * @brief Override ADC resolution values * @{ */ #define HAVE_ADC_RES_T typedef enum { - ADC_RES_6BIT = 0x03000000, /**< ADC resolution: 6 bit */ - ADC_RES_8BIT = 0x02000000, /**< ADC resolution: 8 bit */ - ADC_RES_10BIT = 0x01000000, /**< ADC resolution: 10 bit */ - ADC_RES_12BIT = 0x00000000, /**< ADC resolution: 12 bit */ - ADC_RES_14BIT = 1, /**< ADC resolution: 14 bit (not supported) */ - ADC_RES_16BIT = 2 /**< ADC resolution: 16 bit (not supported)*/ + ADC_RES_6BIT = (ADC_CR1_RES), /**< ADC resolution: 6 bit */ + ADC_RES_8BIT = (ADC_CR1_RES_1), /**< ADC resolution: 8 bit */ + ADC_RES_10BIT = (ADC_CR1_RES_0), /**< ADC resolution: 10 bit */ + ADC_RES_12BIT = (0x00), /**< ADC resolution: 12 bit */ + ADC_RES_14BIT = (0xfe), /**< ADC resolution: 14 bit (not supported) */ + ADC_RES_16BIT = (0xff) /**< ADC resolution: 16 bit (not supported) */ } adc_res_t; /** @} */ diff --git a/cpu/stm32/include/periph/f7/periph_cpu.h b/cpu/stm32/include/periph/f7/periph_cpu.h index 1e3ea495b6fc..043a3906ad05 100644 --- a/cpu/stm32/include/periph/f7/periph_cpu.h +++ b/cpu/stm32/include/periph/f7/periph_cpu.h @@ -44,17 +44,17 @@ extern "C" { #define ADC_DEVS (3U) /** - * @brief Override the ADC resolution configuration + * @brief Override ADC resolution values * @{ */ #define HAVE_ADC_RES_T typedef enum { - ADC_RES_6BIT = 0x03000000, /**< ADC resolution: 6 bit */ - ADC_RES_8BIT = 0x02000000, /**< ADC resolution: 8 bit */ - ADC_RES_10BIT = 0x01000000, /**< ADC resolution: 10 bit */ - ADC_RES_12BIT = 0x00000000, /**< ADC resolution: 12 bit */ - ADC_RES_14BIT = 1, /**< ADC resolution: 14 bit (not supported) */ - ADC_RES_16BIT = 2 /**< ADC resolution: 16 bit (not supported)*/ + ADC_RES_6BIT = (ADC_CR1_RES), /**< ADC resolution: 6 bit */ + ADC_RES_8BIT = (ADC_CR1_RES_1), /**< ADC resolution: 8 bit */ + ADC_RES_10BIT = (ADC_CR1_RES_0), /**< ADC resolution: 10 bit */ + ADC_RES_12BIT = (0x00), /**< ADC resolution: 12 bit */ + ADC_RES_14BIT = (0xfe), /**< ADC resolution: 14 bit (not supported) */ + ADC_RES_16BIT = (0xff) /**< ADC resolution: 16 bit (not supported) */ } adc_res_t; /** @} */ diff --git a/cpu/stm32/include/periph/g0/periph_cpu.h b/cpu/stm32/include/periph/g0/periph_cpu.h index c325e36f9028..ce04edd5c4f8 100644 --- a/cpu/stm32/include/periph/g0/periph_cpu.h +++ b/cpu/stm32/include/periph/g0/periph_cpu.h @@ -32,6 +32,21 @@ extern "C" { */ #define STM32_BOOTLOADER_ADDR (0x1FFF0000) +/** + * @brief Override ADC resolution values + * @{ + */ +#define HAVE_ADC_RES_T +typedef enum { + ADC_RES_6BIT = (ADC_CFGR1_RES), /**< ADC resolution: 6 bit */ + ADC_RES_8BIT = (ADC_CFGR1_RES_1), /**< ADC resolution: 8 bit */ + ADC_RES_10BIT = (ADC_CFGR1_RES_0), /**< ADC resolution: 10 bit */ + ADC_RES_12BIT = (0x00), /**< ADC resolution: 12 bit */ + ADC_RES_14BIT = (0xfe), /**< ADC resolution: 14 bit (not supported) */ + ADC_RES_16BIT = (0xff) /**< ADC resolution: 16 bit (not supported) */ +} adc_res_t; +/** @} */ + /** * @name Constants for internal VBAT ADC line * @{ diff --git a/cpu/stm32/include/periph/l0/periph_cpu.h b/cpu/stm32/include/periph/l0/periph_cpu.h index 09024937dade..8dd8510cbfb0 100644 --- a/cpu/stm32/include/periph/l0/periph_cpu.h +++ b/cpu/stm32/include/periph/l0/periph_cpu.h @@ -40,12 +40,12 @@ extern "C" { */ #define HAVE_ADC_RES_T typedef enum { - ADC_RES_6BIT = (0x3 << 3), /**< ADC resolution: 6 bit */ - ADC_RES_8BIT = (0x2 << 3), /**< ADC resolution: 8 bit */ - ADC_RES_10BIT = (0x1 << 3), /**< ADC resolution: 10 bit */ - ADC_RES_12BIT = (0x0 << 3), /**< ADC resolution: 12 bit */ - ADC_RES_14BIT = (0xfe), /**< not applicable */ - ADC_RES_16BIT = (0xff) /**< not applicable */ + ADC_RES_6BIT = (ADC_CFGR1_RES), /**< ADC resolution: 6 bit */ + ADC_RES_8BIT = (ADC_CFGR1_RES_1), /**< ADC resolution: 8 bit */ + ADC_RES_10BIT = (ADC_CFGR1_RES_0), /**< ADC resolution: 10 bit */ + ADC_RES_12BIT = (0x00), /**< ADC resolution: 12 bit */ + ADC_RES_14BIT = (0xfe), /**< ADC resolution: 14 bit (not supported)*/ + ADC_RES_16BIT = (0xff) /**< ADC resolution: 16 bit (not supported)*/ } adc_res_t; /** @} */ #endif /* ndef DOXYGEN */ diff --git a/cpu/stm32/include/periph/l1/periph_cpu.h b/cpu/stm32/include/periph/l1/periph_cpu.h index b5155300fea1..3893860340c9 100644 --- a/cpu/stm32/include/periph/l1/periph_cpu.h +++ b/cpu/stm32/include/periph/l1/periph_cpu.h @@ -45,12 +45,12 @@ extern "C" { */ #define HAVE_ADC_RES_T typedef enum { - ADC_RES_6BIT = (ADC_CR1_RES_0 | ADC_CR1_RES_1), /**< ADC resolution: 6 bit */ - ADC_RES_8BIT = (ADC_CR1_RES_1), /**< ADC resolution: 8 bit */ - ADC_RES_10BIT = (ADC_CR1_RES_0), /**< ADC resolution: 10 bit */ - ADC_RES_12BIT = (0x00), /**< ADC resolution: 12 bit */ - ADC_RES_14BIT = (0xfe), /**< not applicable */ - ADC_RES_16BIT = (0xff) /**< not applicable */ + ADC_RES_6BIT = (ADC_CR1_RES), /**< ADC resolution: 6 bit */ + ADC_RES_8BIT = (ADC_CR1_RES_1), /**< ADC resolution: 8 bit */ + ADC_RES_10BIT = (ADC_CR1_RES_0), /**< ADC resolution: 10 bit */ + ADC_RES_12BIT = (0x00), /**< ADC resolution: 12 bit */ + ADC_RES_14BIT = (0xfe), /**< ADC resolution: 14 bit (not supported)*/ + ADC_RES_16BIT = (0xff) /**< ADC resolution: 16 bit (not supported)*/ } adc_res_t; /** @} */ #endif /* ndef DOXYGEN */ diff --git a/cpu/stm32/include/periph/l4/periph_cpu.h b/cpu/stm32/include/periph/l4/periph_cpu.h index 692e12d1c849..768952f283f5 100644 --- a/cpu/stm32/include/periph/l4/periph_cpu.h +++ b/cpu/stm32/include/periph/l4/periph_cpu.h @@ -61,12 +61,12 @@ extern "C" { */ #define HAVE_ADC_RES_T typedef enum { - ADC_RES_6BIT = (ADC_CFGR_RES), /**< ADC resolution: 6 bit */ - ADC_RES_8BIT = (ADC_CFGR_RES_1), /**< ADC resolution: 8 bit */ - ADC_RES_10BIT = (ADC_CFGR_RES_0), /**< ADC resolution: 10 bit */ - ADC_RES_12BIT = (0x0), /**< ADC resolution: 12 bit */ - ADC_RES_14BIT = (0x1), /**< not applicable */ - ADC_RES_16BIT = (0x2) /**< not applicable */ + ADC_RES_6BIT = (ADC_CFGR_RES), /**< ADC resolution: 6 bit */ + ADC_RES_8BIT = (ADC_CFGR_RES_1), /**< ADC resolution: 8 bit */ + ADC_RES_10BIT = (ADC_CFGR_RES_0), /**< ADC resolution: 10 bit */ + ADC_RES_12BIT = (0x00), /**< ADC resolution: 12 bit */ + ADC_RES_14BIT = (0xfe), /**< ADC resolution: 14 bit (not supported) */ + ADC_RES_16BIT = (0xff) /**< ADC resolution: 16 bit (not supported) */ } adc_res_t; /** @} */ diff --git a/cpu/stm32/include/periph/wb/periph_cpu.h b/cpu/stm32/include/periph/wb/periph_cpu.h index ab9194e15d18..636262b9f397 100644 --- a/cpu/stm32/include/periph/wb/periph_cpu.h +++ b/cpu/stm32/include/periph/wb/periph_cpu.h @@ -58,12 +58,12 @@ extern "C" { */ #define HAVE_ADC_RES_T typedef enum { - ADC_RES_6BIT = (ADC_CFGR_RES), /**< ADC resolution: 6 bit */ - ADC_RES_8BIT = (ADC_CFGR_RES_1), /**< ADC resolution: 8 bit */ - ADC_RES_10BIT = (ADC_CFGR_RES_0), /**< ADC resolution: 10 bit */ - ADC_RES_12BIT = (0x0), /**< ADC resolution: 12 bit */ - ADC_RES_14BIT = (0x1), /**< not applicable */ - ADC_RES_16BIT = (0x2) /**< not applicable */ + ADC_RES_6BIT = (ADC_CFGR_RES), /**< ADC resolution: 6 bit */ + ADC_RES_8BIT = (ADC_CFGR_RES_1), /**< ADC resolution: 8 bit */ + ADC_RES_10BIT = (ADC_CFGR_RES_0), /**< ADC resolution: 10 bit */ + ADC_RES_12BIT = (0x00), /**< ADC resolution: 12 bit */ + ADC_RES_14BIT = (0xfe), /**< ADC resolution: 14 bit (not supported) */ + ADC_RES_16BIT = (0xff) /**< ADC resolution: 16 bit (not supported) */ } adc_res_t; /** @} */ diff --git a/cpu/stm32/include/periph/wl/periph_cpu.h b/cpu/stm32/include/periph/wl/periph_cpu.h index 8edf765fbbec..646bbc1f09b2 100644 --- a/cpu/stm32/include/periph/wl/periph_cpu.h +++ b/cpu/stm32/include/periph/wl/periph_cpu.h @@ -42,12 +42,12 @@ extern "C" { */ #define HAVE_ADC_RES_T typedef enum { - ADC_RES_6BIT = (ADC_CFGR1_RES), /**< ADC resolution: 6 bit */ - ADC_RES_8BIT = (ADC_CFGR1_RES_1), /**< ADC resolution: 8 bit */ - ADC_RES_10BIT = (ADC_CFGR1_RES_0), /**< ADC resolution: 10 bit */ - ADC_RES_12BIT = (0x0), /**< ADC resolution: 12 bit */ - ADC_RES_14BIT = (0x1), /**< not applicable */ - ADC_RES_16BIT = (0x2) /**< not applicable */ + ADC_RES_6BIT = (ADC_CFGR_RES), /**< ADC resolution: 6 bit */ + ADC_RES_8BIT = (ADC_CFGR_RES_1), /**< ADC resolution: 8 bit */ + ADC_RES_10BIT = (ADC_CFGR_RES_0), /**< ADC resolution: 10 bit */ + ADC_RES_12BIT = (0x00), /**< ADC resolution: 12 bit */ + ADC_RES_14BIT = (0xfe), /**< ADC resolution: 14 bit (not supported) */ + ADC_RES_16BIT = (0xff) /**< ADC resolution: 16 bit (not supported) */ } adc_res_t; /** @} */ diff --git a/cpu/stm32/periph/adc_f0_g0_c0.c b/cpu/stm32/periph/adc_f0_g0_c0.c index 89e6c19c134f..53b29e1bf103 100644 --- a/cpu/stm32/periph/adc_f0_g0_c0.c +++ b/cpu/stm32/periph/adc_f0_g0_c0.c @@ -101,7 +101,7 @@ int32_t adc_sample(adc_t line, adc_res_t res) int sample; /* check if resolution is applicable */ - if (res > 0xf0) { + if ((res & ADC_CFGR_RES_Msk) != res) { return -1; } diff --git a/cpu/stm32/periph/adc_f2.c b/cpu/stm32/periph/adc_f2.c index 48a7bb1b6e52..c66a9ad1e5ea 100644 --- a/cpu/stm32/periph/adc_f2.c +++ b/cpu/stm32/periph/adc_f2.c @@ -109,7 +109,7 @@ int32_t adc_sample(adc_t line, adc_res_t res) int sample; /* check if resolution is applicable */ - if (res < 0xff) { + if ((res & ADC_CR1_RES_Msk) != res) { return -1; } diff --git a/cpu/stm32/periph/adc_f3.c b/cpu/stm32/periph/adc_f3.c index dc022524ba3e..9460cf3e6a49 100644 --- a/cpu/stm32/periph/adc_f3.c +++ b/cpu/stm32/periph/adc_f3.c @@ -194,7 +194,7 @@ int32_t adc_sample(adc_t line, adc_res_t res) int sample; /* Check if resolution is applicable */ - if (res & 0x3) { + if ((res & ADC_CFGR_RES_Msk) != res) { return -1; } diff --git a/cpu/stm32/periph/adc_f4_f7.c b/cpu/stm32/periph/adc_f4_f7.c index e946c1e2a760..cb83f95adac3 100644 --- a/cpu/stm32/periph/adc_f4_f7.c +++ b/cpu/stm32/periph/adc_f4_f7.c @@ -129,7 +129,7 @@ int32_t adc_sample(adc_t line, adc_res_t res) int sample; /* check if resolution is applicable */ - if (res & 0xff) { + if ((res & ADC_CR1_RES_Msk) != res) { return -1; } diff --git a/cpu/stm32/periph/adc_l0.c b/cpu/stm32/periph/adc_l0.c index 99fad3c70d5d..ba47f8cfbe06 100644 --- a/cpu/stm32/periph/adc_l0.c +++ b/cpu/stm32/periph/adc_l0.c @@ -118,10 +118,7 @@ int32_t adc_sample(adc_t line, adc_res_t res) int sample; /* check if resolution is applicable */ - if ( (res != ADC_RES_6BIT) && - (res != ADC_RES_8BIT) && - (res != ADC_RES_10BIT) && - (res != ADC_RES_12BIT)) { + if ((res & ADC_CFGR1_RES_Msk) != res) { return -1; } diff --git a/cpu/stm32/periph/adc_l1.c b/cpu/stm32/periph/adc_l1.c index eeab76d99753..03bbb0c3bed7 100644 --- a/cpu/stm32/periph/adc_l1.c +++ b/cpu/stm32/periph/adc_l1.c @@ -145,10 +145,7 @@ int32_t adc_sample(adc_t line, adc_res_t res) int sample; /* check if resolution is applicable */ - if ( (res != ADC_RES_6BIT) && - (res != ADC_RES_8BIT) && - (res != ADC_RES_10BIT) && - (res != ADC_RES_12BIT)) { + if ((res & ADC_CR1_RES_Msk) != res) { return -1; } diff --git a/cpu/stm32/periph/adc_l4_wb.c b/cpu/stm32/periph/adc_l4_wb.c index 03b2746873e3..26e16b2075eb 100644 --- a/cpu/stm32/periph/adc_l4_wb.c +++ b/cpu/stm32/periph/adc_l4_wb.c @@ -218,7 +218,7 @@ int32_t adc_sample(adc_t line, adc_res_t res) int sample; /* check if resolution is applicable */ - if (res & 0x3) { + if ((res & ADC_CFGR_RES_Msk) != res) { return -1; } diff --git a/cpu/stm32/periph/adc_wl.c b/cpu/stm32/periph/adc_wl.c index 7a895d613e21..5f162cd16c82 100644 --- a/cpu/stm32/periph/adc_wl.c +++ b/cpu/stm32/periph/adc_wl.c @@ -119,7 +119,7 @@ int32_t adc_sample(adc_t line, adc_res_t res) int sample; /* check if resolution is applicable */ - if (res & 0x3) { + if ((res & ADC_CFGR_RES_Msk) != res) { return -1; }