cancel
Showing results for 
Search instead for 
Did you mean: 

DMA mapping for STM32F407 series

tinkerer_of_universe
Associate II

What is the meaning of These requests are available on STM32F42xxx and STM32F43xxx only for DMA1 and These requests are available on STM32F42xxx and STM32F43xxx for DMA2.
What should ı use for the mapping ?

tinkerer_of_universe_0-1728549436946.png

 

1 ACCEPTED SOLUTION

Accepted Solutions

@tinkerer_of_universe wrote:

Which channel should I choose for transferring CDR register data?


CDR on which ADC? as I said, each one has its channel and stream as shown in the table.

 


@tinkerer_of_universe wrote:

Does this sentence have no relevance to STM32F407
These requests are available on STM32F42xxx and STM32F43xxx only for DMA1 and These requests are available on STM32F42xxx and STM32F43xxx for DMA2.


This note is related to some peripheral mappings:

SofLit_0-1728551169495.png

So these requests are available only on STM32F42xxx and STM32F43xxx products.

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.

View solution in original post

8 REPLIES 8
Andrew Neil
Evangelist III

For some reason, the forum can't display your image:

AndrewNeil_0-1728549235630.png

Note that you can just paste straight into the post so that the image is immediately visible.

Thank you ı fix the image

 

SofLit
ST Employee

Hell @tinkerer_of_universe and welcome to the community,

For example, if you want to trigger DMA transfer using ADC3 end of conversion, you need to select Stream 0 / Channel 2.

SofLit_1-1728550074683.png

Example from HAL:

 

hdma_adc.Instance = DMA2_Stream0;
hdma_adc.Init.Channel = DMA_CHANNEL_2;

 

For more details, please review the AN4031  "Using the STM32F2, STM32F4 and STM32F7 Series".
DMA controller 

Figure 1. DMA block diagram

SofLit_0-1728550326200.png

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.

Which channel should I choose for transferring CDR register data?
also
Does this sentence have no relevance to STM32F407
These requests are available on STM32F42xxx and STM32F43xxx only for DMA1 and These requests are available on STM32F42xxx and STM32F43xxx for DMA2.


@tinkerer_of_universe wrote:

Which channel should I choose for transferring CDR register data?


CDR on which ADC? as I said, each one has its channel and stream as shown in the table.

 


@tinkerer_of_universe wrote:

Does this sentence have no relevance to STM32F407
These requests are available on STM32F42xxx and STM32F43xxx only for DMA1 and These requests are available on STM32F42xxx and STM32F43xxx for DMA2.


This note is related to some peripheral mappings:

SofLit_0-1728551169495.png

So these requests are available only on STM32F42xxx and STM32F43xxx products.

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.

Thanks

tinkerer_of_universe_0-1728551528184.png

ı use dual ADC mode and ı want to carry 2 data(ADC1 and ADC2) with DMA at the same time that is why ı want to use CDR register


@tinkerer_of_universe wrote:

ı use dual ADC mode and ı want to carry 2 data(ADC1 and ADC2) with DMA at the same time that is why ı want to use CDR register


In multimode (Example Dual mode)  ADC1 is master to the ADC2 and ADC3 slaves.

From the reference manual: 

SofLit_0-1728554094875.png

So in that case DMA will get the request from ADC1, i.e. DMA2 Stream 0 / Channel 0 as per table 43.

You can also check this example (ADC in Dual mode) :

In main.h:

 

/* Definition for ADCx's DMA */
#define ADCxy_DMA_CHANNEL                DMA_CHANNEL_0
#define ADCxy_DMA_STREAM                 DMA2_Stream0 

Hope it's clear.

 

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.

Thanks for the ADC information. I understand more clearly than before. I chose Dual mode. I guess your suggestion is usable for Triple mode. However, I can't see how to transfer the CDR register data using Table 43. I want to use just one address (CDR), but the table includes ADC1, ADC2, and ADC3, which is why I'm confused.