Preguntas generales sobre temporizadores [STM32 y CubeMx]

Estoy aprendiendo por mi cuenta cómo manejar los temporizadores en CubeMx. Tengo algunas preguntas simples.

Primera pregunta:

En el árbol del reloj, veo frecuencias de bus de relojes periféricos y temporizadores APB1/APB2. Pensé que cuando configuro un preescalador, la frecuencia del reloj del temporizador APBx es la que divide el preescalador, pero en realidad es la frecuencia del reloj periférico APBx.

¿Cuál es la verdadera diferencia?

Segunda pregunta:

Configuré el temporizador 2 en el modo de entrada PWM para medir el período de una señal de entrada. Entonces, en la devolución de llamada de interrupción puedo decir:

period = HAL_TIM_ReadCapturedValue(&htim1, TIM_CHANNEL_2);

¿Dice esto el período en milisegundos? ¿O es esta la forma correcta de pedir el período?

Tercera pregunta:

Leí en una nota de la aplicación:

La frecuencia de TIMxCLK se establece en 72 MHz, el preescalador es 0x0, por lo que la frecuencia de reloj del contador TIM2 es de 72 MHz. Entonces, el valor mínimo de frecuencia a medir es 1100 Hz.

¿Cómo calculo esa frecuencia mínima?

Al configurar el modo de entrada PWM o el modo de captura de entrada para medir una señal externa, ¿cómo elijo el preescalador y el período de contador de manera efectiva en CubeMx de acuerdo con mi rango de frecuencias?

¿Qué microcontrolador?
Núcleo L432KC.

Respuestas (1)

Con respecto a la pregunta AHB/APB, esto se explica mejor con una mirada al Árbol del Reloj.
AHB y APB no son el mismo autobús. El AHB tiene memoria y core, el APB tiene periféricos. En cuanto a la energía, es posible que estos no tengan la misma velocidad.

stm32l432 árbol de reloj

Un caso especial en los chips ST es que los periféricos, incluidos los registros de los temporizadores , se sincronizan en PCLK1 y la fuente del reloj del temporizador se encuentra en un múltiplo de PCLK1. Esto permite un APB1 más lento, pero aún permite temporizadores más rápidos.

¿Dice esto el período en milisegundos?

Da el resultado en tics de temporizador.

La frecuencia de TIMxCLK se establece en 72 MHz, el preescalador es 0x0, por lo que la frecuencia de reloj del contador TIM2 es de 72 MHz. Entonces, el valor mínimo de frecuencia a medir es 1100 Hz.

¿Cómo calculo esa frecuencia mínima?

Reloj / Temporizador máximo = 72 MHz / (2^16) = 1,09863281 kilohercios.

¿Cómo elijo el preescalador y el contraperíodo de manera efectiva en CubeMx según mi rango de frecuencias?

Probablemente no pueda usar un rango si necesita un rango de captura grande. Puede cambiar los preescaladores automáticamente, como lo hace su multímetro en el rango automático.

No se trata de AHB. Por ejemplo, en el árbol de reloj que adjuntó, digamos que APB1 Presc va a PCLK (periféricos APB1) y X1, X2 (a TIMx). Entonces, al configurar el preescalador en CubeMx, debo usar el reloj periférico APB1 como referencia, no el reloj TIMx. ¿Porqué es eso? Y, ¿cómo obtengo la señal del período con los tics del temporizador?
@XavierPachecoPaulino ver editar
Está bien, gracias. Hasta ahora, mi única duda es sobre la pregunta 2. Me dijiste que da el resultado en tics del temporizador. Entonces, ¿cómo deduzco el período de la señal en ms?
@XavierPachecoPaulino Lo multiplicas con el período del reloj temporizador.