I'm trying to use QDMA transfers using the EDMA3 LLD library. I my code currently works fine for the first transfer, but subsequent transfers don't work. Here's what I'm doing:
Setup:
EDMA3_DRV_create
EDMA3_DRV_open
EDMA3_DRV_requestChannel (QDMA channel 0 is specified, along with a callback for the interrupt)
First transfer:
EDMA3_DRV_setSrcParams
EDMA3_DRV_setDestParams
EDMA3_DRV_setOptField (mhEdma, ch, EDMA3_DRV_OPT_FIELD_TCINTEN, EDMA3_DRV_TCINTEN_EN);
EDMA3_DRV_setTransferParams (mhEdma, ch, acnt, bcnt, ccnt, 0, EDMA3_DRV_SYNC_AB);
Once the set TransferParams call is made, the transfer actually happens and an interrupt is generated. My int handler posts a semaphore and my task continues.
I then make the exact same sequence of calls for a second transfer. This time, when the TransferParams call is made, the first word (acnt) is transferred, but the transfer stops. The interrupt handler is never called and the rest of the transfer doesn't occur.
Any idea what I'm missing?
Dave