Electrical – STM32 DMA short data burst buffer speed limitation

adcdmaparallelstm32

I had gone through few texts on this topic (listed below), but was not able to figure out the speed limitation of STM32´s DMA.

What is needed:
Take 8bit parallel burst input from external ADC (20 kB per burst). Frequency of input signal – 22,5 MHz. Buffer one burst send it to PC with slower speed via USB and wait for another burst. No data processing on MCU side. MCU will know about comming data by trigger on GPIO pin.

Delay between bursts is higher than 1 second.

What is limit of input signal frequency if I would like to use higher frequency?

STM32 family has many types and I feel completely lost in this. Is any of the STM32 capable of such a task? If yes is it available on any dev board? I´m not very familiar with HW designing so dev board seems like a better solution for me.

FPGA is maybe better for this but definitely harder to HW(PCB) design. Also FPGA devboards are more expensive.

AN4104 App Note – Using the STM32F0xx DMA controller

AN4031 App Note – Using the STM32F2,F4,F7 Series DMA controller

AN4666 App Note – Parallel synchronous transmission using GPIO and DMA

How to use STM32 DMA

embedded.fm DMA – Alittle help from my friends

Discovering the STM32 MCU

External ADC & DMA

Deska STFM32F746ZG

Using DMA in STM32 projects

Best Answer

Most efficient way is to transfer contents of IDR register of GPIOx with DMA to memory buffer at every trigger event. Here it is assumed that you have arranged the pins as an array of the same GPIOx with a known sequence and offset.

For the trigger event, just make a 50% duty cycle pwm mode timer as the clock source for the ADC and make it trigger for the DMA.

Make the trigger edge of DMA opposite of trigging edge of the DAC.

Related Topic