STM32 se utiliza para la medición del ciclo de trabajo PWM

Estructura de la señal de entrada TIM de STM32
Inserte la descripción de la imagen aquí

La etapa de entrada muestrea la entrada TIx correspondiente para generar una señal filtrada TIxF. Luego, un detector de bordes con selección de polaridad genera una señal (TIxFPx) que puede ser utilizada como entrada de disparo por el controlador de modo esclavo o como comando de captura. Está preescalado antes del registro de captura (ICxPS).

Reciba una señal TIx desde el pin, obtenga la señal TIxF a través del filtrado digital y seleccione la señal TIxFPx a través de la detección de bordes Esta señal se puede usar en modo esclavo o directamente para la programación.


Modo de captura de entrada

En el modo de captura de entrada, los registros de captura / comparación (TIMx_CCRx) se utilizan para bloquear (锁存) el valor del contador después de una transición detectada por la señal ICx correspondiente. Cuando ocurre una captura, se establece la bandera CCXIF (输入 捕获 中断 标志) correspondiente (registro TIMx_SR) y se puede enviar una interrupción o una solicitud DMA si están habilitadas. Si se produce una captura mientras el indicador CCxIF ya estaba alto, se establece el indicador de sobrecaptura CCxOF (registro TIMx_SR). CCxIF se puede borrar por software escribiéndolo en 0 o leyendo los datos capturados almacenados en el registro TIMx_CCRx. (通过 读取 CCRx 中 的 数据 可以 清除 CCxIF 捕获 中断 标志) CCxOF se borra cuando se escribe en 0.

Junto al contenido de "Estructura de la señal de entrada STM32 TIM", lo último mencionado anteriormente es que la señal TIxFPx utilizada para la programación se genera detectando la transición de flanco, y la señal ICx se genera en este momento. Una vez que se genera la señal ICx, el registro CCRx bloquea esto Al mismo tiempo, se establecerá el indicador de interrupción CCxIF. Si ocurre un evento de captura mientras se establece CCxIF, se establecerá el indicador de sobrecaptura CCxOF. En particular, después de que el programador lea los datos en CCRx. el hardware borra el indicador de interrupción CCxIF.

Input capture configuration code example 
/* (1) Select the active input TI1 (CC1S = 01),
 program the input filter for 8 clock cycles (IC1F = 0011),
 select the rising edge on CC1 (CC1P = 0, reset value)
 and prescaler at each valid transition (IC1PS = 00, reset value) */
/* (2) Enable capture by setting CC1E */
/* (3) Enable interrupt on Capture/Compare */
/* (4) Enable counter */
TIMx->CCMR1 |= TIM_CCMR1_CC1S_0 \
 | TIM_CCMR1_IC1F_0 | TIM_CCMR1_IC1F_1; /* (1 */
TIMx->CCER |= TIM_CCER_CC1E; /* (2) */
TIMx->DIER |= TIM_DIER_CC1IE; /* (3) */
TIMx->CR1 |= TIM_CR1_CEN; /* (4) */
//上面配置TIM的模式寄存器TIMx capture/compare mode register TIM->CCMR1
//CC1S用于选择信号来自于TI1还是TI2,这里的理解要回到第一张图,可以看到CCMR1这个配置寄存器的作用。
//这段代码就是第一张图的配置,程序员可以根据的需要去配置CCMR1寄存器。

Modo de entrada PWM

Este modo es un caso particular del modo de captura de entrada. El procedimiento es el mismo excepto:

1) Se asignan dos señales ICx (映射) en la misma entrada TIx.

2) Estas 2 señales ICx están activas en flancos con polaridad opuesta.

3) Una de las dos señales TIxFP se selecciona como entrada de disparo y el controlador de modo esclavo

está configurado en modo de reinicio.

Este es un caso especial del modo de captura de entrada. La señal TIx de un pin en stm32TIM puede generar dos señales IC IC1 e IC2 (aquí se usan IC1 e IC2 como ejemplos, los lectores pueden usar IC3 e IC4, sin IC2 e IC3, esto es una regla), la polaridad de estas dos señales IC es opuesta, por lo que solo puede formar un PWM, una de estas dos señales se usa para disparar, la otra está en modo esclavo y está configurada como modo de reinicio.

Pasos para capturar PWM para medir el ciclo de trabajo

\ 1. Seleccione la entrada activa para TIMx_CCR1: escriba los bits CC1S en 01 en el TIMx_CCMR1

registro (TI1 seleccionado).

\ 2. Seleccione la polaridad activa para TI1FP1 (utilizada tanto para la captura en TIMx_CCR1 como para el contador

clear): escriba el CC1P en '0' y el bit CC1NP en '0' (activo en el flanco ascendente).

\ 3. Seleccione la entrada activa para TIMx_CCR2: escriba los bits CC2S a 10 en el TIMx_CCMR1

registro (TI1 seleccionado).

\ 4. Seleccione la polaridad activa para TI1FP2 (utilizada para la captura en TIMx_CCR2): escriba el CC2P

bit a '1' y el bit CC2NP a '0' (activo en flanco descendente) (Nota: la polaridad es opuesta a la señal IC1)

\ 5. Seleccione la entrada de disparo válida: escriba los bits TS en 101 en el registro TIMx_SMCR

(TI1FP1 seleccionado). (Seleccione IC1 para disparar, luego IC2 se reducirá al modo esclavo)

\ 6. Configure el controlador de modo esclavo en modo de reinicio: escriba los bits SMS a 100 en el

Registro TIMx_SMCR.

\ 7. Habilite las capturas: escriba los bits CC1E y CC2E en '1 en el registro TIMx_CCER.

Este es un ejemplo de PWM. Mirando hacia atrás en la introducción del modo de entrada PWM, este ejemplo selecciona primero qué pin TIM del STM32, TI1, TI2 o TI3, el registro de configuración CCMR1 se usa para configurar la polaridad de IC1 e IC2. por el contrario, uno se utiliza como fuente de disparo y el otro se configura como modo esclavo de reinicio. En este ejemplo, IC1 se utiliza como disparador. Cuando IC1 captura el disparador, CCR1 bloquea el valor del contador en este momento , y el siguiente disparador es el giro de la polaridad opuesta de IC1. El IC2 se dispara, CCR2 bloquea el valor del contador y restablece el contador, por lo que CCR1 y CCR2 se pueden usar para calcular el ciclo de trabajo.
Inserte la descripción de la imagen aquí

Esta imagen refleja el modo esclavo con IC1 configurado para reiniciarse e IC2 como fuente de activación.

Supongo que te gusta

Origin blog.csdn.net/weixin_43810563/article/details/110940936
Recomendado
Clasificación