From c17d24d0cc8fedbe69b22032ea7323997ddfe4dc Mon Sep 17 00:00:00 2001 From: xoviat Date: Thu, 13 Nov 2025 07:38:06 -0600 Subject: extract averaging enum --- embassy-stm32/src/adc/c0.rs | 19 ------------------- embassy-stm32/src/adc/mod.rs | 20 ++++++++++++++++++++ embassy-stm32/src/adc/v3.rs | 17 +---------------- embassy-stm32/src/adc/v4.rs | 19 +------------------ 4 files changed, 22 insertions(+), 53 deletions(-) diff --git a/embassy-stm32/src/adc/c0.rs b/embassy-stm32/src/adc/c0.rs index bc97a7c4b..8992d6e6e 100644 --- a/embassy-stm32/src/adc/c0.rs +++ b/embassy-stm32/src/adc/c0.rs @@ -119,25 +119,6 @@ impl<'a> defmt::Format for Prescaler { } } -/// Number of samples used for averaging. -/// TODO: Implement hardware averaging setting. -#[allow(unused)] -#[derive(Copy, Clone, Debug)] -#[cfg_attr(feature = "defmt", derive(defmt::Format))] -pub enum Averaging { - Disabled, - Samples2, - Samples4, - Samples8, - Samples16, - Samples32, - Samples64, - Samples128, - Samples256, - Samples512, - Samples1024, -} - impl<'d, T: Instance> Adc<'d, T> { /// Create a new ADC driver. pub fn new(adc: Peri<'d, T>, resolution: Resolution) -> Self { diff --git a/embassy-stm32/src/adc/mod.rs b/embassy-stm32/src/adc/mod.rs index 856c2e61e..c91d68e87 100644 --- a/embassy-stm32/src/adc/mod.rs +++ b/embassy-stm32/src/adc/mod.rs @@ -148,6 +148,26 @@ pub(crate) fn blocking_delay_us(us: u32) { } } +#[cfg(any(adc_c0, adc_v3, adc_g0, adc_h5, adc_h7rs, adc_u0, adc_v4, adc_u5))] +/// Number of samples used for averaging. +#[derive(Copy, Clone, Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] +pub enum Averaging { + Disabled, + Samples2, + Samples4, + Samples8, + Samples16, + Samples32, + Samples64, + Samples128, + Samples256, + #[cfg(any(adc_c0, adc_v4, adc_u5))] + Samples512, + #[cfg(any(adc_c0, adc_v4, adc_u5))] + Samples1024, +} + #[cfg(any(adc_v2, adc_g4, adc_v3, adc_g0, adc_h5, adc_h7rs, adc_u0, adc_v4, adc_u5, adc_wba))] #[allow(dead_code)] pub(crate) enum ConversionMode { diff --git a/embassy-stm32/src/adc/v3.rs b/embassy-stm32/src/adc/v3.rs index 4cce1dac3..fa191c663 100644 --- a/embassy-stm32/src/adc/v3.rs +++ b/embassy-stm32/src/adc/v3.rs @@ -11,7 +11,7 @@ pub use pac::adc::vals::{Ovsr, Ovss, Presc}; #[allow(unused_imports)] use super::SealedAdcChannel; -use super::{Adc, Instance, Resolution, SampleTime, Temperature, Vbat, VrefInt, blocking_delay_us}; +use super::{Adc, Averaging, Instance, Resolution, SampleTime, Temperature, Vbat, VrefInt, blocking_delay_us}; use crate::adc::ConversionMode; use crate::{Peri, pac, rcc}; @@ -100,21 +100,6 @@ cfg_if! { } } -/// Number of samples used for averaging. -#[derive(Copy, Clone, Debug)] -#[cfg_attr(feature = "defmt", derive(defmt::Format))] -pub enum Averaging { - Disabled, - Samples2, - Samples4, - Samples8, - Samples16, - Samples32, - Samples64, - Samples128, - Samples256, -} - cfg_if! { if #[cfg(adc_g0)] { /// Synchronous PCLK prescaler diff --git a/embassy-stm32/src/adc/v4.rs b/embassy-stm32/src/adc/v4.rs index 43eb16fd5..1b17b744f 100644 --- a/embassy-stm32/src/adc/v4.rs +++ b/embassy-stm32/src/adc/v4.rs @@ -4,7 +4,7 @@ use pac::adc::vals::{Adcaldif, Boost}; use pac::adc::vals::{Adstp, Difsel, Dmngt, Exten, Pcsel}; use pac::adccommon::vals::Presc; -use super::{Adc, Instance, Resolution, SampleTime, Temperature, Vbat, VrefInt, blocking_delay_us}; +use super::{Adc, Averaging, Instance, Resolution, SampleTime, Temperature, Vbat, VrefInt, blocking_delay_us}; use crate::adc::ConversionMode; use crate::time::Hertz; use crate::{Peri, pac, rcc}; @@ -127,23 +127,6 @@ impl Prescaler { } } -/// Number of samples used for averaging. -#[derive(Copy, Clone, Debug)] -#[cfg_attr(feature = "defmt", derive(defmt::Format))] -pub enum Averaging { - Disabled, - Samples2, - Samples4, - Samples8, - Samples16, - Samples32, - Samples64, - Samples128, - Samples256, - Samples512, - Samples1024, -} - /// Adc configuration #[derive(Default)] pub struct AdcConfig { -- cgit