Skip to main content
Explorer II
July 5, 2025
Question

STM32U5 GPDMA cyclic transfer without LLI

  • July 5, 2025
  • 1 reply
  • 606 views

Hi all,

 

in RM0456 is plenty of examples with using LLI but only one without it. And even that contain a block diagram that does not explain anything. Also AN5593 does not mention cyclic transfer. So, here i am.

Eiffel_0-1751715731895.png

Does this diagram means, that if the LLR register is null, the transfer will automatically restarted and thus used in cyclic transfer without LLI? 

Really guys, review the documentations befor releasing them.

    This topic has been closed for replies.

    1 reply

    ST Employee
    August 5, 2025

    Hello @Eiffel

    The block diagram you referenced shows the direct programming flow, which ends after one transfer unless re-enabled by software by configuring the GPDMA_CxLLR register 

    Also, cyclic (circular) transfer mode is available and does not require LLI. It is enabled via the CIRC bit.

    Hope that helps!

    EiffelAuthor
    Explorer II
    August 6, 2025

    Hi @Sarra.S ST Employee.

    Many thanks for your message. Could you please tell me in which register CIRC bit is located? Your reference manual did not hear about that bit.

    Also your colleagues from support:

    Eiffel_0-1754508619371.png

    Eiffel_1-1754508712866.png

    What happens with ST? Even ST employees dont know what to do.

    ST Employee
    August 13, 2025

    Hello @Eiffel

    The implementation of circular mode varies depending on the DMA controller. For the STM32U5 series, there is no dedicated CIRC bit for hardware circular mode management, as detailed in the product reference manual.

    Instead, circular buffering is handled through linked-list programming, as explained in Section 17.4.13 "GPDMA circular buffering with linked-list programming" of RM0456 Rev 6.

    To achieve circular mode, you need to create a linked list that resets the memory source (or destination) start address for memory-to-peripheral (or peripheral-to-memory) transfers. The GPDMA automatically reloads the initially programmed block size (GPDMA_CxBR1.BNDT[15:0]) upon completion of each block transfer.

    Additionally, there is a helpful workshop available on the STMicroelectronics YouTube channel that demonstrates how to configure DMA in circular mode using STM32CubeMX. You can watch it here:
    https://www.youtube.com/watch?v=jKOhRfb3gvk&t=438s

    This video provides a great starting point to understand the implementation process.

     

    kind regards