自学野火电机的教程, 其中TIM5(主) 和 TIM8 (从)是怎么配合的花了点时间梳理了下. 以便日后自己查看.
--其中TIM8为高级定时器(从定时器),配置了PWM输出, 野火用了H_PWM_L_High的方式. 其中HAL_TIMEx_ConfigCommutationEvent 配置了触发源, 和另一个主定时器TIM5交互.具体该函数的实现方式
- 配置了ITR3作为触发输入
-
CCPC位置1 (如果有预装载, 则仅当发生换向事件 (COM) 时才会对CCxE、CCxNE位进行更新)
-
CCUS位置0 (预装载只能COMG软件更新, TGRI更新功能不激活)
--TIM5配置了霍尔传感器三相的输入捕获. 其中使用 HAL_TIMEx_HallSensor_Init 配置了作为主定时器的一部分设置.
-
配置CR2的TI1S位(把3个输入用一个异或连接,只要其中一个电平跳变都会发生触发中断)
-
配置SMCR的TS位(TIM_TS_TI1F_ED), 为从模式控制器提供复位控制
-
触发重置功能; SMCR的SMS位(TIM_SLAVEMODE_RESET)
-
配置TRGO位OC2REF为触发输出; CR2的MMS位
使能TIM5的触发中断和更新中断; 只要霍尔三相中有跳变,触发中断使能(调用其中的换向函数).
只要TIM5的ARR值溢出,则开启更新中断(检查堵转的情况).
TIM8和TIM5 两个定时器的配合流程应为:
- 霍尔TIM5接收到跳变信号,通过TI1F_ED触发中断
- 通过从模式控制器(复位设置),TIM5计数器被复位
- 进入TIM5中断触发函数, 写入TIM8的PWM输出设置
- 同时TIM5通过设置的OC2REF输出触发TGRO
- TGRO被TIM8的ITR3通道接收激活, 开始新的PWM输出