2024-11-01 11:18 PM - last edited on 2024-11-02 4:54 AM by Tesla DeLorean
Hello everyone,
I develop a project with STM32U575 and I want to use LPUART with LPDMA, normally I use LPUART with normal DMA in my other stm32L4 projects but here I couldnt work with this peripherals. Low power is not a critical issue of this part of project. So I just want to use LPUART with LPDMA in a normal way. First picture is my old settings in L4 series and second picture ise for current U5 mcu. Do I miss something ? Where can I find and example for LPDMA and LPUART for Standart Request Mode.
Thanks
2025-06-18 6:39 AM
I have a very similar problem. I try to use LPDMA to send (TX) data from memory buffer to LPUART. But no data is sent out from the TX pin. The HAL_UART_Transmit_DMA(&hlpuart1, uart_tx_buffer, length) function returns without error. I'm having the MCU in normal run mode. Plan is to go to a low power mode later, but only after I get this thing to work. I was looking that the STM32Cube did not generate code to enable LPDMA clock, so I manually enabled it: __HAL_RCC_LPDMA1_CLK_ENABLE(); but that did not help. I'm using the STM32U585.
2026-03-29 3:14 PM - edited 2026-03-29 3:15 PM
I am going through the same. Blocking mode Tx works. LPDMA doesn't send a single thing and I cannot find, for the love of me, a single example, or tutorial about it. I cannot for the love of me figure out what it is that I am missing. I am using the U545, with trustzone enabled
this. I am getting desperate.
2026-04-08 4:47 PM
I found the issue with the U5.
STM32U5 LPDMA uses SRAM4. Just make sure your buffers are in SRAM4. I tested with the following:
#define SRAM4_BSS __attribute__((section(".SRAM4"))) // SRAM4 here is case sensitive, it must match the linker file definition.
SRAM4_BSS uint8_t rx_buf[64];
SRAM4_BSS uint8_t tx_buf[64];
Then from there, I just:
const char *msg = "Hello LPUART1 DMA\r\n";
memcpy(tx_buf, msg, strlen(msg));
HAL_UART_Transmit_DMA(&hlpuart1, tx_buf, strlen(msg));
This was just for testing, obviously you have to make sure you do all the other due diligence like making sure you do not get weird memory behavior, free memory and all that.
I am a beginner and it took a lot for me to find this out. Hope it works for you too.