Announcements

Community will be in read-only mode on 25th Sep for 10 hours. Click here for more details

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

AURIX™ MCU: DMA channel 'Transfer Request Lost' error – KBA235712

AURIX™ MCU: DMA channel 'Transfer Request Lost' error – KBA235712

IFX_Publisher2
Community Manager
Community Manager
Community Manager
1000 replies posted First like given 750 replies posted

Community Translation: AURIX™ MCU: DMAチャネル '転送要求消失(Transfer Request Lost)' エラー – KBA235712

Version: **

A DMA channel Transfer Request Lost (TRL) event is generated at the end of the DMA transaction in single mode even if data is correctly transferred. This happens in specific configurations when the DMA is used to transfer data from internal memory to a communication functional block FIFO (e.g., QSPI).

In single mode (CHCFGRc.CHMODE = 0), the DMA disables servicing hardware requests (TSRc.HTRE = 0) as soon as it finishes the DMA transaction.

In TC3xx devices[1], DMA is enhanced by reporting a TRL interrupt if a HW request is received when the DMA channel is disabled for HW requests (TSRc.HTRE = 0).

Note:   Disabling the TRL interrupt (TSRc.ETRL = 0) will not prevent the interrupt generation[2].

The example in the figure below shows that in total (n+1) interrupts are triggered by the QSPI (in TxFIFO single move mode) in order to transfer (n) words. The last interrupt (#) occurs after the DMA transaction is complete (TSRc.HTRE = 0); as a result, DMA will generate a TRL in this case.

BinduPriya_G_0-1656935242372.png

Workaround:

It is possible to avoid the TRL event by implementing a linked list with a dummy DMA transaction. This DMA transaction should transfer data to an unused RAM memory when the last interrupt (#) is triggered. Use the following DMA channel configuration:

  • DMA transaction:
    • Select linked list mode (ADICRz.SHCT = 0xC).
    • Select continuous mode (CHCFGRz.CHMODE = 0x1), TSRz.HTRE will remain 1 after the DMA transaction.
    • Point to the dummy transaction (SHADRz = dummy_tcs;).
  • Use a dummy DMA transaction (dummy_tcs) that transfers a word to an unused RAM location. This transaction will be triggered by the last interrupt.

For more details, see the "Data Communication” and “TXFIFO Interrupt Generation” sections in the User’s manual.

Note:  This KBA applies to the following series of AURIX™ MCUs:

  • AURIX™ TC3xx series
0 Likes
399 Views