aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-stm32/src/sai/mod.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/embassy-stm32/src/sai/mod.rs b/embassy-stm32/src/sai/mod.rs
index 7d2f071de..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
@@ -1045,6 +1047,7 @@ impl<'d, T: Instance, W: word::Word> Drop for Sai<'d, T, W> {
1045 fn drop(&mut self) { 1047 fn drop(&mut self) {
1046 let ch = T::REGS.ch(self.sub_block as usize); 1048 let ch = T::REGS.ch(self.sub_block as usize);
1047 ch.cr1().modify(|w| w.set_saien(false)); 1049 ch.cr1().modify(|w| w.set_saien(false));
1050 ch.cr2().modify(|w| w.set_fflush(true));
1048 self.fs.as_ref().map(|x| x.set_as_disconnected()); 1051 self.fs.as_ref().map(|x| x.set_as_disconnected());
1049 self.sd.as_ref().map(|x| x.set_as_disconnected()); 1052 self.sd.as_ref().map(|x| x.set_as_disconnected());
1050 self.sck.as_ref().map(|x| x.set_as_disconnected()); 1053 self.sck.as_ref().map(|x| x.set_as_disconnected());