cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H747: UART7 with DMA.

VLesc.2
Associate II

Hello!

I have strange issue with DMA mode for UART7. I have callback for data transfer complete, but if i sending new data - i have broken data. If i added timeout - all data sending Ok.

does anyone have any thoughts?

4 REPLIES 4
Tilen MAJERLE
ST Employee

Do you have cache enabled or disabled? When you say if you add timeout, all data OK => do you send w/o DMA then?

data cache is disabled, all buffer into D2 RAM.

>> When you say if you add timeout, all data OK => do you send w/o DMA then?

I sending via HAL_UART_Transmit_DMA();

How exactly is data broken, can you provide an example, or two?

Using a FIFO?

Even without caching writes need to be fenced.​

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
VLesc.2
Associate II

Yep! FIFO.

Also i added into stm32h7xx_hal_uart.c the call HAL_UART_TxCpltCallback() from UART_DMATransmitCplt() for DMA_NORMAL mode.

Thank you!