aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-stm32/src/adc/g4.rs22
-rw-r--r--embassy-stm32/src/adc/mod.rs2
2 files changed, 15 insertions, 9 deletions
diff --git a/embassy-stm32/src/adc/g4.rs b/embassy-stm32/src/adc/g4.rs
index 896a70578..3e9ba8ae2 100644
--- a/embassy-stm32/src/adc/g4.rs
+++ b/embassy-stm32/src/adc/g4.rs
@@ -1,9 +1,9 @@
1#[allow(unused)] 1#[allow(unused)]
2
3#[cfg(stm32g4)]
4use pac::adc::vals::{Adcaldif, Difsel, Exten, Rovsm, Trovs};
5#[cfg(stm32h7)] 2#[cfg(stm32h7)]
6use pac::adc::vals::{Adcaldif, Difsel, Exten}; 3use pac::adc::vals::{Adcaldif, Difsel, Exten};
4#[allow(unused)]
5#[cfg(stm32g4)]
6use pac::adc::vals::{Adcaldif, Difsel, Exten, Rovsm, Trovs};
7use pac::adccommon::vals::Presc; 7use pac::adccommon::vals::Presc;
8 8
9use super::{blocking_delay_us, Adc, AdcChannel, Instance, Resolution, SampleTime}; 9use super::{blocking_delay_us, Adc, AdcChannel, Instance, Resolution, SampleTime};
@@ -241,10 +241,17 @@ impl<'d, T: Instance> Adc<'d, T> {
241 /// channel on the other ADC unusable. The only exception is when ADC master and the slave 241 /// channel on the other ADC unusable. The only exception is when ADC master and the slave
242 /// operate in interleaved mode. 242 /// operate in interleaved mode.
243 #[cfg(stm32g4)] 243 #[cfg(stm32g4)]
244 pub fn set_differential_channel(&mut self, ch: usize ,enable: bool) { 244 pub fn set_differential_channel(&mut self, ch: usize, enable: bool) {
245 T::regs().cr().modify(|w| w.set_aden(false)); // disable adc 245 T::regs().cr().modify(|w| w.set_aden(false)); // disable adc
246 T::regs().difsel().modify(|w| { 246 T::regs().difsel().modify(|w| {
247 w.set_difsel(ch, if enable { Difsel::DIFFERENTIAL } else { Difsel::SINGLEENDED }); 247 w.set_difsel(
248 ch,
249 if enable {
250 Difsel::DIFFERENTIAL
251 } else {
252 Difsel::SINGLEENDED
253 },
254 );
248 }); 255 });
249 T::regs().cr().modify(|w| w.set_aden(true)); 256 T::regs().cr().modify(|w| w.set_aden(true));
250 } 257 }
@@ -268,8 +275,8 @@ impl<'d, T: Instance> Adc<'d, T> {
268 275
269 /// Enable oversampling in regular mode. 276 /// Enable oversampling in regular mode.
270 #[cfg(stm32g4)] 277 #[cfg(stm32g4)]
271 pub fn enable_regular_oversampling_mode(&mut self,mode:Rovsm,trig_mode:Trovs, enable: bool) { 278 pub fn enable_regular_oversampling_mode(&mut self, mode: Rovsm, trig_mode: Trovs, enable: bool) {
272 T::regs().cfgr2().modify(|reg| reg.set_trovs(trig_mode)); 279 T::regs().cfgr2().modify(|reg| reg.set_trovs(trig_mode));
273 T::regs().cfgr2().modify(|reg| reg.set_rovsm(mode)); 280 T::regs().cfgr2().modify(|reg| reg.set_rovsm(mode));
274 T::regs().cfgr2().modify(|reg| reg.set_rovse(enable)); 281 T::regs().cfgr2().modify(|reg| reg.set_rovse(enable));
275 } 282 }
@@ -287,7 +294,6 @@ impl<'d, T: Instance> Adc<'d, T> {
287 // T::regs().cfgr2().modify(|reg| reg.set_jovse(enable)); 294 // T::regs().cfgr2().modify(|reg| reg.set_jovse(enable));
288 // } 295 // }
289 296
290
291 /// Set the ADC sample time. 297 /// Set the ADC sample time.
292 pub fn set_sample_time(&mut self, sample_time: SampleTime) { 298 pub fn set_sample_time(&mut self, sample_time: SampleTime) {
293 self.sample_time = sample_time; 299 self.sample_time = sample_time;
diff --git a/embassy-stm32/src/adc/mod.rs b/embassy-stm32/src/adc/mod.rs
index b530bb4c8..30f7de09b 100644
--- a/embassy-stm32/src/adc/mod.rs
+++ b/embassy-stm32/src/adc/mod.rs
@@ -23,10 +23,10 @@ pub use _version::*;
23#[cfg(any(adc_f1, adc_f3, adc_v1, adc_l0, adc_f3_v1_1))] 23#[cfg(any(adc_f1, adc_f3, adc_v1, adc_l0, adc_f3_v1_1))]
24use embassy_sync::waitqueue::AtomicWaker; 24use embassy_sync::waitqueue::AtomicWaker;
25 25
26pub use crate::pac::adc::vals;
26#[cfg(not(any(adc_f1, adc_f3_v2)))] 27#[cfg(not(any(adc_f1, adc_f3_v2)))]
27pub use crate::pac::adc::vals::Res as Resolution; 28pub use crate::pac::adc::vals::Res as Resolution;
28pub use crate::pac::adc::vals::SampleTime; 29pub use crate::pac::adc::vals::SampleTime;
29pub use crate::pac::adc::vals ;
30use crate::peripherals; 30use crate::peripherals;
31 31
32dma_trait!(RxDma, Instance); 32dma_trait!(RxDma, Instance);