无刷直流电动机基本转动原理请参考《基于霍尔传感器的无刷直流电机控制原理》与《基于反电动势过零检测法的无刷直流电机控制原理》,BLDC基本原理及基础知识本篇不再赘述。
定时器互连
定时器之间相互连接可以定时器级联或者同步。可以通过配置一个定时器工作在主模式另一个定时器工作在从模式来实现。下图显示了定时器0配置为从模式时的触发选择。
从定时器能在多种模式下同步外部触发,包括复位模式,暂停模式和事件模式,可以通过设置TIMERx_SMCFG 寄存器中的SMC [2:0]配置这些模式。这些模式的输入触发源可以通过设置TIMERx_SMCFG 寄存器中的TRGS [2:0]来选择。
霍尔传感器接口功能
高级定时器具有霍尔传感器接口功能,该功能既可以应用于基于霍尔传感器的控制策略中,也可以用在基于反电势过零点的控制策略中。
一般情况下,无刷直流电机控制程序中需要至少两个定时器如下图所示。一个使用于产生电机驱动PWM信号的高级控制定时器TIMER_out,一个是实现与霍尔传感器的连接的“接口定时器”TIMER_in。
3 个接口定时器输入引脚(CH0_IN、CH1_IN 和 CH2_IN)通过异或门连接到CI0输入通道(通过将 TIMERx_CTL1 寄存器中的 TI0S 位置 1 来选择),并由“接口定时器”进行捕获。
从模式控制器配置为复位模式;从输入为 CI0F_ED。这样,每当3个输入中有一个输入发生切换时,计数器会从0开始重新计数。这样将产生由霍尔输入的任何变化而触发的时基。
在“接口定时器”上,捕获/比较通道 1 配置为捕获模式,捕获信号为ITS。捕获值对应于输入上两次变化的间隔时间,可通过计算得到与电机转速相关的信息。
“接口定时器”可用于在输出模式下产生脉冲,以通过触发换相事件(换相事件是指TIMERx_SWEVG的CMTG位被置1或检测到TRIGI上升沿,TRIGI信号是指从模式控制器的输入信号,在TIMERx_SMCFG的TRGS[2:0]中选择)来更改高级控制定时器各个通道的配置。
高级定时器用于生成电机驱动PWM信号。为此,必须对接口定时器通道进行设置,使接口定时器产生正脉冲(在输出比较或PWM模式中)。该脉冲通过接口定时器的TRIGO 输出发送到高级控制定时器(TIMER0或TIMER7)。
示例:霍尔输入与一个 TIMER2 定时器相连接,每当霍尔输入发生更改,需要在所编程的延迟过后(延迟可通过单脉冲模式实现)更改高级控制定时器 TIMER0 的 PWM 配置。
1.向TIMER2_CTL1寄存器的TI0S位写入“1”,使 3 个定时器输入经过异或运算后进入CI0输入通道。
2.时基编程:向TIMER2_CAR写入其最大值(计数器必须通过CI0的变化清零)。设置预分频器,以得到最大计数器周期,该周期大于传感器上两次变化的间隔时间。
3.将通道0编程为捕获模式(IS0选择来源ITS):向TIMER2_CHCTL0寄存器的CH0MS位写入“11”。如果需要,还可以编程数字滤波器。
4.将通道1编程为 PWM1模式,并有所需延迟:向TIMER2_CHCTL0寄存器的CH0COMCTL位域写入“111”,CH1MS位写入“00”。
5.选择O1CPRE作为 TRGO 上的触发输出:向TIMER2_CTL1寄存器的 MMC 位写入“101”。
6.在高级控制定时器TIM0中,必须选择正确的ITI输入作为触发输入,定时器编程为可产生 PWM 信号,捕获/比较控制信号进行预装载(TIMER0_CTL1寄存器的CCSE=1),并且换相事件由触发输入控制(TIMER0_CTL1寄存器中 CCUC=1)。发生换相事件后,在 PWM 控制位写入下一步的配置,此操作可在由O1CPRE上升沿产生的中断子程序中完成。
两个定时器之间的霍尔传感器时序图:
单脉冲模式
该模式下,计数器可以在一个激励信号的触发下启动,并可在一段可编程的延时后产生一个脉宽可编程的脉冲。设置TIMERx_CTL0 寄存器的SPM 位置1,则使能单脉冲模式。当SPM 置1,计数器在下次更新事件到来后清零并停止计数。为了得到脉冲波,可以通过设置CHxCOMCTL配置TIMERx为PWM 模式或者比较模式。TIMERx_CHxCV=0x04,TIMERx_CAR=0x60如下图所示。