cancel
Showing results for 
Search instead for 
Did you mean: 

Problem syncing DMA with SAI2_A in synchronous slave mode

crazyblueer
Associate II

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! 

0 REPLIES 0