aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32
diff options
context:
space:
mode:
authorxoviat <[email protected]>2025-11-13 07:38:06 -0600
committerxoviat <[email protected]>2025-11-13 07:38:06 -0600
commitc17d24d0cc8fedbe69b22032ea7323997ddfe4dc (patch)
treed0c94234a9ec9bbd471a0382a752267f763fd50a /embassy-stm32
parent4dedc1307cb088d5d28655b8427ae3a6176a216d (diff)
extract averaging enum
Diffstat (limited to 'embassy-stm32')
-rw-r--r--embassy-stm32/src/adc/c0.rs19
-rw-r--r--embassy-stm32/src/adc/mod.rs20
-rw-r--r--embassy-stm32/src/adc/v3.rs17
-rw-r--r--embassy-stm32/src/adc/v4.rs19
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 {
119 } 119 }
120} 120}
121 121
122/// Number of samples used for averaging.
123/// TODO: Implement hardware averaging setting.
124#[allow(unused)]
125#[derive(Copy, Clone, Debug)]
126#[cfg_attr(feature = "defmt", derive(defmt::Format))]
127pub enum Averaging {
128 Disabled,
129 Samples2,
130 Samples4,
131 Samples8,
132 Samples16,
133 Samples32,
134 Samples64,
135 Samples128,
136 Samples256,
137 Samples512,
138 Samples1024,
139}
140
141impl<'d, T: Instance> Adc<'d, T> { 122impl<'d, T: Instance> Adc<'d, T> {
142 /// Create a new ADC driver. 123 /// Create a new ADC driver.
143 pub fn new(adc: Peri<'d, T>, resolution: Resolution) -> Self { 124 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) {
148 } 148 }
149} 149}
150 150
151#[cfg(any(adc_c0, adc_v3, adc_g0, adc_h5, adc_h7rs, adc_u0, adc_v4, adc_u5))]
152/// Number of samples used for averaging.
153#[derive(Copy, Clone, Debug)]
154#[cfg_attr(feature = "defmt", derive(defmt::Format))]
155pub enum Averaging {
156 Disabled,
157 Samples2,
158 Samples4,
159 Samples8,
160 Samples16,
161 Samples32,
162 Samples64,
163 Samples128,
164 Samples256,
165 #[cfg(any(adc_c0, adc_v4, adc_u5))]
166 Samples512,
167 #[cfg(any(adc_c0, adc_v4, adc_u5))]
168 Samples1024,
169}
170
151#[cfg(any(adc_v2, adc_g4, adc_v3, adc_g0, adc_h5, adc_h7rs, adc_u0, adc_v4, adc_u5, adc_wba))] 171#[cfg(any(adc_v2, adc_g4, adc_v3, adc_g0, adc_h5, adc_h7rs, adc_u0, adc_v4, adc_u5, adc_wba))]
152#[allow(dead_code)] 172#[allow(dead_code)]
153pub(crate) enum ConversionMode { 173pub(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};
11 11
12#[allow(unused_imports)] 12#[allow(unused_imports)]
13use super::SealedAdcChannel; 13use super::SealedAdcChannel;
14use super::{Adc, Instance, Resolution, SampleTime, Temperature, Vbat, VrefInt, blocking_delay_us}; 14use super::{Adc, Averaging, Instance, Resolution, SampleTime, Temperature, Vbat, VrefInt, blocking_delay_us};
15use crate::adc::ConversionMode; 15use crate::adc::ConversionMode;
16use crate::{Peri, pac, rcc}; 16use crate::{Peri, pac, rcc};
17 17
@@ -100,21 +100,6 @@ cfg_if! {
100 } 100 }
101} 101}
102 102
103/// Number of samples used for averaging.
104#[derive(Copy, Clone, Debug)]
105#[cfg_attr(feature = "defmt", derive(defmt::Format))]
106pub enum Averaging {
107 Disabled,
108 Samples2,
109 Samples4,
110 Samples8,
111 Samples16,
112 Samples32,
113 Samples64,
114 Samples128,
115 Samples256,
116}
117
118cfg_if! { if #[cfg(adc_g0)] { 103cfg_if! { if #[cfg(adc_g0)] {
119 104
120/// Synchronous PCLK prescaler 105/// 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};
4use pac::adc::vals::{Adstp, Difsel, Dmngt, Exten, Pcsel}; 4use pac::adc::vals::{Adstp, Difsel, Dmngt, Exten, Pcsel};
5use pac::adccommon::vals::Presc; 5use pac::adccommon::vals::Presc;
6 6
7use super::{Adc, Instance, Resolution, SampleTime, Temperature, Vbat, VrefInt, blocking_delay_us}; 7use super::{Adc, Averaging, Instance, Resolution, SampleTime, Temperature, Vbat, VrefInt, blocking_delay_us};
8use crate::adc::ConversionMode; 8use crate::adc::ConversionMode;
9use crate::time::Hertz; 9use crate::time::Hertz;
10use crate::{Peri, pac, rcc}; 10use crate::{Peri, pac, rcc};
@@ -127,23 +127,6 @@ impl Prescaler {
127 } 127 }
128} 128}
129 129
130/// Number of samples used for averaging.
131#[derive(Copy, Clone, Debug)]
132#[cfg_attr(feature = "defmt", derive(defmt::Format))]
133pub enum Averaging {
134 Disabled,
135 Samples2,
136 Samples4,
137 Samples8,
138 Samples16,
139 Samples32,
140 Samples64,
141 Samples128,
142 Samples256,
143 Samples512,
144 Samples1024,
145}
146
147/// Adc configuration 130/// Adc configuration
148#[derive(Default)] 131#[derive(Default)]
149pub struct AdcConfig { 132pub struct AdcConfig {