cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H7,STM32H743 ADC with DMA

Volker Bremauer
Associate III
Posted on October 11, 2017 at 15:09

In summer 2017, I started an project with the STM32F767 on the Nucleo board, because the H743 was still announced but not available. For some weeks I got the new Nucleo board of the STM32H743.

After I transferred the code from the F767 to the H743, I recognized the not working DMA interrupt. The DMA interrupt was working on the 767 perfectly. So I reduced the code of the F767 and the H743 (by using cube) to only this function for see what�s the difference.
  • TIM3 managed 4 PWM Signals (22KHz) and triggers the ADC1 on falling edge and call the interrupt call back function. (LED GREEN toggles).
  • When ADC1 conversion is finished, the DMA is triggered and copies the data.
  • When the DMA transfer is completed, the call back function is called, and the BLUE LED toggles

I can�t see, why the interrupt for the DMA at the STM32H743 is not working!

Have somebody done something like this already and was successful?

I put both projects for Cube and the AC6 workbench to the attachment. Hope somebody can help me.

BR Volker

#stm32h743 #stm32h7
35 REPLIES 35
Posted on June 09, 2018 at 14:55

Both correct, the one in the zip file is I think the older one. But the princip is the same

Posted on July 10, 2018 at 13:30

I have tried but I failed, You can show code about DMA ADC in MDK Keil C , Please help me!

KBera
Associate

Dear Mr. Volker, can u plz share the files that need modification. I am working on STM32H743ZI Nucleo board.

hello, i also have that problem , i want to use adc with dma in stm32h743 board and it does't work, after dma start ,no value come into the dma buffer. how can i fixed it using stm32cubemx.

i m using keil ide for progrmming.

Hello there! Thanks a lot for your solution. It is very helpful. I had the same problem.

But I made only one change:

hadc1.Init.ConversionDataManagement = ADC_CONVERSIONDATA_DR;

to

hadc1.Init.ConversionDataManagement = ADC_CONVERSIONDATA_DMA_CIRCULAR;

I didn't made any changes with linker Script.

In according to screenshot below my variable ADC1_Data[ADC_BUFFER_SIZE] located in D1 domian section:

0693W000000WG7bQAG.png

And all works fine :ok_hand: