Estoy programando una placa de descubrimiento STM32F4 para insertar una secuencia de valores de 12 bits en el registro de datos DAC. Esto funciona bien usando interrupciones de temporizador: dentro de mi controlador de IRQ, tengo un código que parece:
phase += phaseIncrement;
DAC_SetChannel1Data(DAC_Align_12b_R, function[phase]);
y la salida del DAC parece que creo que debería. Tenga en cuenta que phaseIncrement
no tiene que ser 1
; si quiero una salida de alta frecuencia, puedo omitir puntos en function[]
, sacrificando la precisión de la señal por un poco de velocidad adicional.
Ahora, estoy leyendo sobre DMA. Parece que el STM32F4 solo puede incrementarse en una de las tres cantidades: 1 byte, 2 bytes y 4 bytes, dependiendo del tamaño de la variable que se transfiere. ¿Es esto correcto? ¿Existe alguna solución que me permita omitir algunas de estas direcciones de memoria para poder emular mi salida actual sin menos uso de la CPU?