DMA controller (DMA)
9
DMA controller (DMA)
This section applies to the whole STM32F4xx family, unless otherwise specified.
9.1
DMA introduction
Direct memory access (DMA) is used in order to provide high-speed data transfer between
peripherals and memory and between memory and memory. Data can be quickly moved by
DMA without any CPU action. This keeps CPU resources free for other operations.
The DMA controller combines a powerful dual AHB master bus architecture with
independent FIFO to optimize the bandwidth of the system, based on a complex bus matrix
architecture.
The two DMA controllers have 16 streams in total (8 for each controller), each dedicated to
managing memory access requests from one or more peripherals. Each stream can have
up to 8 channels (requests) in total. And each has an arbiter for handling the priority
between DMA requests.
9.2
DMA main features
The main DMA features are:
●
Dual AHB master bus architecture, one dedicated to memory accesses and one
dedicated to peripheral accesses
●
AHB slave programming interface supporting only 32-bit accesses
●
8 streams for each DMA controller, up to 8 channels (requests) per stream
●
Four separate 32 first-in, first-out memory buffers (FIFOs) per stream, that can be used
in FIFO mode or direct mode:
–
–
213/1422
FIFO mode: with threshold level software selectable between 1/4, 1/2 or 3/4 of the
FIFO size
Direct mode
Each DMA request immediately initiates a transfer from/to the memory. When it is
configured in direct mode (FIFO disabled), to transfer data in memory-to-
peripheral mode, the DMA preloads only one data from the memory to the internal
Doc ID 018909 Rev 4
RM0090
Need help?
Do you have a question about the STM32F40 Series and is the answer not in the manual?
Questions and answers