
引言 在高精度定时器中,可以使用外部事件来对 PWM 输出进行封锁,并可自动恢复;在高级控制定时器中,可以使用 Break 或是 Clr_input 来对 PWM 输出进行封锁, 然后也可以自动恢复,其中 Break 必须结合 AOE 置位来实现自动恢复。 虽然都可以实现封波后的自动恢复,但是在二者之间还是存在一些区别。 - u. ?* M& P% B/ E) I Q7 P/ iPWM 封波-自动恢复原理分析 在高精度定时器中,通过配置 PWM 的 Set 与 Reset 事件,当 Set/Reset 事件发生时,PWM 输出做出对应的响应。要实现封波-自动恢复,只需配置合适的 Reset 事件,Reset 发 生时,触发 PWM 输出 inactive 电平,当 Reset 事件消失后,PWM 将在下个 Set 事件点重新输出。 # ?, ?: E+ h& r F' R# G在高级控制定时器中,PWM 的工作方式有 PWM_Mode1 与 PWM_Mode2,基于定时器比较器的值与当前 Counter 的值来结合 PWM 模式来确定输出电平的状态。要实现封波-自动恢复,通过 Break(with AOE)或是 Clr_input 功能,当 Break 信号或是 Clr_input 信号电平有效时,PWM 输出会被封锁,此时端口电平跟当时的 PWM 配置有关;当 Break 信号或是 Clr_input 信号电平无效时,PWM 将在下个 UEV(更新事件)或是新的 PWM 的周期恢复输出。 下面通过实际的测试与波形来详细说明。 高精度定时器的 “封波-自动恢复” 使用的是外部事件 1(EEV1)关联外部过流故障信号,利用 EEV1 来封锁 PWM。配置如下(测试中使用的配置是高电平触发事件): 使用以上配置时,只要故障信号持续高电平的时间和 PWM 的 Set 事件不重叠,那么定时器在下个 PWM 周期能正常输出 PWM,如下图所示。 # L+ v) i ~7 {4 X% N但是如果 Fault 信号高电平的持续时间覆盖了 PWM 的 set 事件,那么 PWM 将一直输出低电平,直到 Fault 信号高电平不再覆盖 PWM 的 Set 件,如下图所示。 另外,高精度定时器中的还可以工作的沿模式,例如配置 EEV1 工作在上升沿触发模式,如下图所示。 高级控制定时器的“封波-自动恢复” 高级控制定时器中,break 为电平有效模式(测试中使用的配置是高电平触发 Break)。当出现 Break 信号出现高电平时,PWM 封波,如果 Break 信号高电平未跨周期,那么在下个周期 PWM 能正常输出,如下图所示。 但是如果 Break 信号高电平跨周期,即使高电平持续时间没有到达比较事件点,下个周期 PWM 依旧继续“封波”,直到 Break 信号恢复低电平的下个周期 PWM 才会正常输出,如下图所示。 小结 综上以上的分析与实验结果: & U( S6 \, N/ Y' l• 高精度定时器封波基于事件触发,封波后只要故障消失,则在下个触发来临时就可以立即生效,恢复 PWM 输出。 • 高级控制定时器封波后,即使故障消失后,也要等到下个 UEV 事件或是新的 PWM周期才能恢复 PWM 输出。 . I5 i3 B9 S& O1 {1 ? g- U) p |
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
【经验分享】基于STM32使用HAL库实现USB组合设备CDC+MSC
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命
从STM32 MPU产品看嵌入式系统中微处理器的新变化
【Hot!】STM32全系列开发板都支持Arduino开发,你知道吗?
【经验分享】STM32 HAL库移植FreeModbus详细步骤