Tutorial 4. DAC (Convertidor Digital Analógico) de la serie STM32F4.

Bienvenidos a este tutorial donde se utilizará uno de los dos canales que tiene el DAC del Microcontrolador de Ophyra y  como objetivo se generará una señal diente de sierra. Se debe tener en cuenta, que esta señal es generada dentro del ciclo infinito de Ophyra, por consiguiente al incrementar instrucciones dentro de este, la frecuencia de la señal generada disminuirá.

Configurar Hardware usando STM32CubeMX..

Comenzamos creando un proyecto dentro de STM32CubeMx accionando sobre el icono correspondiente. Una vez abierto el programa seleccionamos el Microcontrolador como se muestra en la imagen 1 y 2.

Imagen 1. Nuevo Proyecto.

Imagen 2. Selección del Microcontrolador.

Creado el proyecto, podemos seleccionar el canal del ADC a usar. Como se mencionó al inicio de este tutorial el canal a utilizar será el 1 como se muestra en la siguiente imagen

Imagen 3. Habilitación del DAC.

Debido a que no utilizaremos ningún otro GPIO podemos pasar a la pestaña de configuración “Configuration”.

Imagen 4. Configuración complementaria de los recursos.

Accionando sobre el botón DAC se muestra una ventana como la siguiente.

Imagen 5. Configuración del DAC.

Estos parámetros nos permiten tener un dato de salida por el DAC (Output Buffer) así como su activación (Trigger). Cabe destacar que el Trigger es una señal que le permite al programador tener el control de la activación del DAC; ya sea por software o por algún Timer de los disponibles, como se nos muestra en la imagen 6.

Imagen 6. Configuración del DAC.

Por el momento dejaremos estas dos opciones como se encuentran; Output Buffer -> Enable y Trigger -> None. Dentro de los tutoriales no se ha hecho mención sobre uno de los recursos poderosos del Microcontrolador el cual es el bloque DMA (Direct Memory Access, Acceso Directo a Memoria). Casi todos los recursos pueden trabajar con este complemento, incluyendo el DAC, es posible que el usuario pueda ligar el DAC con el DMA haciendo que el procesamiento de este sea mayor. El uso del DMA se verá en los siguientes tutoriales pero si deseas comenzar a investigar sobre este recurso, dirígete a la pestaña DMA Settings.

Imagen 7. Configuración del DMA.

O directamente accionando sobre el botón DMA que se encuentra en System dentro de la pestaña de configuración.

Imagen 8. Configuraciones de los recursos.

Ya tenemos todo listo para generar nuestro proyecto. Al igual que los tutoriales anteriores accionamos sobre el icono que tiene como figura un engrane como se muestra a continuación.

Imagen 9. Generación de código.

Imagen 10. Generación de código fuente.

Una vez presionado el botón Ok se muestra una ventana indicando que si deseas abrir el proyecto.

NOTA. SI NO SE MUESTRA ESTA OPCIÓN QUIERE DECIR QUE LA VERSIÓN DE STM32CubeMX EN TU EQUIPO DE COMPUTO NO ESTÁ ACTUALIZADA.

Realizar programa en Atollic TrueSTUDIO.

Una vez que STM32CubeMx nos abre TrueStudio nos dirigimos al explorador de proyectos donde se muestra el proyecto actual como se muestra en la siguiente imagen.

Imagen 11. Explorador de proyectos.

Como en todos los tutoriales tenemos un archivo main.c donde se encuentra la función principal del programa, el int main y a su vez tenemos el ciclo while(true) el cual es un ciclo infinito donde se ejecuta nuestro programa, imagen 12.

Imagen 12. Archivo main.c

Antes de entrar al ciclo infinito debemos de activar o iniciar el DAC con la función HAL_DAC_Start();. Esta función recibe dos parámetros, el primero es el DAC que estamos usando, mientras que el segundo es el canal que seleccionamos con STM32CubeMx. Al posicionarnos sobre esta función se muestra su descripción.

Imagen 13. Descripción de la función.

Al solo tener un DAC no se debe de agregar un número como en los demás recursos, es decir, no existe un DAC1 o DAC2, simplemente se debe agregar el recurso que se usa; &hdac. Por otro lado, el segundo parámetro es el canal seleccionado, como se muestra en la imagen 13 el segundo parámetro solo puede ser uno de esos dos, DAC_CHANNEL_1 o DAC_CHANNEL_2 como se muestra a continuación.

Imagen 14. Función que inicia el DAC.

La función que controla el dato hacia el DAC es Hal_DAC_SetValue(); la cual requiere 4 parámetros como se muestra en la siguiente imagen.

Imagen 15. Función que controla el DAC.

De la misma manera que la función que se muestra en la imagen 14, el primer parámetro es el DAC a usar, el segundo parametro es  el canal que hemos seleccionado; el tercer parámetro es el formato del dato y como lo interpreta el DAC (Recordemos que no es lo mismo 10000000 que 00000001 en binario, el primer valor representa 128 mientras que el segundo representa el 1 en base 10.) Por consiguiente, si deseamos tener el estándar en la lectura de números decimales a binarios, es decir, que el bit menos significativo se encuentre del lado izquierdo y el bit más significativo se encuentra al lado derecho debemos de seleccionar DAC_ALIGN_12B_R (alineación a la derecha). El último parámetro es el dato a escribir en el DAC.

Imagen 16. Valor cero en el canal 1 del DAC.

Una señal diente de sierra tiene como característica el tener una pendiente con m=1 y al llegar al valor máximo cambia su valor al inicio, es decir, a cero. Si esto lo pasamos a código podemos intuir que requerimos de un contador y al llegar al valor máximo regresara a ser cero.

La resolución del DAC es a 12 bits por lo cual tenemos 4096 datos (), podemos representar del 0 al 4095. Para que el efecto se pueda ver colocaremos un retardo de 10 milisegundos y al llegar al máximo valor reiniciaremos el contador como se muestra en la imagen 17.

Imagen 17. Implementación de una señal diente de sierra.

Cargar programa a nuestra tarjeta de Desarrollo Ophyra

El último paso es programar tu tarjeta Ophyra. Si nunca lo has hecho, sigue esta GUÍA.

Conclusiones

Hemos configurado y programado el DAC del Microcontrolador de Ophyra.

Te sugerimos hacer ejercicios como diferentes señales y control del DAC con el valor del ADC, control de un buzer, o generar diferentes frecuencias con una señal sinusoidal guardando los valores obtenidos de un software matemático como Matlab.

Si tienes alguna consulta o duda sobre este tutorial o referente a cualquier otro tema de Ophyra, contactanos a nuestro Foro.

Menú