(最近在学习六步换相驱动直流无刷电机,记录一下其中陌生的定时器功能)
英文标识含义
- TIx:通道CHx的外部输入信号;
霍尔传感器接口
霍尔传感器接口大概功能逻辑:
- 将CH1~3的输入连接到异或器,输出TI1,实现同时对三个信号的边沿检测;
- TI1经过滤波、边沿检测 -> TI1F_ED信号 -> TRC;
- TRC被映射到IC1,使之触发输入捕获;
输入捕获一般都会开启从模式RESET实现硬件的计数器清零,这里在TRC映射为输入捕获信号的同时,也作为从模式RESET的触发信号。(但是二者不会相互冲突,在IC触发想要获取周期量之前,因为最先触发从模式而导致计数器清零?可能的原因是从模式有一定的延迟……)
PWM输入模式
程序需要对主控MCU(外部MCU)输入的PWM作周期、占空比等数据的解析,此时可配置输入捕获为PWM输入模式,比如将IC1、IC2映射到一个TI输入信号,使PWM信号通过一个输入给到两个通道:
选择TIMx CCR1的有效输入:置TIMx CCMR1寄存器的CC1S=01(选择TI1)
选择TIMx_CCR2的有效输入:置TIMx_CCMR1寄存器的CC2S=10(选择T1)
对应到代码,即对通过对两个通道分别配置TIM_ICSelection_DirectTI
和TIM_ICSelection_IndirectTI
:
/** @defgroup TIM_Input_Capture_Selection TIM Input Capture Selection* @{*/
#define TIM_ICSELECTION_DIRECTTI TIM_CCMR1_CC1S_0 /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to IC1, IC2, IC3 or IC4, respectively */
#define TIM_ICSELECTION_INDIRECTTI TIM_CCMR1_CC1S_1 /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to IC2, IC1, IC4 or IC3, respectively */
#define TIM_ICSELECTION_TRC TIM_CCMR1_CC1S /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC */
/*** @}*/
配置后的效果是: