aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32/src/dac
diff options
context:
space:
mode:
authorJuliDi <[email protected]>2023-07-22 19:25:02 +0200
committerJuliDi <[email protected]>2023-07-22 19:25:02 +0200
commit80ce6d1fb7eeb4617c2d10468e136a5013d71ac3 (patch)
treeaa526e2591bd259def19c565ebc06529903ee884 /embassy-stm32/src/dac
parent224fbc8125de73e08c0fe03df6d3980001f77c7f (diff)
update DAC triggers to incorporate v3
Diffstat (limited to 'embassy-stm32/src/dac')
-rw-r--r--embassy-stm32/src/dac/mod.rs49
1 files changed, 43 insertions, 6 deletions
diff --git a/embassy-stm32/src/dac/mod.rs b/embassy-stm32/src/dac/mod.rs
index 3dee242ef..6712585cf 100644
--- a/embassy-stm32/src/dac/mod.rs
+++ b/embassy-stm32/src/dac/mod.rs
@@ -38,11 +38,30 @@ impl Channel {
38#[cfg_attr(feature = "defmt", derive(defmt::Format))] 38#[cfg_attr(feature = "defmt", derive(defmt::Format))]
39/// Trigger sources for CH1 39/// Trigger sources for CH1
40pub enum Ch1Trigger { 40pub enum Ch1Trigger {
41 Tim6, 41 #[cfg(dac_v3)]
42 Tim1,
43 Tim2,
44 #[cfg(not(dac_v2))]
42 Tim3, 45 Tim3,
46 #[cfg(dac_v3)]
47 Tim4,
48 #[cfg(dac_v3)]
49 Tim5,
50 Tim6,
43 Tim7, 51 Tim7,
52 #[cfg(dac_v3)]
53 Tim8,
44 Tim15, 54 Tim15,
45 Tim2, 55 #[cfg(dac_v3)]
56 Hrtim1Dactrg1,
57 #[cfg(dac_v3)]
58 Hrtim1Dactrg2,
59 #[cfg(dac_v3)]
60 Lptim1,
61 #[cfg(dac_v3)]
62 Lptim2,
63 #[cfg(dac_v3)]
64 Lptim3,
46 Exti9, 65 Exti9,
47 Software, 66 Software,
48} 67}
@@ -50,11 +69,30 @@ pub enum Ch1Trigger {
50impl Ch1Trigger { 69impl Ch1Trigger {
51 fn tsel(&self) -> dac::vals::Tsel1 { 70 fn tsel(&self) -> dac::vals::Tsel1 {
52 match self { 71 match self {
53 Ch1Trigger::Tim6 => dac::vals::Tsel1::TIM6_TRGO, 72 #[cfg(dac_v3)]
73 Ch1Trigger::Tim1 => dac::vals::Tsel1::TIM1_TRGO,
74 Ch1Trigger::Tim2 => dac::vals::Tsel1::TIM2_TRGO,
75 #[cfg(dac_v2)]
54 Ch1Trigger::Tim3 => dac::vals::Tsel1::TIM3_TRGO, 76 Ch1Trigger::Tim3 => dac::vals::Tsel1::TIM3_TRGO,
77 #[cfg(dac_v3)]
78 Ch1Trigger::Tim4 => dac::vals::Tsel1::TIM4_TRGO,
79 #[cfg(dac_v3)]
80 Ch1Trigger::Tim5 => dac::vals::Tsel1::TIM5_TRGO,
81 Ch1Trigger::Tim6 => dac::vals::Tsel1::TIM6_TRGO,
55 Ch1Trigger::Tim7 => dac::vals::Tsel1::TIM7_TRGO, 82 Ch1Trigger::Tim7 => dac::vals::Tsel1::TIM7_TRGO,
83 #[cfg(dac_v3)]
84 Ch1Trigger::Tim8 => dac::vals::Tsel1::TIM8_TRGO,
56 Ch1Trigger::Tim15 => dac::vals::Tsel1::TIM15_TRGO, 85 Ch1Trigger::Tim15 => dac::vals::Tsel1::TIM15_TRGO,
57 Ch1Trigger::Tim2 => dac::vals::Tsel1::TIM2_TRGO, 86 #[cfg(dac_v3)]
87 Ch1Trigger::Hrtim1Dactrg1 => dac::vals::Tsel1::HRTIM1_DACTRG1,
88 #[cfg(dac_v3)]
89 Ch1Trigger::Hrtim1Dactrg2 => dac::vals::Tsel1::HRTIM1_DACTRG2,
90 #[cfg(dac_v3)]
91 Ch1Trigger::Lptim1 => dac::vals::Tsel1::LPTIM1_OUT,
92 #[cfg(dac_v3)]
93 Ch1Trigger::Lptim2 => dac::vals::Tsel1::LPTIM2_OUT,
94 #[cfg(dac_v3)]
95 Ch1Trigger::Lptim3 => dac::vals::Tsel1::LPTIM3_OUT,
58 Ch1Trigger::Exti9 => dac::vals::Tsel1::EXTI9, 96 Ch1Trigger::Exti9 => dac::vals::Tsel1::EXTI9,
59 Ch1Trigger::Software => dac::vals::Tsel1::SOFTWARE, 97 Ch1Trigger::Software => dac::vals::Tsel1::SOFTWARE,
60 } 98 }
@@ -363,7 +401,6 @@ impl<'d, T: Instance, Tx> DacCh2<'d, T, Tx> {
363 /// Note that for performance reasons in circular mode the transfer complete interrupt is disabled. 401 /// Note that for performance reasons in circular mode the transfer complete interrupt is disabled.
364 /// 402 ///
365 /// **Important:** Channel 2 has to be configured for the DAC instance! 403 /// **Important:** Channel 2 has to be configured for the DAC instance!
366 #[cfg(all(bdma, not(dma)))] // It currently only works with BDMA-only chips (DMA should theoretically work though)
367 pub async fn write(&mut self, data: ValueArray<'_>, circular: bool) -> Result<(), Error> 404 pub async fn write(&mut self, data: ValueArray<'_>, circular: bool) -> Result<(), Error>
368 where 405 where
369 Tx: DmaCh2<T>, 406 Tx: DmaCh2<T>,
@@ -467,7 +504,7 @@ impl<'d, T: Instance, TxCh1, TxCh2> Dac<'d, T, TxCh1, TxCh2> {
467 dac_ch1.enable_channel().unwrap(); 504 dac_ch1.enable_channel().unwrap();
468 dac_ch1.set_trigger_enable(true).unwrap(); 505 dac_ch1.set_trigger_enable(true).unwrap();
469 506
470 #[cfg(dac_v2)] 507 #[cfg(any(dac_v2, dac_v3))]
471 dac_ch2.set_channel_mode(0).unwrap(); 508 dac_ch2.set_channel_mode(0).unwrap();
472 dac_ch2.enable_channel().unwrap(); 509 dac_ch2.enable_channel().unwrap();
473 dac_ch2.set_trigger_enable(true).unwrap(); 510 dac_ch2.set_trigger_enable(true).unwrap();