Skip to main content
Visitor II
April 23, 2025
Question

Problem syncing DMA with SAI2_A in synchronous slave mode

  • April 23, 2025
  • 0 replies
  • 330 views

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! 

    This topic has been closed for replies.