2023-01-19 09:44 AM
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
Solved! Go to Solution.
2023-01-20 02:54 AM
My current work around is to reconfigure the channel during the half transfer interrupt. This works in my specific case.
2023-01-20 02:54 AM
My current work around is to reconfigure the channel during the half transfer interrupt. This works in my specific case.