Hello All,
A fix was provided for this issue, it is only needed to disable Tx and Rx on SAI_TransferAbortSendEDMA and SAI_TransferAbortReceiveEDMA respectively:
void SAI_TransferAbortSendEDMA(I2S_Type *base, sai_edma_handle_t *handle)
{
assert(handle);
/* Disable dma */
EDMA_AbortTransfer(handle->dmaHandle);
/* Disable DMA enable bit */
SAI_TxEnableDMA(base, kSAI_FIFORequestDMAEnable, false);
#if APPLY_FIX
/* Disable Tx */
SAI_TxEnable(base, false);
#endif
/* Set the handle state */
handle->state = kSAI_Idle;
}
void SAI_TransferAbortReceiveEDMA(I2S_Type *base, sai_edma_handle_t *handle)
{
assert(handle);
/* Disable dma */
EDMA_AbortTransfer(handle->dmaHandle);
/* Disable DMA enable bit */
SAI_RxEnableDMA(base, kSAI_FIFORequestDMAEnable, false);
#if APPLY_FIX
/* Disable Rx */
SAI_RxEnable(base, false);
#endif
/* Set the handle state */
handle->state = kSAI_Idle;
}
If you disable Tx and Rx and leave the driver as it was (without clearing FEF flag) it should be working properly.
Regards,
Isaac