cancel
Showing results for 
Search instead for 
Did you mean: 

DMA vs BDMA

DGupt
Associate III

Hi

I want to use spi6 on stm32h7 controller in DMA mode, i see i can use BDMA instead of DMA. looking at the reference manual, i see following about BDMA

"The BDMA is used to perform programmable data transfers between memory-mapped peripherals and/or memories, upon the control of an off-loaded CPU."

Does this mean, we can "ONLY" use BDMA when the CPU is not doing any thing like in CStop mode, because if this is the case it will reduce the performance of the SPI.

Please let me know if my understanding is wrong.

Looking forward for your expert comments, Thanks in advance

Devendra.

4 REPLIES 4
TDK
Guru

> Does this mean, we can "ONLY" use BDMA when the CPU is not doing any thing

No, it means it works independently of the CPU (although they can both use the same bus).

The wording is awkward at best.

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

Hi Thankyou for your quick Reply

i got confused because in both DMA and MDMA the manual has specifically mentioned following but there was no statement like this for BDMA.

"Direct memory access (DMA) is used in order to provide high-speed data transfer between peripherals and memory and between memory and memory. Data can be quickly moved by DMA without any CPU action. This keeps CPU resources free for other operations."

"The master direct memory access (MDMA) is used in order to provide high-speed data transfer between memory and memory or between peripherals and memory. Data can be quickly moved by the MDMA without any CPU action. This keeps the CPU resources free for other operations."

Nevertheless could you please point out what is the diff between DMA and BDMA except D3 domain!, why it is even called Basic DMA?

Is there any limitation of BDMA over DMA?

TDK
Guru

Examining the difference in the DMA and BDMA registers in the reference manual would be informative. Immediately you can see there is no FIFO in the BDMA, and other subtle differences. They are also connected differently in the system layout so compete for difference resources, potentially.

The STM32H7 is complex. Expect that you will need to invest some time in the reference manual to understand things in detail.

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

Hello,

I agree with TDK answer, in the reference manual you'll find detailed description of BDMA.

You'll see that the BDMA is in D3 domain (for STM32H72/73/74/75x or SRD in STM32H7A/7B), that's the main specificity: it can work even if the CPU (D1 and D2 domain) is in standby mode. So data can be exchange within D3/SRD domain in very low power mode, those data can be used later when the CPU restarts.

But BDMA can be used even when the CPU is running. It will have almost no impact on CPU as we can think looking at "Figure 1. System architecture" of the refman.

I hope it helps,

Br,

Jacky

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.