STM32 HRTIM Burst输出模式实现示例
来源:茶话MCU 发布时间:2024-06-13 分享至微信


有人使用STM32G474芯片的片上高精度定时器HRTIM,他想使用其输出功能的Burst Mode。但不知如何使用,想找找参考例程。我这里就使用STM32G474芯片做下应用演示。

我们知道,STM32家族中有多个系列或子系列芯片内置HRTIM定时器。这里以STM32G474芯片为蓝本简单介绍下HRTIM时基单元中输出功能的BURST MODE原理及实现过程。HRTIM时基单元中输出模块【或通道】可以有三种工作状态,即运行态、空闲态、出错异常态【RUNIDLEFAULT】。

【注:上面截图来自STM32G4系列参考手册】

此处所要讲的Burst模式其实就是运行态空闲态交替实现输出的模式,即输出通道一会工作在运行状态、一会工作在空闲状态,每种状态的持续时间可以编程,由Burst Mode控制器管理。

HRTIM输出单元的Burst 操作模式在轻量负载的电源逆变器产品中用得比较常见。通过减少输出跳变次数及开关损耗,可以显著地提升转换效率。

当工作在Burst模式时【下文中文我统一用交替输出模式来表述】,典型应用就是1个或几个周期的运行状态的有效输出后,紧跟着输出相应周期数的空闲状态,可以单次性,也可以周期性地实现。比方下图就是一个工作在交替输出模式的示例【注:下面截图来自STM32G4系列参考手册】:

结合上图我们可以看出,交替输出控制器包括个东西:

Burst计数器:时钟源【Burst Clock】可以有多种,甚至可以是HRTIM以外的事件,比较典型的是PWM周期事件。

寄存器HRTIM_BMCMP:用它定义空闲时间段长度。

寄存器HRTIM_BMPER:用它来定义一次交替输出的整个时间段,即上面的空闲事件段加上运行态时间段。时间段长短通过计数器的计数值来标定。【注:下面截图来自STM32G4系列参考手册】

上图中的交替输出模块的计数器的时钟源是HRTIM定时器单元的计数周期事件;

HRTIM_BMCMP=4,则一次交替输出的时间段内有5个计数周期做空闲输出;

HRTIM_BMPER=7,则一次交替输出的时间段为8个计数周期,其中运行处于运行态有3个周期;

另外,要进入交替输出模式,还需要触发信号来激活。能触发交替输出模式的事件很多,可以是HRTIM的时基单元的复位事件、溢出事件、比较事件、重复计数事件等,还可以来自其它片上常规定时器的事件。

在下面的演示示例中,我选用TIMA的复位事件作为交替输出模式的触发事件。那么,现在就以STM32G474芯片为例,来介绍下HRTIM交替输出模式的实现过程。

我使用STM32CubeMx图形化工具进行基本配置。使用HRTIM里的TIMA单元,并开启其TA1/TA2的两路PWM输出。关于这两个通道的配置参数基本一样,有一点差别就是我只开启了TA1的交替输出模式,而没有开启TA2的。这样可以明显地做效果比较。重点关注下面配置截图中带下划线,尤其红色下划线的地方。

在交替输出模式配置【Burst Modeconfiguration】里,我们配置Burst Mode Period10,它对应前面提到的寄存器HRTIM_BMPER的值,即一次交替输出的整个时间段为11个周期。

配置Burst Mode Idle Duration4,它对应前面提到的寄存器HRTIM_BMCMP,即一次交替输出时间段中有5个周期处于空闲输出【当然空闲输出电平可以根据需要选择性配置,这里输出低电平】。至于交替输出模式的触发信号,这里选择的是TIMA的复位事件,交替输出模式的计数时钟选择TIMA的周期性溢出事件。当然,具体应用时我们可以根据实际需要选择。

其它配置细节这里就不啰嗦了,先跑出效果来。然后自己结合手册尝试调整,逐渐加深理解,慢慢进入自由使用。

基于我上面的配置,创建基于HAL库的工程后,只需添加几行如下代码即可运行查看结果。

上面截图就是基于前面配置及代码的实现结果。不难看出,TA1开启了交替输出功能,TA2没有开启。从TA1的输出,我们可以看出整个交替输出时间段为11个周期,其中6个周期为有效运行状态,5个周期处于空闲输出状态。

好,今天的分享就到这里,供有需要的人士参考或备用。

~~~~~~~~~~~~~~~~~~~~~~~~~~


[ 新闻来源:茶话MCU,更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj]
存入云盘 收藏
举报
全部评论

暂无评论哦,快来评论一下吧!