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?
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.
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.
Jeroen3
usuario115094