cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H7 DMA memory to GPIO port

Peter Mather
Associate III

Has anyone got working example code they could share of setting up DMA to transfer from memory to a GPIO port on an H7 (Nucleo-H743). I've read AN4666 and can get the example working on a L476 but none of the many variants I try on the H7 work. The example could use a timer to clock the transfer or just free-run. The application will have an area of memory that is continuously transferred to the GPIO port with the DMA in circular mode.

Many thanks in anticipation

4 REPLIES 4
Imen.D
ST Employee

Hello @Community member​ 

Did you tried the available DMA example of CubeH7 v1.3.2? Did you followed the instructions in readme file ? Did you enabled the cache? and waht about the MPU configuration?

Kind Regards,

Imen

When your question is answered, please close this topic by clicking "Accept as Solution".
Thanks
Imen
JGon?
Associate

I'm also having trouble with the DMA.

I wanted to send a 8bit array from the SRAM to 8 pin GPIO at 25 MHZ/ 12.5 MHZ speed using the DMA controlled by a timer as an University project.

I bought a STM32H743 (NUCLEO) due to it's power and extra memory.

Since I'm new to the STM32 architecture, I was expecting it to be as easy as the arduino (the only MCU that I worked with in a register level) and I was expecting to find a lot of resources on the internet. That was my mistake.

The only example that I found that addresses this idea was written to the STM32F4 platform (I put it as an attachment) and I don't know how to convert it to the STM32H7 MCU.

Since I can't find any example for this model (after looking for weeks), I'm now regretting buying this board and I think I'm going to change to the arduino Due (unfortunately).

Sorry about getting things off my chest like that but I think I'm going crazy with this project/board.

>>I was expecting to find a lot of resources on the internet...

>>Since I can't find any example for this model..

You know that people have to write the stuff that's on the internets and embedded sw engineering is frequently not a task that relies on cutting-n-pasting code Google happens upon, but one that requires connecting a bunch of dots from often vague documentation.

The GPIO banks are on AHB4, use BDMA to copy data from SRAM4 to GPIOx>BSRR or ODR

SRAM4 is 64KB situated at 0x38000000

Should be able to use LPTIM2 or LPTIM3 OUT as a clocking/triggering source

Figure a couple hours of time to code/validate a working proof.

Tips, buy me a coffee, or three.. PayPal Venmo Up vote any posts that you find helpful, it shows what's working..
flyer31
Senior

This can be done nicely with BDMA, but it works also nicely with DMA.

See my STM32H7 forum post "Parallel transmission using GPIO and DMA (like AN4666)"