1 votos

Generación de señales de STM32G474 con DMA + DAC usando STM32CubeMX HAL

Estoy tratando de generar una señal periódica con el DAC en el STM32G474 usando DMA. Hay toneladas de ejemplos de esto, y he hecho lo mismo en el pasado con un STM32L4 y F4 sin problemas. Sin embargo, no estoy seguro de si hay un problema en la línea STM32G4 o un error en la generación de código de las bibliotecas/HAL. He montado un ejemplo sencillo, sólo con un buffer circular de 2 muestras a una velocidad lenta, pero nunca saco nada, genera al inicio un error de transferencia DMA y desactiva el DMA.

He probado diferentes clavijas y canales. En el STM32G4, los flujos DMA están multiplexados por lo que puedes utilizar cualquiera siempre que no estés utilizando el mismo para otros periféricos. Intenté iniciar el temporizador primero, incluyendo los retrasos, llamando a HAL_DAC_Start() antes de HAL_DAC_Start_DMA() (lo cual es redundante). Poner un valor manualmente al DAC funciona sin problemas. He probado también usando Timer2. Estoy usando STM32CubeIDE 1.3.1 y el código está generado con STM32CubeMX 5.6.1, las últimas versiones.

El main.c está aquí, incluye toda la configuración: https://pastebin.com/F90s3iBz

2voto

user35660 Puntos 5

Después de un par de días probando todo encontré la diferencia entre el STM32G4 y las familias anteriores con respecto al DMA: El ancho de datos para el Periférico tiene que ser configurado como Word siempre, aunque el ancho de datos para la Memoria esté configurado como Half Word. En la herramienta CubeMX, configuración DAC, pestaña DMA Settings:

STM32CubeMX DAC DMA Configuration

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X