STM32 Timer Function Generator

0

Me pregunto cómo puede lograr que un pin GPIO con precisión alterne según un determinado patrón. Este patrón es completamente variable (sin PWM) y se almacena en la memoria.

Mi conclusión de esto es:

  • El pin debe configurarse / restablecerse mediante hardware, no en un ISR
  • DMA es necesario para el transporte de datos

Lo que tengo en mente:

  • temporizador de cuenta
  • Canal DMA para actualizar ARR con datos de patrones
  • Comparar canal para alternar pin
  • Segundo canal DMA para actualizar el registro del canal de comparación con los mismos datos de patrones al mismo tiempo

¿Podría funcionar? ¿O hay una manera fácil de hacer esto?

Si esto funciona, ¿podría usar una segunda comparación y un tercer canal DMA para alternar otro pin invertido al primero?

Datos y requisitos:

  • Un cristal de 72 Mhz conduce el STM32
  • El pulso mínimo es 10 us
  • La fluctuación de fase tolerable es inferior a 100 ns
  • La duración del ISR más largo es mayor que 100 ns
pregunta ThiloF

1 respuesta

1

Las transferencias DRC de IIRC, STM32 se ejecutan a 1/4 del reloj del sistema. Por lo tanto, esto establecerá un límite inferior en la precisión.

Además, las secuencias de DMA que se superponen múltiples podrían fluctuar entre sí. Es posible que tenga suficiente flexibilidad para controlar esto y evitar que tenga algún efecto negativo.

Además, dependiendo de dónde se actualice el ciclo, algunos temporizadores STM32 tienen un registro de búfer entre una actualización que se está escribiendo, y en realidad tiene lugar. Tienes cierto control sobre la configuración del temporizador, y quizás del dispositivo, por lo que puedes evitar que esto cause un efecto negativo.

Otro problema es asegurar que los datos estén configurados por el procesador. Una vez más, es posible que tenga el control suficiente para evitar que esto cause un efecto negativo.

Si el límite inferior en la precisión es un problema, tratar de construir un prototipo y hacer algunas mediciones, puede brindarle suficiente información detallada para demostrar que se puede hacer. Sin embargo, si es precisa pero no es un período de tiempo muy breve, es decir, un microsegundo inferior, es probable que funcione.

Resumen:
La tasa DMA establece un límite inferior en la precisión, y configurar datos usando el procesador también puede ser un obstáculo importante si necesita duraciones cortas. Existen otros problemas, que deberá resolver. La precisión sin pequeños períodos es factible.

    
respondido por el gbulmer

Lea otras preguntas en las etiquetas