cancel
Showing results for 
Search instead for 
Did you mean: 

Transfer complete from GPDMA1 missing for SAI sync slave receiver

_andreas
Senior

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

1 ACCEPTED SOLUTION

Accepted Solutions
_andreas
Senior

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

View solution in original post

1 REPLY 1
_andreas
Senior

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