Skip to main content
KJans.1
Associate II
June 29, 2021
Solved

Transfer error on SAI4 DMA STM32H723ZE

  • June 29, 2021
  • 5 replies
  • 1668 views

Hi There,

I'm looking for help with the SAI4 for this device. I have setup the DMA for SAI4A which is linked to BDMA Channel 2. I have defined my buffers within the D3 domain and have enabled the event on the BDMA channel to request number 15 (sai4_a from the reference manual) I still get a transfer error upon starting the DMA transfer. I have watched the training videos on BDMA,DMA and the DMAMUX, but I still think I am missing a step.

I am also having a similar issue on the TIM23_CH2 using DMA but I think if I can find my error on the SAI4 it will be a similar solution for the Timer.

Kind regards,

Kline

This topic has been closed for replies.
Best answer by KJans.1

Thanks for the feedback.

It was a memory access issue. I had defined my dma buffers in the correct D2 and D3 sections but this was done in the RAM.ld file which wasn't being used by the project. I defined the sections in the Flash.ld and DMA started working.

I have both SAI and TIM23 working with the DMA now.

5 replies

waclawek.jan
Super User
June 29, 2021

Read our and check/post the DMA registers content.

JW

KJans.1
KJans.1Author
Associate II
June 29, 2021

Thanks for the quick reply.

The BDMA registers are not displayed in my SFRs window. Here is the DMAMUX3 which I presume is DMAMUX2 just labelled incorrectly.

Kline

TDK
June 29, 2021

BDMA should have registers like CM0AR0 which show memory addresses.

"If you feel a post has answered your question, please click ""Accept as Solution""."
waclawek.jan
Super User
June 29, 2021

> The BDMA registers are not displayed in my SFRs window

Then read it out using any other means, in program, suitably displaying it (e.g. transmitting through USART into some terminal program, or storing it to memory and then displaying using the debugger).

My guess is, that the memory register points to memory region not accessible by DMA, e.g. DTCM.

JW

KJans.1
KJans.1AuthorBest answer
Associate II
June 30, 2021

Thanks for the feedback.

It was a memory access issue. I had defined my dma buffers in the correct D2 and D3 sections but this was done in the RAM.ld file which wasn't being used by the project. I defined the sections in the Flash.ld and DMA started working.

I have both SAI and TIM23 working with the DMA now.