cancel
Showing results for 
Search instead for 
Did you mean: 

How to use BDMA in STM32H7?

Natan Stec
Associate II

I am trying to read signals from digital MEMS microphones via DFSDM peripheral and transfer it to memory with DMA on STM32H7A3. I found out that 4 channels are handled by DMA and remaining 4 with BDMA. Now I can't figure out how to get this BDMA to work.

Below I placed screenshots of Cube configuration and initialization of DFSDM with DMA. I suspect that the problem can be with memory configuration in linker script, since DMA and BDMA has not access to the same memory sections. Do someone have idea if my assumptions are correct and can suggest what should I do to get it to work?

0693W000006Ey0IQAS.png0693W000006Ey0NQAS.png 0693W000006Ey0XQAS.png

13 REPLIES 13

Hi Natan Stec,

Can you please share with me your .msp file?

Which mode are you using to work with BDMA?

Best Regards,

Ons.

Natan Stec
Associate II

Hi Ons,

Unfortunately, we've found out that BDMA doesn't have parallel channels. So even if it would start working it wouldn't suit our needs. Thank You very much for your support.

Hi Natan Stec,

Can you please select your answer as best ? Since it is the best answer, BDMA (basic DMA) does not support parallel channels.

Best Regards,

Ons.

RUlstrup
Associate

Hi all,

Know this is a dead post, but I found out there is a bug with the BDMA and DFSDM, where it do not put the BDMA into circular DMA setting after starting the DFSDM filter.

A dirty fix is forcing the register BDMA_CCRx into the correct configurations on line 719 in stm32h7xx_hal_dma.c. In my case the configurations would be:

((BDMA_Channel_TypeDef  *)hdma->Instance)->CCR = 0x2AAE;

(look up STM32H7A3 reference for more information on that register)