diff options
| author | elagil <[email protected]> | 2024-11-15 00:07:23 +0100 |
|---|---|---|
| committer | elagil <[email protected]> | 2024-11-15 00:07:23 +0100 |
| commit | edb9b03deeddf306208c685b91d294a93d0ca54f (patch) | |
| tree | 16bd3a4f067b9aff3286eaaeed45f1c0fe9d152f | |
| parent | 4692f06c33ba18bc6ecd5522ac794aea954ec9f2 (diff) | |
fix: flush SAI FIFO on init
| -rw-r--r-- | embassy-stm32/src/sai/mod.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/embassy-stm32/src/sai/mod.rs b/embassy-stm32/src/sai/mod.rs index 1b26011db..62b44b77f 100644 --- a/embassy-stm32/src/sai/mod.rs +++ b/embassy-stm32/src/sai/mod.rs | |||
| @@ -861,12 +861,15 @@ impl<'d, T: Instance, W: word::Word> Sai<'d, T, W> { | |||
| 861 | ring_buffer: RingBuffer<'d, W>, | 861 | ring_buffer: RingBuffer<'d, W>, |
| 862 | config: Config, | 862 | config: Config, |
| 863 | ) -> Self { | 863 | ) -> Self { |
| 864 | let ch = T::REGS.ch(sub_block as usize); | ||
| 865 | |||
| 864 | #[cfg(any(sai_v1, sai_v2, sai_v3_2pdm, sai_v3_4pdm, sai_v4_2pdm, sai_v4_4pdm))] | 866 | #[cfg(any(sai_v1, sai_v2, sai_v3_2pdm, sai_v3_4pdm, sai_v4_2pdm, sai_v4_4pdm))] |
| 865 | { | 867 | { |
| 866 | let ch = T::REGS.ch(sub_block as usize); | ||
| 867 | ch.cr1().modify(|w| w.set_saien(false)); | 868 | ch.cr1().modify(|w| w.set_saien(false)); |
| 868 | } | 869 | } |
| 869 | 870 | ||
| 871 | ch.cr2().modify(|w| w.set_fflush(true)); | ||
| 872 | |||
| 870 | #[cfg(any(sai_v4_2pdm, sai_v4_4pdm))] | 873 | #[cfg(any(sai_v4_2pdm, sai_v4_4pdm))] |
| 871 | { | 874 | { |
| 872 | if let SyncInput::External(i) = config.sync_input { | 875 | if let SyncInput::External(i) = config.sync_input { |
| @@ -888,7 +891,6 @@ impl<'d, T: Instance, W: word::Word> Sai<'d, T, W> { | |||
| 888 | 891 | ||
| 889 | #[cfg(any(sai_v1, sai_v2, sai_v3_2pdm, sai_v3_4pdm, sai_v4_2pdm, sai_v4_4pdm))] | 892 | #[cfg(any(sai_v1, sai_v2, sai_v3_2pdm, sai_v3_4pdm, sai_v4_2pdm, sai_v4_4pdm))] |
| 890 | { | 893 | { |
| 891 | let ch = T::REGS.ch(sub_block as usize); | ||
| 892 | ch.cr1().modify(|w| { | 894 | ch.cr1().modify(|w| { |
| 893 | w.set_mode(config.mode.mode(if Self::is_transmitter(&ring_buffer) { | 895 | w.set_mode(config.mode.mode(if Self::is_transmitter(&ring_buffer) { |
| 894 | TxRx::Transmitter | 896 | TxRx::Transmitter |
