前言
STM32G474 中包含了針對數(shù)字電源應(yīng)用的高精度定時器(HRTIMER),客戶在應(yīng)用該定時器產(chǎn)生 PWM 時,發(fā)現(xiàn) PWM 的輸出出現(xiàn)了“丟波”現(xiàn)象,本文對該問題進(jìn)行分析并給出解決方案。
問題描述
客戶使用高精度定時器產(chǎn)生 PWM, 其 PWM 產(chǎn)生的配置如下,Master Timer 的 period event與 compare 1 event 分別作為 Timer A 與 Timer B 的復(fù)位源,Timer A 與 Timer B 產(chǎn)生的 180 度移相的 PWM 輸出,EEV4 作為外部事件來觸發(fā) PWM reset, 并且使用 blanking 功能過濾發(fā)生在PWM set 點附近的 EEV4 事件,Timer compare 3 event 用來限制 PWM 的最大占空比,當(dāng) PWM周期內(nèi)沒有 EEV4 發(fā)生或是發(fā)生的時間點晚于 compare 3 事件時,Timer compare 3 event 將觸發(fā)PWM reset。
原因分析
對 PWM 丟失的波形進(jìn)行分析,當(dāng)該情況發(fā)生時,EEV4 發(fā)生的時間點已經(jīng)晚于 CMP3 事件,正常波形的占空比也與設(shè)定的最大允許占空比一致。丟波情形節(jié)點:在 EEV4 事件發(fā)生的時間點靠近 TA1 或 TB1 波形的 set 點處才會出現(xiàn)。
解決方法
基于以上的分析與實驗,我們需要避免 set 事件與 blanking 區(qū)間的起點在同一個點,所以只要將 set 事件放到 blanking 區(qū)間的內(nèi)部就可以了,最簡單的方式就是 TA1 與 TB1 的 set 事件不再使用 Master timer period/ compare 1 event,而采用 Timer compare 4 event(該比較器在客戶原本配置中沒有被使用),compare 4 的值遵循“3 clock”原則,在客戶的實際配置中大于 0x32 即可,其他配置保持不變。
小結(jié)
對客戶的“丟波”問題進(jìn)行了詳細(xì)的分析并給出了解決方案,客戶在使用該方案后,沒有再出現(xiàn)“丟波”現(xiàn)象。在使用外部事件與消隱功能時需要注意:
- 多個事件同時出現(xiàn)的處理過程中,是以事件的實際生效點為準(zhǔn),而非發(fā)生點;
- 消隱功能在 blanking 區(qū)間的起始點無效,且消隱對象為實際生效點在區(qū)間內(nèi)的事件。