2024-02-07 01:40 AM
In the STM32H7 ref manual (RM0433 - Section 51.4.4), the following is said about configuring an SAI block in synchronous mode with the other SAI block in the same SAI peripheral
I'm confused about the following statements:
What is meant by full duplex mode above?
Option A makes sense to me, but for option B, is it valid for a slave block to be Asynchronous ?
My SAI implementation on STM32H753 is configured as follows, is this a valid synchronization setup?
SAI2-A : Master transmitter, asynchronous
SAI2-B : Slave receiver, synchronous with SAI2-A
SAI3-A : Slave transmitter, synchronous with SAI2
SAI3-B : Slave receiver, synchronous with SAI2
SAI2 SYNCOUT has been set to block A
2024-02-07 03:13 AM
Full duplex means that one block within on1 SAI is transmitter, the other receiver (e.g. for a stereo codec).
I also don't get the meaning of that RM excerpt.
But your setup makes sense. If you are using CubeMX, better check the CR1 SYNC_EN settings, which should be:
SAI2-A : Master TX, async: SYNC_EN = 00
SAI2-B : Slave RX, sync with SAI2-A: SYNC_EN = 01
SAI3-A : Slave TX, sync with SAI2: SYNC_EN = 10
SAI3-B : Slave RX, sync with SAI2: SYNC_EN = 10
with SAI2 SAI_GCR SYNCOUT = 01 -> 2A as sync source
I love the H7 SAI's internal sync capability - but I am a little disappointed that the I2S can't be sync'd internally (just doing the routing, terrible...)