diff --git a/cpu/stm32/include/periph/c0/periph_cpu.h b/cpu/stm32/include/periph/c0/periph_cpu.h index 81408b0349..ab6e7cf69b 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 f8202c1798..9323084b3a 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 f16d4f5f35..a43eebeb96 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 01ccf69573..03afd1fa4b 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 231e246161..d57130610e 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 1e3ea495b6..043a3906ad 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 c325e36f90..ce04edd5c4 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 09024937da..8dd8510cbf 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 b5155300fe..3893860340 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 692e12d1c8..768952f283 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 ab9194e15d..636262b9f3 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 8edf765fbb..ad63d89459 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_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/periph/adc_f0_g0_c0.c b/cpu/stm32/periph/adc_f0_g0_c0.c index 6cefe50c32..73a93bd82f 100644 --- a/cpu/stm32/periph/adc_f0_g0_c0.c +++ b/cpu/stm32/periph/adc_f0_g0_c0.c @@ -201,7 +201,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_CFGR1_RES) != res) { return -1; } diff --git a/cpu/stm32/periph/adc_f2.c b/cpu/stm32/periph/adc_f2.c index 48a7bb1b6e..49f030f30b 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) != res) { return -1; } diff --git a/cpu/stm32/periph/adc_f3.c b/cpu/stm32/periph/adc_f3.c index 3e2504f86a..4e249f4874 100644 --- a/cpu/stm32/periph/adc_f3.c +++ b/cpu/stm32/periph/adc_f3.c @@ -207,7 +207,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) != res) { return -1; } diff --git a/cpu/stm32/periph/adc_f4_f7.c b/cpu/stm32/periph/adc_f4_f7.c index e946c1e2a7..947bd0f6f7 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) != res) { return -1; } diff --git a/cpu/stm32/periph/adc_l0.c b/cpu/stm32/periph/adc_l0.c index 99fad3c70d..7475a403a2 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) != res) { return -1; } diff --git a/cpu/stm32/periph/adc_l1.c b/cpu/stm32/periph/adc_l1.c index eeab76d997..78a3930579 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) != res) { return -1; } diff --git a/cpu/stm32/periph/adc_l4_wb.c b/cpu/stm32/periph/adc_l4_wb.c index 280a922f30..71a91b4a60 100644 --- a/cpu/stm32/periph/adc_l4_wb.c +++ b/cpu/stm32/periph/adc_l4_wb.c @@ -221,7 +221,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) != res) { return -1; } diff --git a/cpu/stm32/periph/adc_wl.c b/cpu/stm32/periph/adc_wl.c index 2d6866f376..3697986660 100644 --- a/cpu/stm32/periph/adc_wl.c +++ b/cpu/stm32/periph/adc_wl.c @@ -168,7 +168,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_CFGR1_RES) != res) { return -1; }