詳解 eflexPWM 在 Fault 觸發時的中斷及硬體保護行為

不論在數位電源或是馬達控制,只要是利用 MCU 控制功率電路時,都會需要實現一些保護功能。為了能夠即時的關閉功率開關源件的能量傳輸,保護電路不受損壞,數位電源與馬達控制的 MCU 上通常會有專用的 PWM 功能模塊,可以透過硬體訊號直接關閉或是改變 PWM 輸出。
 
在 NXP 的 DSC 系列上作為控制使用的 eflexPWM 就有專用的 Fault 功能模塊來實現保護功能。eflexPWM 的 Fault 模塊功能多且設計複雜,若是不熟悉 Fault 模塊的運作情形,很容易在設計時使用錯誤的功能,導致 PWM 無法使用或保護沒辦法被正確觸發,又或是保護或者保護解除時出現非預期的 PWM 波形。
 
在本文會詳細介紹 eflexPWM 的 Fault 模塊的運作方式,好更加瞭解如何透過這些功能達成保護功能的要求。
 
依據使用者使用 eflexPWM 的 Fault 功能時所需的知識,會依序講解以下內容 :
  1. Fault 輸入訊號模塊的運作方式
  2. Fault 的觸發與解除保護
  3. Fault 中斷的使用
  4. Fault 功能總結
Fault 輸入訊號模塊的運作方式
 
eflexPWM 的保護功能是由 Fault 通道的輸入訊號觸發,輸入訊號通常是內部的 CMP ( 比較器 )、QTimer ( 內部 Timer )、EVTG/AOI (內部邏輯模塊) ,外部訊號則是經由 Pin 輸入的外部比較器訊號或其他的控制訊號。
 
每個 Fault 模塊有兩組 Fault 訊號輸入模塊,每個模塊有四個輸入,使用者可以透過暫存器 DISMAPx 控制是否忽略該通道的 Fault 輸入訊號。每個子模塊的三個 PWM 輸出 PWMA、PWMB、PWMX 都可以透過 DISMAP 暫存器獨立進行設定。
 
下圖是 DISMAP0 的暫存器內容,DISMAP0 是第一組 Fault 訊號輸入模塊,其中的 DIS0A 對應子模塊的 PWMA,DIS0B 對應 PWMB、DIS0X 對應 PWMX,每個 bit 對應一個通道是否被使用於關閉該 PWM 輸出。
 


 
Fault 輸入訊號模塊除了整合四個輸入訊號外,還帶有 Filter 濾波以及 Fault 狀態 Latch 功能,一個 Fault 訊號輸入模塊的邏輯電路如下圖 :


Fault 輸入訊號可以透過 Fault Control Register FCTRL 來設定為 High Active 或是 Low Active,Fault 輸入訊號是以邊緣觸發的 Rising edge ( Low Active 時為 Falling edge ) 來觸發 Fault 中斷旗標 FFLAG,該旗標用來觸發 Fault 中斷。Fault 輸入訊號的 Falling edge ( Low Active 時為 Rising edge ) 以及 FFLAG 的清除則被用於恢復 PWM 輸出。FFPIN bit 是用來表示該通道的輸入是否為 Active,會受 Filter 延遲影響。





Fault 輸入訊號帶有 Filter 功能,Filter 只對 FFLAG 的觸發有效,不論 Filter 濾波後是否判定為觸發,只要 Fault input 存在的期間,PWM 皆會被關閉 ( 見下圖標示 1 & 2 )。Fault Status Register 當中的 FFPIN 用於指示目前的 Fault input 訊號在 Filter 後的狀態。Fault 解除的情況 Filter 不會動作 ( 見下圖標示 4 & 5 )。
 

Fault 的觸發與解除保護
 
Fault 模組的恢復分為自動模式與手動恢復模式,使用者可以根據需求,設定為在 Fault input 解除 Active 狀態後自動解除 Fault 狀態,或是以程式手動解除 Fault 狀態。Fault 狀態解除後,Fault 模組會根據設置在固定的位置檢查是否可以恢復 PWM 輸出。
 
在 PWM 的一個週期中,有兩個固定位置可以設置 Fault 模組是否檢查 Fault 狀態並依據檢查結果恢復 PWM 輸出。這兩個位置對應到 PWM Counter 的數位比較暫存器 VAL0 與 VAL1,其中,VAL1  同時作為 PWM Counter Reload 的位置,也就是一個周期結束的時間點,VAL0 則可以設置於週期中的任意位置。這兩個位置的恢復分別透過暫存器 FSTS 中的 FHALF 與 FFULL 來啟用。
 
 
設置於 VAL0 的恢復點被稱為 Half Cycle,當 PWM Counter 計數至 VAL0 中的數值時,Fault 模組會檢查 Fault 解除條件,判斷是否能夠恢復,VAL0 可以被設置在 PWM 週期的任意位置,也就是使用者可以根據需求指定 PWM 在週期中的哪個位置恢復。
 
 
設置於 VAL1 的恢復點被稱為 Full Cycle,位於一個 PWM 週期的結束位置,也就是設置為 Full Cycle 的時候,每個周期結束的時候會檢查下個週期 PWM 是否可以恢復。
 

 
當使用者只需要 Fault 條件成立時 PWM 關閉,恢復後隨即恢復工作的簡單保護功能時,就可以將 Fault 模組設置為自動恢復。設置為自動恢復時,Fault 模組不需要以程式介入做任何處置即可自行恢復被關閉的 PWM 輸出,可以節省中斷的使用與程式資源,並且做到快速的保護及恢復工作。定點 PWM 恢復的功能可以提供安全的 PWM 工作波形,避免恢復位置不固定造成非預期的 PWM 波形產生的損壞。
 
