diff options
| author | JuliDi <[email protected]> | 2023-07-22 19:25:02 +0200 |
|---|---|---|
| committer | JuliDi <[email protected]> | 2023-07-22 19:25:02 +0200 |
| commit | 80ce6d1fb7eeb4617c2d10468e136a5013d71ac3 (patch) | |
| tree | aa526e2591bd259def19c565ebc06529903ee884 /embassy-stm32/src/dac | |
| parent | 224fbc8125de73e08c0fe03df6d3980001f77c7f (diff) | |
update DAC triggers to incorporate v3
Diffstat (limited to 'embassy-stm32/src/dac')
| -rw-r--r-- | embassy-stm32/src/dac/mod.rs | 49 |
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 |
| 40 | pub enum Ch1Trigger { | 40 | pub 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 { | |||
| 50 | impl Ch1Trigger { | 69 | impl 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(); |
