Functional Description
602
SLAU723A – October 2017 – Revised October 2018
Copyright © 2017–2018, Texas Instruments Incorporated
Micro Direct Memory Access (µDMA)
8.3.1 Priority
The µDMA controller assigns priority to each channel based on the channel number and the priority level
bit for the channel. Channel number 0 has the highest priority and as the channel number increases, the
priority of a channel decreases. Each channel has a priority level bit to provide two levels of priority:
default priority and high priority. If the priority level bit is set, then that channel has higher priority than all
other channels at default priority. If multiple channels are set for high priority, then the channel number is
used to determine relative priority among all the high-priority channels.
The priority bit for a channel can be set using the DMA Channel Priority Set (DMAPRIOSET) register and
cleared with the DMA Channel Priority Clear (DMAPRIOCLR) register.
NOTE:
If one peripheral is mapped to two different channels, then the application should either use
the default mapping for that peripheral or change the default mapping to another source. For
example, if UART1 channels 8 and 9 are enabled for use, then even if channels 22 and 23
are disabled, they must be mapped to software or another peripheral (if available).
8.3.2 Arbitration Size
When a µDMA channel requests a transfer, the µDMA controller arbitrates among all the channels making
a request and services the µDMA channel with the highest priority. When a transfer begins, it continues
for a selectable number of transfers before rearbitrating among the requesting channels again. The
arbitration size can be configured for each channel, ranging from 1 to 1024 item transfers. After the µDMA
controller transfers the number of items specified by the arbitration size, it then checks among all the
channels making a request and services the channel with the highest priority.
If a lower priority µDMA channel uses a large arbitration size, the latency for higher priority channels is
increased because the µDMA controller completes the lower priority burst before checking for higher
priority requests. Therefore, lower priority channels should not use a large arbitration size for best
response on high priority channels.
The arbitration size can also be thought of as a burst size. It is the maximum number of items that are
transferred at any one time in a burst. Here, the term arbitration refers to determination of µDMA channel
priority, not arbitration for the bus. When the µDMA controller arbitrates for the bus, the processor always
takes priority. Furthermore, the µDMA controller is held off whenever the processor must perform a bus
transaction on the same bus, even in the middle of a burst transfer.
8.3.3 Request Types
The µDMA controller responds to two types of requests from a peripheral: single or burst. Each peripheral
may support either or both types of requests. A single request means that the peripheral is ready to
transfer one item, while a burst request means that the peripheral is ready to transfer multiple items.
The µDMA controller responds differently depending on whether the peripheral is making a single request
or a burst request. If both are asserted, and the µDMA channel has been set up for a burst transfer, then
the burst request takes precedence.
shows how each peripheral supports the two request types.
Table 8-1. Request Type Support
Peripheral
Event That Generates Single
Request
Event That Generates Burst Request
ADC
FIFO not empty
FIFO half full
EPI WFIFO
None
WFIFO level (configurable)
EPI NBRFIFO
None
NBRFIFO level (configurable)
General-Purpose Timer
None
Trigger event
GPIO
None
Trigger event
I
2
C TX
TX buffer not full
TX FIFO level (configurable)
I
2
C RX
RX buffer not empty
RX FIFO level (configurable)
SSI TX
TX FIFO not full
TX FIFO level (fixed at 4)
SSI RX
RX FIFO not empty
RX FIFO level (fixed at 4)