STM32G474 HRTIME PWM 丢波问题分析与解决 | 您所在的位置:网站首页 › stm32输出PWM波不正常 › STM32G474 HRTIME PWM 丢波问题分析与解决 |
1、问题描述
STM32G474 中包含了针对数字电源应用的高精度定时器(HRTIMER),客户在应用该定时器 产生 PWM 时,发现 PWM 的输出出现了“丢波”现象,本文对该问题进行分析并给出解决方案。 客户使用高精度定时器产生 PWM, 其 PWM 产生的配置如下,Master Timer 的 period event与 compare 1 event 分别作为 Timer A 与 Timer B 的复位源,Timer A 与 Timer B 产生的 180 度移相的 PWM 输出,EEV4 作为外部事件来触发 PWM reset, 并且使用 blanking 功能过滤发生在PWM set 点附近的 EEV4 事件,Timer compare 3 event 用来限制 PWM 的最大占空比,当 WM 周期内没有 EEV4 发生或是发生的时间点晚于 compare 3 事件时,Timer compare 3 event 将触发PWM reset。 Master Timer: -Interleaved Mode:Half modeTimer A : -Up-Down Mode : Up-counting Timer counter reset trigger source : Master timer period event PWM set source : Master timer period event PWM reset source : Timer compare 3 event + EEV4Timer B : Up-Down Mode : Up-counting Timer counter reset trigger source : Master timer compare 1 event PWM set source : Master timer compare 1 event PWM reset source : Timer compare 3 event + EEV4EEV4 : -Source: EE source 2 – COMP1 Sensitivity:Falling edge Fast Mode:re-sync mode Filtering : Blanking from counter reset/roll-over to compare 1 Latch : Ignored if happens during a blank使用以上的配置,正常情况下产生的 PWM 如下所示,C1/C2 分别为 TA1 与 TB1,C3 为 EEV4,下降沿触发事件,使 PWM reset。 对 PWM 丢失的波形进行分析,当该情况发生时,EEV4 发生的时间点已经晚于 CMP3 事件,正常波形的占空比也与设定的最大允许占空比一致。丢波情形节点:在 EEV4 事件发生的时间点靠近 TA1 或 TB1 波形的 set 点处才会出现。 从客户实际的配置中可确认在“丢波”情况出现时,EEV4 不会跨周期,且实际的波形也验证了该点,C3 的下降沿先于 C1/C2 的上升沿出现的,那么一般就会理解 EEV4 导致的 reset 事件不会与 PWM 的 set 事件 Master timer period/ compare 1 event 同时出现,且客户的配置中对EEV4 添加了消隐功能, blanking 区间为 counter reset/roll-over to compare 1,即使 EEV4 与Master timer period/ compare 1 event 同时出现,也应该被过滤掉,set 事件不应该被忽略。总结如下: EEV4 不会与 Master timer period/ compare 1 event 同时出现;即使同时出现,EEV4 也应该被消隐过滤掉。但是 EEV4 作为外部事件作用于高精度定时器(复位 counter 或是 set/reset PWM 输出),其从事件发生到生效是存在一定的内部延时(26.3.8 External events global conditioning),如下图所示。在 re-sync 模式下,这个延时一般会在 60ns 左右。 关于消隐功能的 blanking 区间,比如本文中的 counter reset/roll-over to compare 1,一般的理解是从起点到终点全部过滤,但是实际情况是在设定的起点处 blanking 不会生效(经 division确认),即 blanking 区间不是闭区间。另外需要注意的是消隐功能作用的也是事件的实际生效点,而非发生点。 对以上的分析总结起来如下: 多个事件同时出现的处理过程中,是以事件的实际生效点为准,而非发生点;消隐功能在 blanking 区间的起始点无效,且消隐对象为实际生效点在区间内的事件。客户的配置中,blanking 区间的起始点与 PWM 的 set 点为同一个点,若是 reset 事件 EEV4通过内部延时后刚好也落在这个点上,那么消隐不生效,reset 相对 set 优先级高,结果就是 set事件被忽略,PWM 输出继续保持低电平,也是我们观察到的 PWM“丢波”。 基于上述分析,对客户描述现象进行复现,很容易捕捉到“丢波”现象,本文中提供的“丢波”时的波形就是基于以上的分析与实验获取的。 3、问题解决基于以上的分析与实验,我们需要避免 set 事件与 blanking 区间的起点在同一个点,所以只要将 set 事件放到 blanking 区间的内部就可以了,最简单的方式就是 TA1 与 TB1 的 set 事件不再使用 Master timer period/ compare 1 event,而采用 Timer compare 4 event(该比较器在客户原本配置中没有被使用),compare 4 的值遵循“3 clock”原则,在客户的实际配置中大于 0x32 即可,其他配置保持不变。 即: Master Timer: -Interleaved Mode:Half mode Timer A : -Up-Down Mode : Up-counting Timer counter reset trigger source : Master timer period event PWM set source : Timer compare 4 event PWM reset source : Timer compare 3 event + EEV4 Timer B : -Up-Down Mode : Up-counting Timer counter reset trigger source : Master timer compare 1 event PWM set source : Timer compare 4 event PWM reset source : Timer compare 3 event + EEV4 EEV4 : -Source: EE source 2 – COMP1 Sensitivity:Falling edge Fast Mode:re-sync mode Filtering : Blanking from counter reset/roll-over to compare 1 Latch : Ignored if happens during a blank 4、问题小结对客户的“丢波”问题进行了详细的分析并给出了解决方案,客户在使用该方案后,没有再出现“丢波”现象。在使用外部事件与消隐功能时需要注意: 多个事件同时出现的处理过程中,是以事件的实际生效点为准,而非发生点;消隐功能在 blanking 区间的起始点无效,且消隐对象为实际生效点在区间内的事件。参考文献 文件编号文件标题版本号发布日期1 RM0440Reference manualREV 6February 2021本文档参考ST官方的《【应用笔记】LAT1167+STM32G474+HRTIME+PWM+丢波问题分析与解决》文档。 参考下载地址:https://download.csdn.net/download/u014319604/88971352 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |