2020-12-08 01:53 AM
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?
Solved! Go to Solution.
2021-03-16 06:58 AM
Hi Natan Stec,
Can you please share with me your .msp file?
Which mode are you using to work with BDMA?
Best Regards,
Ons.
2021-03-16 07:40 AM
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.
2021-03-16 07:49 AM
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.
2022-06-01 01:20 AM
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)