打印
[信息]

【实战经验】HRTIMER产生多相移信号

[复制链接]
1557|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 香水城 于 2017-8-14 13:47 编辑

HRTIMER产生多相移信号
前言
STM32F334内部集成了高精度Timer,最高主频4.6GHz,灵活的控制用于产生数字电源等产品的PWM控制信号,内部丰富的联动机制可以产生各种实际需求波形,本文针对多相相移信号的产生给开发者一定启示,抛砖引玉,开发者可以根据不同需求产生应用所需的波形。

STM32F334内部HRTIMER结构
下图为HRTIMER的框图,可以看到该高精度Timer拥有五路独立的计数器,可以产生独立的五路带死区互补输出的PWM波形,同时Master Timer这个没有输出端口的独立Timer可以作为五路其他Timer的清零同步信号。



需要产生的波形
假定需要输出四路带死区互补输出PWM波形,频率相同,但各路波形存在相移:
PWM1,PWM2,PWM3,PWM4, 需要控制这四路波形的相位,
PWM1为0度,PWM2 为30度相移,PWM3为85度相移,PWM4为100度相移
占空比假定都是50%的占空比



产生上述波形的机制
STM32F334的波形产生采用了比较输出模式,也就是说可以单独设定波形的Set,Reset位置,当需要将各路波形统一起来,需要同一个触发源,在不同相位点去触发Timer计数器复位,这样当设定好比较模式时,波形将自动输出,准确快速,并且可靠;

配置步骤
配置管脚以及时钟
配置Master Timer
假定使用128MHz*8 = 1024MHz作为基本时钟源,Master Timer设定为50KHz,则Master Timer的ARR寄存器数据为1024MHz/50KHz = 20480,即360度对应20480;
Master Timer的Update事件作为TimerA的计数reset信号,此时设定相移为0度
Master Timer的Compara Value 1作为TimerB的计数reset信号,如果设定相移为30度,则Compara Value 1 = ARR*30/360 = 1706
Master Timer的Compara Value 2作为TimerC的计数reset信号,如果设定相移为60度,则Compara Value 1 = ARR*85/360 = 3413
Master Timer的Compara Value 1作为TimerD的计数reset信号,如果设定相移为90度,则Compara Value 1 = ARR*100/360 = 5120



配置各个独立Timer
Timer的计数Reset信号分配如上面所示,因为这里设定的占空比为50% ,那么只需要使用到独立Tiemr的Compara Value1作为该Timer的Set信号,而Timer的update事件作为该Timer的Reset信号即可,当然这里还要说明,如果如果设定不同占空比信号输出,也可以直接配置该Timer的Compara Value2作为该Timer的Reset信号即可;
本例因为是50%的占空比,那么直接设定Compara Value1x(x=A,B,C,D) = 20480/2 = 10240;
死区时间固定的上升下降都为数字100,该数据可根据实际调整;




实际测试波形:
为方便观察,只取每相的通道1的波形进行观察。如下,可看到清晰的移相信号:




对应的代码:STM32F334_PhaseShift
更多实战经验请看:【ST MCU实战经验汇总贴】
沙发
energyplants| | 2016-7-5 10:36 | 只看该作者
这个在什么方向上能用到呢

使用特权

评论回复
板凳
289466080| | 2022-9-20 23:08 | 只看该作者
energyplants 发表于 2016-7-5 10:36
这个在什么方向上能用到呢

移相全桥

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:意法半导体(中国)投资有限公司
简介:STM32技术专家

596

主题

17066

帖子

283

粉丝