下圖是一個設置為自動於 Full Cycle 位置恢復 PWM 輸出的範例,標示 1 為中斷觸發的位置,標示 2 為 PWM 恢復的位置。圖中的訊號說明如下 :
PWM Counter : PWM 的計數器。
Full Cycle : PWM Counter 跑至 VAL1 暫存器內數值的時間點 ( 週期結束點 )。
Falf Cycle : PWM Counter 跑至 VAL0 暫存器內數值的時間點 ( VAL0 可設置在週期內任意位置 )。
Fault input : 由 Fault 通道進來的輸入訊號。
PWM output : PWM 是否為可輸出狀態。
FFPIN : 用來指示 Fault input 經由 high/low active 選擇以及 Filter 處理後,訊號是否對 fault 模組有效的檢查用暫存器。
FFLAG : Fault 模組用於中斷觸發的內部訊號。

 
當使用者在保護發生時需要額外處理,比如需要記錄錯誤信息、延遲一段時間後才重啟、或是需要額外檢查其他訊號時,使用者可以選擇手動恢復功能,透過清除 Fault 中斷旗標 FFLAG 來使 PWM 恢復輸出。手動恢復的 PWM 依據是否開啟 Safe mode,PWM 恢復的時間點有所不同。
 
未開啟 Safe mode 的情形下,在中斷旗標清除後,會依旗標的清除位置與 Fault input 訊號的恢復位置有不同的 PWM 恢復方式。如果 Fault input 恢復的位置在手動清除 FFLAG 之前,則 PWM 會於設定好的 Half/Full cycle 恢復點恢復。如果是在手動清除 FFLAG 後 Fault input 才恢復,則 PWM 會在 Fault input 恢復後立即開啟。
可以透過檢查 Fault input 指示用的 FFPIN 位元來確定清除中斷旗標當下 Fault input 的狀態。

 
開啟 Safe mode 的情況下,恢復 PWM 輸出的時間點是清除中斷旗標及 Fault input 恢復,兩個條件都達成後的下一個固定恢復位置 ( 視設選擇 Half cycle 與 Full cycle 恢復 )。


 
Fault 中斷使用
 
Fault 中斷只與 Fault input 輸入訊號有關,與 PWM 週期無關,因為中斷與 FFLAG 訊號連動,因此會受 Filter 延遲影響。不論是否開啟 Safe mode 功能,中斷會在 FFLAG 的上升緣被觸發一次,若要再次被觸發需要清除 FFLAG。
 
不論 eflexPMW 是否被啟用,Fault 保護電路一直都是工作狀態,有可能在配置 eflexPWM 設定以前 FFLAG 就已經被觸發。因此在設置完 eflexPWM 後,不應直接開啟 CPU 中斷,應該先清除 FFLAG 後再開啟。
 
在使用 Fault 中斷時要考慮中斷被輸入訊號觸發的頻率對於的程式資源的占用,避免在保護期間對其他執行中的程式造成影響。
 
Fault 功能總結
 
這邊針對上面的描述歸納幾個重點及需要關注的地方
  • PWM 的輸出只要在 Fault input 為 active 的狀態下都會被關閉。
  • PWM 的恢復有兩種情況,一種是在設定好的 Half/Full Cycle 位置恢復,另一種是在 Fault input 輸入的故障訊號解除後立即恢復。
  • 有兩個情況會導致 PWM 在故障訊號解除後立即恢復。一個是使用手動清除模式,未開啟 Safe mode,並且 Fault active 狀態維持的時候就把中斷旗標清除的情況;另一個是使用手動模式並啟用 Filter,Fault input 訊號沒有持續至 Filter 觸發的長度時會發生。這兩個情況下,PWM 會在 Fault input 條件消失後立即開啟。
  • 除了剛才提到的情況外,PWM 都會在設置好的 Half/Full cycle 位置恢復。
  • Fault input 可以設置 Filter,即使在 Filter 延遲期間,只要有 Fault input 訊號進來 PWM 輸出還是會關閉,但是否完整關閉到下一個恢復時間取決於 Fault 訊號是否超過 Filter 延遲時間。
  • 若 Fault 訊號的長度比 Filter 延遲短,則中斷不會被觸發。
  • 使用 Fault 中斷的情況下,一定要在配置完 eflexPWM 後清除中斷旗標 FFLAG,然後才能開啟中斷功能。
  • Fault 中斷只和 Fault input 有關,可以被 Filter 功能影響,會在 Filter 延遲後才被觸發。
參考資料
 
MC56F83xxx Reference Manual
eFlexPWM Fault Handling on MC56F84xxx and MC56F82xxx DSCs

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★博文作者未開放評論功能