how can I abort an EDMA that is in progress?
I have a situation that I will need to abort a EDMA transfer if it takes too long.
while I am polling the IPR bit for completion, if I detect a timeout I need to
abort the current EDMA transfer and do what ever EDMA cleanup needed
so a different EDMA transfer can be done.
here is high level code example:
CSL_edma3Init(NULL)
handle = CSL_edma3Open(&obj, edmaNum, NULL, &status);
channelHandle = CSL_edma3ChannelOpen(&channelObj, edmaNum, &channelAttr, &status);
CSL_edma3HwChannelSetupQue(channelHandle, evtQue)
CSL_edma3MapDMAChannelToParamBlock (handle, dmaChannel, paramNum);
paramHandle = CSL_edma3GetParamHandle(channelHandle, paramNum, &status);
CSL_edma3ParamSetup(paramHandle, ¶mSetup)
CSL_edma3HwControl(handle, CSL_EDMA3_CMD_INTR_ENABLE, &cmdIntr);
CSL_edma3HwChannelControl(channelHandle, CSL_EDMA3_CMD_CHANNEL_SET, NULL);
// poll IPR bit for completion
do {
CSL_edma3GetHwStatus(handle, CSL_EDMA3_QUERY_INTRPEND, &cmdIntr);
} while ((!(cmdIntr.intr & chIPRBit)) && (timeoutFlag==0));
if (timeoutFlag == 1) {
// HOW TO ABORT EDMA TRANSFER
}
CSL_edma3HwControl(handle, CSL_EDMA3_CMD_INTRPEND_CLEAR, &cmdIntr);
CSL_edma3ChannelClose(channelHandle)
CSL_edma3Close(handle)
thanks in advance for any help,
lwmcgl