Application note

How to use the GPDMA for STM32 MCUs

Rev 9 - June 2026

Introduction

This application note relates to the general purpose DMA (GPDMA). The GPDMA is a system peripheral, and is a dual-port master on the AHB bus. It is used to transfer data between peripherals and/or memories via linked lists. All the GPDMA programmable transfers provide higher performance at system level, and unload the CPU of performing these data transfer tasks.

The aim of this document is not to rewrite the GPDMA dedicated section in the reference manual, but to provide some performance-oriented programming guidelines to the system developer.

This document is based on the combined capabilities of the GPDMA, and of the peripheral assisted by the GPDMA. It focuses on the key points to consider in order to optimize system performance, and to match the application requirements.

This application note explains the rationale, and gives recommendations about:

  • GPDMA channel allocation
  • GPDMA ports allocation
    • for the transfer from the memory-mapped source location
    • for the transfer to the memory-mapped destination location
  • GPDMA transfer priority assignment
  • GPDMA source/destination burst programming, in terms of data width and burst length
Table 1. Applicable products
TypeProducts
Microcontrollers
  • STM32H5 series
  • STM32H7R3/7S3 line
  • STM32H7R7/7S7 line
  • STM32U5 series
  • STM32U3 series
  • STM32N6 series

General information

This application note applies to the STM32 series microcontrollers that are Arm® Cortex® core-based devices.



Note:

Arm and Cortex are registered trademarks of Arm Limited (or its subsidiaries or affiliates) in the US and/or elsewhere.

The Arm word and logo are trademarks of Arm Limited (or its subsidiaries) in the US and/or elsewhere. All rights reserved.

Reference documents

[1]Reference manual STM32H523/33xx, STM32H562/63xx, and STM32H573xx Arm®-based 32-bit MCUs (RM0481)
[2]STM32H523xx datasheet (DS14540)
[3]STM32H533xx datasheet (DS14539)
[4]STM32H562xx and STM32H563xx datasheet (DS14258)
[5]STM32H573xx datasheet (DS14121)
[6]STM32H523xx and STM32H533xx device errata sheet (ES0621)
[7]STM32H562xx/563xx/573xx device errata (ES0565)
[8]Reference manual STM32H503 line Arm®-based 32-bit MCUs (RM0492)
[9]STM32H503xx datasheet (DS14053)
[10]STM32H503xx device errata sheet (ES0561)
[11]Reference manual STM32H7Rx/7Sx Arm®-based 32-bit MCUs (RM0477)
[12]STM32H7Sxx8 datasheet (DS14359)
[13]STM32H7Rxx8 datasheet (DS14360)
[14]STM32H7Rxx/7Sxx device errata sheet (ES0596)
[15]Reference manual STM32U5 series Arm®-based 32-bit MCUs (RM0456)
[16]STM32U585xx datasheet (DS13086)
[17]STM32U575xx datasheet (DS13737)
[18]STM32U5Axxx datasheet (DS13543)
[19]STM32U59xxx datasheet (DS13633)
[20]STM32U545xx datasheet (DS14216)
[21]STM32U535xx datasheet (DS14217)
[22]STM32U5Gxxx datasheet (DS14102)
[23]STM32U5Fxxx datasheet (DS14395)
[24]STM32U535xx and STM32U545xx device errata sheet (ES0587)
[25]STM32U575xx and STM32U585xx device errata sheet (ES0499)
[26]STM32U59xxx and STM32U5Axxx device errata sheet (ES0553)
[27]STM32U5Fxxx and STM32U5Gxxx device errata sheet (ES0595)
[28]Reference manual STM32U3 series Arm®-based 32-bit MCUs (RM0487)
[29]STM32U385xx datasheet (DS14830)
[30]STM32U375xx datasheet (DS14861)
[31]STM32U375xx and STM32U385xx device errata sheet (ES0626)
[32]Reference manual STM32H5E4/H5F4 and STM32H5E5/H5F5 Arm®‑based 32-bit MCUs (RM0517)
[33]STM32H5Exxx datasheet (DS14971)
[34]STM32H5Fxxx datasheet (DS14972)
[35]STM32H5Ex/H5Fx device errata (ES0639)
[36]Reference manual STM32N6x5/x7xx Arm®-based 32-bit MCUs (RM0486)
[37]STM32N6x5xx STM32N6x7xx datasheet (DS14791)
[38]STM32H523xx and STM32H533xx device errata (ES0621)
[39]Reference manual STM32H543/553xx Arm®-based 32-bit MCUs (RM0539)
[40]STM32H543xx datasheet (DS15168)
[41]STM32H553xx datasheet (DS15167)
[42]STM32H543xx STM32H553xx device errata (ES0683)