cancel
Showing results for 
Search instead for 
Did you mean: 

Transfer error on SAI4 DMA STM32H723ZE

KJans.1
Associate II

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

1 ACCEPTED SOLUTION

Accepted Solutions
KJans.1
Associate II

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.

View solution in original post

5 REPLIES 5

Read our and check/post the DMA registers content.

JW

KJans.1
Associate II

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
Guru

BDMA should have registers like CM0AR0 which show memory addresses.

If you feel a post has answered your question, please click "Accept as Solution".

> 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
Associate II

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.