Problem syncing DMA with SAI2_A in synchronous slave mode
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-04-23 3:57 AM
I'm working on recording audio synchronously using multiple I2S microphones connected to different SAI subblocks on an STM32H7. I’m trying to synchronize all four SAI subblocks to ensure aligned multi-channel audio capture.
So far, I've successfully configured SAI1:
- SAI1_Block_A as Master RX (Asynchronous)
- SAI1_Block_B as Slave RX (Synchronous to same SAI). This internal synchronization works fine, and both DMA callbacks are triggered as expected.
However, when I configure SAI2_Block_A as a Synchronous Slave to SAI1, I encounter an issue:
- The DMA for SAI2_Block_A never completes (no callback, no data).
- But I can still see Data signals on the logic analyzer, coming in from the mic.
I’ve double-checked the physical wiring — BCLK and WS from the master are properly shared with the mic on SAI2_A.
While reading the STM32 reference manual, I noticed there are two modes: Asynchronous Slave and Synchronous Slave. My question is: “Is the "Synchronous Slave" mode only intended for internal sync within a single SAI or can it be used across SAIs (e.g., SAI2_A , SAI3_B, SAI4_A synced to SAI1_A)?"
I'd appreciate any insight or recommendations. Should I switch SAI2_A to "Asynchronous Slave" (but still wire WS/SCK from the master) to make it work?
Thanks in advance!
- Labels:
-
STM32H7 Series
