關鍵詞:HRTIME, PWM,丟波,消隱
目錄預覽
1.前言
2.問題描述
3.原因分析
4.解決方法
5.小結
2.
問題描述
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 : Master timer period 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 : Master timer compare 1 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
使用以上的配置,正常情況下產生的 PWM 如下所示,C1/C2 分別為 TA1 與 TB1,C3 為EEV4,下降沿觸發事件,使 PWM reset。
但是當外部事件發生的點接近于 PWM 周期值時,就會出現 “丟波”,如下圖所示。
展開其中的部分波形觀察如下
3.
原因分析
對 PWM 丟失的波形進行分析,當該情況發生時,EEV4 發生的時間點已經晚于 CMP3 事件,正常波形的占空比也與設定的最大允許占空比一致。丟波情形節點:在 EEV4 事件發生的時間點靠近 TA1 或 TB1 波形的 set 點處才會出現。
為什么會出現“丟波”?從波形上分析,唯一可能的原因就是 C1/C2 的 set 事件被“忽略”了 ,導致整個周期一直處于低電平狀態。在高精度定時器中,若多個事件同時發生的時候就會出現事件被“忽略”的情況,且 reset 事件具備最高優先級(除了多個事件都來源于同一定時器的CMP、PER 事件),導致 set 事件被“忽略”,可閱讀 RM 的 26.3.7 Set / reset events priorities and narrow pulses management 了解更多詳細的規則。
從客戶實際的配置中可確認在“丟波”情況出現時,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 左右。
左右滑動查看變化
在高精度定時器中對多個事件同時出現的處理都是以事件的實際生效點為準,所以當 EEV4的下降沿發生點靠近 PWM set 事件的情況下,經過內部延時后,就可能會與 set 事件同時出現了。
關于消隱功能的 blanking 區間,比如本文中的 counter reset/roll-over to compare 1,一般的理解是從起點到終點全部過濾,但是實際情況是在設定的起點處 blanking 不會生效(經 division確認),即 blanking 區間不是閉區間。另外需要注意的是消隱功能作用的也是事件的實際生效點,而非發生點。
對以上的分析總結如下:
?多個事件同時出現的處理過程中,以事件的實際生效點為準,而非發生點;
? 消隱功能在 blanking 區間的起始點無效,且消隱對象為實際生效點在區間內的事件。
客戶的配置中,blanking 區間的起始點與 PWM 的 set 點為同一個點,若是 reset 事件 EEV4通過內部延時后剛好也落在這個點上,那么消隱不生效,reset 相對 set 優先級高,結果就是 set事件被忽略,PWM 輸出繼續保持低電平,也是我們觀察到的 PWM“丟波”。基于上述分析,對客戶描述現象進行復現,很容易捕捉到“丟波”現象,本文中提供的“丟波”時的波形就是基于以上的分析與實驗獲取的。
-
單片機
+關注
關注
6040文章
44604瀏覽量
637059 -
STM32
+關注
關注
2270文章
10918瀏覽量
356831
原文標題:工程師筆記|STM32G474 HRTIME PWM 丟波問題分析與解決
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論