GPDMA burst
- A programmed data width: 8-, 16-, or 32-bit (via S/DDW_LOG2[1:0] in GPDMA_CxTR1)
- A programmed burst length: 1 to 64 (via S/DBL_1[5:0] in GPDMA_CxTR1)
The burst size can be separately programmed for the source and the destination.
A burst is a series of n = 1 to 64 beats. Each beat is one data transfer, and has the same data width. For example, a 4-word burst is a burst of four 32-bit words. A burst with a burst length of 1 is named single.
The GPDMA issues a beat with the data width such as programmed: the programmed data width is never changed by the GPDMA implementation.
- With a same AHB transaction on the allocated master port
- By a series of bursts of lower length or/and singles, due to any of the following conditions:
- Burst size higher than half of the FIFO size
- Block size (defined as the source block size) is not a multiple of the source data width.
- AHB constraints:
- On a 1-Kbyte address boundary crossing
- Burst that must be an incremental burst of 4, 8 or 16 beats
The GPDMA implementation guarantees the data integrity versus the programmed addressing, and maximizes the performance by implementing the largest allowed burst size compared to the programmed burst.
It is recommended to program a GPDMA burst of half of the FIFO size of the allocated GPDMA channel.
| Channel number | Data width access (bits) | Maximum burst length (beats) |
|---|---|---|
| 8 | Up to 4 |
| 16 | Up to 2 | |
| 32 | 1 | |
| 8 | Up to 16 |
| 16 | Up to 8 | |
| 32 | Up to 4 |
A GPDMA burst is an elementary chunk of data that is at a fixed address or at a contiguously incremented address. For channels 6 to 7 and 14 to 15 for STM32H5, 10 to 11 for STM32U3 and STM32H5Ex/5Fx, and 12 to 15 for others (2D addressing capable), a first address jump may be performed after a burst. For getting a 2D buffer in memory, the user may have to program a burst, which is different from the typical 4-word burst. The GPDMA implementation automatically optimizes the performances, and includes this programmed constraint.
One GPDMA arbitration clock cycle is added before each programmed burst, provided that this burst size is lower than half of the FIFO size. Each data transfer can be a single data transfer, with a data arbitration performed each time a data has to be sent on the AHB bus master, or grouped into a burst data transfer to send few data back-to-back, without any possible GPDMA preemption after a GPDMA single arbitration phase. This minimizes the data transfer time (overall latency), and maximizes the throughput and the bus efficiency.
- The GPDMA arbitration is reduced to only one phase, which is applied for all the data defined by the burst size.
- The burst is not interruptible at the GPDMA (arbitration) level, provided that its size is lower than half of the FIFO size. The latency for a set of number of read/written data is reduced and earlier completed (except for the very first beat).
- If the targeted source or destination is an internal memory, the programmed addressed-incremented burst is implemented by incremented AHB bursts on the AHB bus. This consumes less bus cycles, and frees bus bandwidth for other possible concurrent masters, or enables the bus to be programmed at a lower bus frequency for a given traffic/bandwidth.
- If the targeted source or destination is a peripheral register at a fixed address supporting a burst (with a FIFO mechanism like ADC1, OCTOSPI, or HASH), program a GPDMA 4-word fixed burst (which is after GPDMA arbitration split to four single transfers for being AHB compliant) increases the back-to-back transfer throughput since the arbitration clock cycle penalty occurs once.
Having a GPDMA burst with an AHB burst transaction increases the latency to serve other concurrent GPDMA transfers over the same allocated AHB master port, meanwhile it is performed. All other GPDMA requested transfers on the same GPDMA port are pending during this time (as well as all other masters intending to read or write data from/to the same target peripheral/memory). It is recommended to manage the different application requirements by programming channel priorities, as highlighted in GPDMA channel priority.