Skip to main content
_andreas
Senior
January 19, 2023
Solved

Transfer complete from GPDMA1 missing for SAI sync slave receiver

I configured SAI1 as

BlockA: I2S async slave transmitter

BockB: I2S sync slave receiver

managing the data transfers with GPDMA1.

The slave transmitter works fine, I get the half transfer and transfer complete interrupts correctly.

But for the slave receiver, I get only the half transfer interrupt and the next thing that happens is the SAI overrun interrupt. CBR1 is not reloaded, despite the configuration in the LLR. I never get the transfer complete interrupt.

The configuration for both DMA channels and both SAI block is virtually the same, except where RX, TX and trigger selection make a difference.

Any ideas on what I could be missing?

On half transfer the SAI_RXCHANNEL->CSR = 0x40200

On SAI 1 interrupt,

SAI_Slave_RX->SR = 0x9

and

SAI_RXCHANNEL->CSR = 0x30000

(the RX fifo of that DMA channel is full, but it claims to work as expected ???)

Thanks

This topic has been closed for replies.
_andreas
_andreasBest answer
Senior
January 20, 2023

My current work around is to reconfigure the channel during the half transfer interrupt. This works in my specific case.

1 reply

_andreas
_andreasAuthorBest answer
Senior
January 20, 2023

My current work around is to reconfigure the channel during the half transfer interrupt. This works in my specific case.