在STM32H725多定时器同步移相(基于ASTM32CubeMX)
在STM32H725上实现多个定时器的移相功能,同时各个定时器可以各自控制各自的占空比。
1需要实现的功能有:
1 单个定时器各自独立输出自己的PWM信号,PWM模式、极性、互补等可调,占空比可控;
2 多个定时器时钟之间同频率(好像一半频率关系也可以);
3 多个定时器计数之间相位固定,或相位可控;
2两个TIM延迟实现原理
采用定时器的从模式实现。选定一个主TIM,如比TIM1。其他的TIM,比如TIM2,实现与TIM1的移相,作为从TIM。在主TIM计数器指定值时,从TIM复位清零开始计数。
2.1 触发输出配置
首先主TIM需要配置的是,作为主模式时的触发输出。在TIMx_CR2中的MMS位进行配置,具体如下:
选定不用的通道进行配置,比如CH1作用PWM输出,CH2用作PWM输出,那么CH3或CH4就可以用作触发输出。
MMS配置为110,即OC3REFC这个信号可作为从模式触发输出。
2.2 配置OC3REFC
如图所示,图中OC1REFC为CH1的信号,那么对应OC3REFC就是CH3信号。
这个信号就在TIM中配置,可以配置为PWM模式、强制输出模式等。
为了能够每个周期都实现固定或可调的相位延迟,这里配置为PWM模块,或者比较输出模块中的翻转,又或者强制输出模式中的翻转。这里因为从TIM的从模式的触发源,好像是上升沿触发,这个具体不知道在哪配置,我用开发板试出来的。
比如,配置为PWM模式2。图中上面三角波是TIM1的计数器,也即主TIM的计数器,绿色的是TIM1的OC3REFC信号。底下是从TIM的计数器。
2.3 配置从TIM的从模式
从模式配置为复位模式,即从TIM收到输入触发源后,从TIM的计数器和预分频器均复位清零。
这里输入触发源选择其他TIM的触发输出。不同TIM的触发源定义如下:
TIM2作为从TIM,TIM1作为TIM2的主TIM,因为选择ITR0。
图中,底下的为TIM2,也即从TIM的计数器。这样就实现了TIM2和TIM1之间的移相,并且各自可以根据各自的计数器进行PWM配置。
3 两个TIM延迟CubeMX配置
首先配置主TIM中的从模式部分,如下:
首先是主TIM的触发输出配置,见图中1。触发输出选择Output Compare(OC3REF)。
然后是主TIM的OC3REF配置,见图中2(有两个地方),通道选择中,Channel3选择PWM Generation No Output;然后具体在底部配置为PWM模式2,初始化的相位对应值,即在主TIM产生OC3REF信号的数值,即CCR3。
TIM2配置
TIM2的从模式中,选择复位模式,触发源根据表格选择触发源。可对照之前的表进行触发源确定,这里选择ITR0。
4 多个TIM之间的移相
如果要实现多个TIM的移相,可以这个TIM即作为其他TIN的主TIM,同时作为从TIM。比如,实现TIM1、TIM2和TIM3分别移相120度,为三相拓扑实现PWM信号产生。TIM1为A相产生PWM,TIM2为B相产生PWM,TIM3为C相产生PWM。现要实现三相之间的PWM各移相120,那么TIM1为TIM2的主TIM,TIM2作为从TIM,延迟TIM1有120度。同时TIM2作为TIM3的主TIM,TIM3作为从TIM延迟TIM2有120度。
上述中,TIM2就要配置触发输出和通道部分,也要选择从模式的复位模式和触发源。
原图如下:
具体的CubeMX类似于两个TIM之间相位延迟配置。