Skip to main content
VLesc.2
Associate II
February 9, 2021
Question

STM32H747: UART7 with DMA.

  • February 9, 2021
  • 4 replies
  • 1067 views

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?

This topic has been closed for replies.

4 replies

Tilen MAJERLE
ST Employee
February 9, 2021

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

VLesc.2
VLesc.2Author
Associate II
February 9, 2021

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();

Tesla DeLorean
Guru
February 9, 2021

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 (See Profile) Up vote any posts that you find helpful, it shows what's working..
VLesc.2
VLesc.2Author
Associate II
February 10, 2021

Yep! FIFO.

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

Thank you!