¿Es posible usar el pin GPIO de STM32F4 como salida analógica? Según lo que he leído, el modo analógico es un modo de entrada, entonces ¿hay alguna forma, algo similar al analogWrite de Arduino?
Respuestas
¿Demasiados anuncios?El "analog out" de Arduino es en realidad una señal digital modulada por ancho de pulso, que cuando se promedia externamente (eléctrica, mecánicamente o a través de la percepción humana) puede ser efectivamente analógica para algunos propósitos.
La serie STM32 tiene numerosos canales de contador que se pueden utilizar para PWM de hardware. No está disponible en todos y cada uno de los GPIO, pero está disponible en muchos de ellos; consulta el manual de referencia del programador para la parte específica de tu interés, ya que la arquitectura periférica varía un poco en la familia.
También puedes intentar PWM de software utilizando una interrupción de temporizador. Esto, por supuesto, tendrá una frecuencia máxima más baja, puede tener algo de oscilación y restará tiempo de tu capacidad para lograr otras cosas. Sin embargo, estos procesadores tienen frecuencias de reloj internas mucho más altas (hasta 160 MHz para algunos F4), en comparación con un Arduino basado en ATmega, por lo que esta puede ser una opción realista para ti.
Como mencionó Arsenal, algunos pero de ninguna manera todos los STM32 tienen una salida de convertidor digital a analógico real (especialmente las variantes analógicas de la serie F3), pero el PWM es una opción en todas las partes.
El modo análogo también se puede utilizar como salida analógica en conjunto con el periférico DAC de 12 bits:
Nota: Una vez que se habilita el canalx del DAC, el pin GPIO correspondiente (PA4 o PA5) se conecta automáticamente a la salida del convertidor analógico (DAC_OUTx). Para evitar el consumo parásito, el pin PA4 o PA5 primero debe configurarse como analógico (AIN).
(como se ve en el manual de referencia en el capítulo de DAC)
Nota: No todos los STM32F4 vienen con el DAC, por lo que en algunos chips no será posible generar directamente un voltaje analógico arbitrario. Consulta la hoja de datos de los dispositivos para verificar qué periféricos están disponibles.
Como se mencionó anteriormente, analogWrite de Arduino es en realidad PWM. Puedes ver un ejemplo de código PWM para STM32F4 aquí.
También puedes probar una de las placas de desarrollo que tienen DACs, como esta NUCLEO-F401RE