¿Es posible tener 16 salidas PWM simultáneas en un dispositivo STM32F4 de 64 pines?

4

De la STM32F405xx / STM32F407xx datasheet , leo que al menos ) TIM2, TIM3, TIM4 y TIM5 tienen unidades de comparación de salida que pueden configurarse para producir señales PWM en 4 canales cada una. Si uno configuraba los temporizadores de esta manera:

  • TIM2: PA15 / PB3 / PB10 / PB11
  • TIM3: PC6 / PC7 / PC8 / PC9
  • TIM4: PB6 / PB7 / PB8 / PB9
  • TIM5: PA0 / PA1 / PA2 / PA3

Uno lograría dieciséis salidas PWM simultáneas, ¿es correcto? ¿Hay algo que haya pasado por alto? ¿Hay alguna razón para que esto no sea posible o no sea aconsejable?

    
pregunta Mark

2 respuestas

6

Comprobar si faltan pines

Parece que debería funcionar exactamente como se describe en la hoja de datos. Lo más importante a tener en cuenta es la falta de pines en los paquetes de conteo de pines más bajos; en este caso, ST puso un complemento completo de 16 pines en los puertos A-C y simplemente agregó nuevos puertos (D y E) para la versión de 100 pines. Afortunadamente, ninguno de los pines necesarios está en los puertos D o E.

Compruebe si hay recursos exagerados

La otra cosa a tener en cuenta es los diseños que utilizan muxes para compartir hardware. En algunos micros con especificaciones de marketing equivalentes, puede que solo haya cuatro unidades de comparación de salida mezcladas entre cada temporizador. Esto evitaría que usara todas las funciones a la vez, pero parece que este controlador tiene una cantidad sorprendentemente grande de silicio dedicado a los temporizadores y parece que está listo.

Comprueba que esto es realmente necesario

¿Realmente necesitas relojes PWM de 84 MHz?

Dicho esto, 16 salidas PWM suenan como una gran cantidad para la mayoría de las aplicaciones de alta velocidad que se me ocurren como el control del motor, las fuentes de alimentación en modo de conmutación y la corrección del factor de potencia. Si de hecho está haciendo una de estas cosas en 16 canales, entonces el propósito principal de su producto es probablemente realizar este PWM y es perfectamente aceptable y normal usar este hardware para este propósito.

¿O puede hacerlo con menos hardware y algún software?

Sin embargo, 16 canales suenan más como si estuvieras atenuando una serie de LED. Si solo está atenuando los LED, puede ejecutar su PWM en frecuencias tan bajas como 100 Hz o menos, y hay pocas razones para utilizar todo este hardware para una tarea tan simple y fácil. Use un temporizador y alguna aritmética simple (rápida) en su ISR para controlar el PWM para tantos canales como desee en los pines GPIO comunes.

ST gastó mucho dinero para poner algo de hardware impresionante en este chip. Si es probable que su diseño pase por futuras iteraciones, debe considerar si realmente desea usar este hardware para algo tan simple como hacer que un LED brille. Estaría usando sus únicos temporizadores de 32 bits, 4 de 6 temporizadores con capacidad de conteo descendente y ascendente / descendente, 4 de 8 temporizadores con capacidad de generación de solicitudes DMA, y 8 de 18 canales de captura / comparación. Si es probable que realice cambios o agregue funciones que puedan necesitar este hardware más adelante, no tiene sentido usarlo para la modulación de LED.

Como dije antes, sin embargo, si PWM es lo que estás haciendo, ¡entonces usa el hardware!

    
respondido por el Kevin Vermeer
2

Página 30: El STM32F40x incluye 4 temporizadores de propósito general con todas las funciones: TIM2, TIM5, TIM3 y TIM4.Los temporizadores TIM2 y TIM5 se basan en una carga / bajada de recarga automática de 32 bits y un prescaler de 16 bits. Los temporizadores TIM3 y TIM4 se basan en una recarga automática de 16 bits up / downcounter y un prescaler de 16 bits. Todos ellos cuentan con 4 canales independientes para Captura de entrada / salida de salida, PWM o salida en modo de un impulso. Esto da hasta 16. captura / salida de entrada / PWM en los paquetes más grandes

No dice qué paquetes son, pero es probable que sean dispositivos de 144 y 176 pines, tal vez 100. Tendría que revisar esos puertos de pines y ver si están presentes, incluida la función de E / S de comparación de salida.

Según ese párrafo, cada temporizador se puede conectar a 4 salidas de comparación. La comparación de salida establece básicamente el ciclo de trabajo, y el temporizador la frecuencia. Así, al final, puede tener 4 grupos con una frecuencia establecida, pero cada uno con un ciclo de trabajo individual.

No sé qué tan crítica es la precisión de PWM, o estás tratando de obtener algún tipo de control continuo, también puedes intentar:  * Software PWM, configurando manualmente los puertos de salida. Toma un temporizador y más tiempo de procesador.  * Controladores PWM, controladores de LED básicamente utilizados como controladores PWM. PCA9634, por ejemplo, tiene una frecuencia fija (97 kHz) pero con un ciclo de trabajo individual. También hay versiones de 16 canales. TI también fabrica una tonelada de controladores LED, pero la mayoría de ellos tienen salidas de corriente constante, con lo que evito interactuar.

No vería por qué esto no es algo recomendable. Si el chip puede hacerlo, adelante. Lo que consideraría es si puede obtener la precisión del ciclo de trabajo deseado en la frecuencia establecida. Por ejemplo, si necesita una precisión de ciclo de trabajo de 10 bits (como 0-100% se configura en 0-1023) y una salida de 100kHz, básicamente necesita un reloj de referencia de 2 ^ 10 * 100k = 102.4MHz.

Entonces, en realidad, PWM no es solo PWM, para ser más específicos acerca de si el chip se adapta a sus necesidades, ¿quizás podría decirnos más sobre la velocidad y precisión requeridas?

    
respondido por el Hans

Lea otras preguntas en las etiquetas