STM32 DMA corta ráfaga de datos limitación de velocidad

0

He revisado algunos textos sobre este tema (enumerados a continuación), pero no pude averiguar la limitación de velocidad del DMA de STM32.

Lo que se necesita: Tome la entrada de ráfaga paralela de 8 bits del ADC externo (20 kB por ráfaga). Frecuencia de la señal de entrada - 22,5 MHz. Buffer one burst envíelo a la PC a una velocidad menor a través de USB y espere a que aparezca otra ráfaga. No hay procesamiento de datos en el lado MCU. MCU sabrá acerca de los datos que vienen por disparador en el pin GPIO.

El retraso entre las ráfagas es superior a 1 segundo.

¿Qué es el límite de la frecuencia de la señal de entrada si quisiera usar una frecuencia más alta?

La familia STM32 tiene muchos tipos y me siento completamente perdida en esto. ¿Alguno de los STM32 es capaz de realizar tal tarea? Si es así, ¿está disponible en cualquier placa de desarrollo? No estoy muy familiarizado con el diseño de HW, por lo que la placa de desarrollo parece ser una mejor solución para mí.

FPGA es quizás mejor para esto pero definitivamente es más difícil para el diseño HW (PCB). También los tableros de control FPGA son más caros.

Nota de la aplicación AN4104 - Uso del controlador DMA STM32F0xx

Nota de aplicación AN4031 - Uso del controlador DMA de la serie STM32F2, F4, F7

Nota de la aplicación AN4666 - Transmisión síncrona paralela utilizando GPIO y DMA

Cómo usar STM32 DMA

embedded.fm DMA - Un poco de ayuda de mis amigos

Descubriendo el MCU STM32

ADC externo & DMA

Deska STFM32F746ZG

Uso de DMA en proyectos STM32

    
pregunta ToKra

2 respuestas

0

He buscado en el foro de la comunidad ST y probablemente encontré la respuesta.

  

Estoy usando un STM32F429 operando a 168 MHz

......

  

Lee AN4031. Sin embargo, no encontrará un número definitivo para el   razones obvias de que esto depende de varios factores - fuente de activación   Sincronización, contención de bus. También puede considerar usar   FMC y / o DCMI, y / o alguna lógica de cola externa.

.....

  

Hola, gracias por las respuestas. La velocidad máxima que logré fue alrededor   ~ 30 MHz. De acuerdo con el comentario de Clive One, creo que esa es la parte superior   fin.

Aquí está el enlace de la pregunta del foro

Publicación de blog interesante sobre un tema similar:

ingrese la descripción del enlace aquí

    
respondido por el ToKra
0

La forma más eficiente es transferir los contenidos del registro IDR de GPIOx con DMA al búfer de memoria en cada evento desencadenante. Aquí se supone que ha dispuesto los pines como una matriz del mismo GPIOx con una secuencia y desplazamiento conocidos.

Para el evento de activación, simplemente haga un temporizador de modo pwm de ciclo de trabajo del 50% como fuente de reloj para el ADC y haga que se active para el DMA.

Haga que el borde de activación de DMA sea opuesto al borde de activación de DAC.

    
respondido por el Ayhan

Lea otras preguntas en las etiquetas