ST STM32G4_HRTIM fault 功能使用注意事項

1. 目的

STM32G474 系列晶片功能強大,提供了高解析的 Timer ( HRTIM, High-resolution timer ),可靈活產生 PWM 用於各種數位電源拓樸控制,或是各種馬達應用控制。

當然電源與馬達相關的應用控制,有時會發生過電壓或過電流的情況,這時候保護的機制就不可少。STM32G474 除了高解析的 HRTIM,內部 HRTIM 也連結了 DAC、Comparator 模組,當遇到過電壓或是過電流的情況時,內部的比較器能即時產生觸發信號,連結 HRTIM來即時的關閉 PWM輸出信號,做到過電壓與過電流保護。

本篇博文會用到 STM32G474內部的 HRTIM ( 高解析 Timer 模組 ) 來輸出 PWM,另外也會用到DAC 與比較器模組模組來與 HRTIM 作連動設定。由於功能複雜,這邊會讓使用者了解怎麼使用 ST 的 CubeMX 來設定這些相關模組與注意事項。

功能說明 :

這邊會設定三個 Channel HRTIM 的PWM ( HRTIM1_CHA1,HRTIM1_CHB1 ) 輸出,再用一支 MCU Pin ( COMP1_INP ) 設定成比較器,輸入外部電壓,當外部電壓頂到內部 DAC設定保護的電壓值時,會即時的關閉 HRTIM 的 PWM 輸出。

編譯軟體工具 :

a. STM32CubeIDE 1.8.0 ( 軟體編譯工具軟體 )

b. STM32CubeMX  6.7.0 (圖形介面設定 & 產生程式軟體)   

硬體工具 :

a. NUCLEO-G474RE ( STM32G474 開發版 )

2. CubeMX設定說明 ( DAC1 )

這邊要設定 STMM32G4內部 DAC 功能。CubeMX 裡面,設定 DAC1,作為比較器的比較電壓。

2.1 OUT1 mode : Connected to external pin and to chip-peripherals

 ( 設定連接外部腳與晶片內部周邊,可觀察 DAC 輸出與連接到內部比較器)

2.2 Mode selected : Normal Mode

2.3 設定完成後,可以看到右邊晶片已設定好腳位 DAC1_OUT1 (PA4),可用示波器量測此 pin 腳觀察 DAC 輸出變化。


3. CubeMX設定說明 ( COMP1 )

這邊要設定 STM32G474 內部比較器功能。CubeMX 裡面,設定比較器 COMP1,當比較器COMP1 有事件發生時 ( 例如 OVP,OCP ),比較結果的信號輸出到 HRTIM 模組。

3.1 勾選 Input [+] ,設定輸入的 DAC 來源為剛剛設定的 DAC1 OUT1

3.2 Trigger Mode : 設定為 Rising Edge Event ( 當外部電壓頂到 DAC 電壓時,輸出上升沿事件 )

3.3 設定完成後,可以看到右邊晶片已設定好腳位 DAC1_OUT1 ( PA4 ),外部輸入電壓由此腳位輸入,這邊會用可變電阻分壓來做輸入電壓的改變。


4. CubeMX設定說明 ( HRTIM1 )

這邊要設定 STM32G474 的 HRTIIM ( High-resolution timer ) PWM輸出功能,在 CubeMX 裡除了設定 PWM輸出,並且設定比較器觸發信號發生時,及時關閉 PWM。

4.1 在HRTIM1 設定 Timer A 的PWM TA1、Timer B TB1 輸出 PWM。


4.2 設定 HRTIM Timer A PWM 輸出參數重點 ( 1 )

Prescaler Ratio : HRTIM Clock Multiplied by 32 ( 設定除頻 170M/32 )

Period : 54400 ( 設定 PWM 頻率 = 100KHz )

Up Down Mode : Timer counter is operating in up-counting mode ( 上數模式 )

Mode : The timer operates in continuous (free-running) mode ( 連續模式 )


4.3 設定 HRTIM Timer A PWM 輸出參數重點 ( 2 )

Preload Enable : 設定Preload enable ( 啟動預載寫入  )

Repetition Update: 設定 Update on repetition enabled ( 啟動更新事件  )


4.4 設定 HRTIM Timer A PWM 輸出參數重點 ( 3 )

Number of Faults to enable : 1 ( 設定一個 fault 訊號 )

 1st Fault Source : Fault 4 enabled ( 設定 fault 4 為來源訊號 )

( 這邊要注意 fault 的來源設定 )

4.5 設定 HRTIM Timer A PWM 輸出參數重點 ( 4 )

設定 Timer A Compare Unit 1,這邊要啟動設定 Timer A 的 compare 的點,整個 Timer 週期 Period 為 54400 ( 100KHz ),compare 1 value 設定 27200,表示 PWM duty 為 50%。


4.6 設定 HRTIM Timer A PWM 輸出參數重點 ( 5 )

Polarity : Output is active HIGH ( 設定 PWM 輸出動作為高準位 )

Set Source Selection : 1 ( 一個set來源 )

1st Set Source : Timer period event forces the out to its active state ( 設定 PWM 當 Timer A 的 period 起始為 high )

Reset Source Selection : 1 ( 一個reset來源 )

1st Reset Source : Timer compare 1 event forces the output to its inactive state ( 設定PWM 當 count 數到 compare 1 時為 Low )

Idle Mode : The output is not affected by the burst mode operation ( 設定當在 Idle mode 的時候不受 burst mode 影響 )

Idle Level : Output at inactive level when in IDLE state ( 設定在 Idle mode 的時候,PWM輸出為 Low 信號 )

Fault Level : Output at inactive level when in FAULT state ( 設定當發生 Fault 的情況時,PWM 輸出為 Low信號 )


4.7 設定 HRTIM Timer A PWM 輸出參數重點 ( 6 )

( 這邊注意 fault 與 Event 的來源 )

External Event 4

Event Configuration : Enable External Event 4 ( 啟動 外部 Event 4 )

Source : External Event Source 2 – COMP1  ( Event 4 來源為 比較器 1 )

Event Polarity : External event is active high ( 事件發生時為 high 信號 )

Event Sensitivity : External event is active on Rising edge ( 比較器信號為上升沿觸發 )

Event Fast Mode : External Event is re-synchronized by the HRTIM logic before acting on output ( 外部信號會在輸出之前重新同步 )


4.8 設定Timer B PWM 輸出

Timer B 的設定內容與 Timer A 一樣。驗證 Fault 發生時,可以關閉 Timer A 與 Timer B。


4.9 完成 CubeMX設定後,點選 GENERATE CODE 產生初始代碼成

-> 點選 Open Project 就可以開啟 CubeIDE 進入程式編輯介面


5. EVM 硬體設定

5.1 MCU Pin 腳規劃如下 ( 範例 )

HRTIM1_CHA1 (PA8) : PWM輸出,Timer A 的 Ch1

HRTIM1_CHB1 (PA10) : PWM輸出,Timer B 的 Ch1

COMP1_INP (PA1) : 外部電壓輸入,這邊用可變電阻調整外部電壓 (0~3V)

DAC1_OUT1(PA4) : DAC 信號輸出,可以觀察設定輸出DAC 電壓,同時輸出到內部比較器1


5.2 開發板 NUCLEO-G474RE 訊號接線圖

6. 編輯程式

這邊要注意,在 CubeMX 設定好的 HRTIM、DAC、Comparator模組,但是這些模組還尚未啟動,在 CubeIDE 編輯程式下就要用程式代碼來啟動這些模組功能。

6.1 在程式中的 Main() 裡面,在初始化程式後請加上設定 DAC 與啟動DAC 程式


//設定 DAC 輸出電壓參數與資料對其方式:

HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, 1241);

//DAC_ALIGN_12B_R : DAC 的 Data 為 12bit 靠右對其


參數 1241 : DAC 輸出電壓為1V

計算公式如下:

//啟動 DAC1 的 Channel1:

HAL_DAC_Start(&hdac1, DAC_CHANNEL_1);

6.2  在程式中的 Main() 裡面,在初始化程式後請加上啟動 Comparator 1 程式

// 啟動 Comparator 1

HAL_COMP_Start(&hcomp1);


6.3 在程式中的 Main() 裡面,在初始化程式後請加上啟動 HRTIM1 & Output 程式

//啟動 HRTIM1 的 TimerA & TimerB

HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_A);

HAL_HRTIM_WaveformCountStart(&hhrtim1, HRTIM_TIMERID_TIMER_B);

//啟動 TimerA 的 TA1 & TimerB 的 TB1 輸出

HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1 + HRTIM_OUTPUT_TB1 );


7. 驗證 HRTIM Fault 功能

完成硬體接線與程式後,燒錄程式到開發板的主晶片 STM32G474 驗證 HRTIM 功能,驗證結果如下。

7.1 未發生 Fault 時,HRTIM 的 PWM 皆正常輸出。

Ch1 : TimerA 的 TA1 輸出 PWM

Ch2 : TimerB 的 TB1 輸出 PWM

Ch3 : 可變電阻輸入電壓進入 MCU 比較器腳位

Ch4 : DAC 輸出電壓值為 1V


7.2 透過外部可變電阻,把輸入電壓調整超過 1V,當超過 1V 時,內部比較器會觸發 Fault,關閉 PWM 訊號輸出。在電源或馬達的應用上可以做到,如下圖。

Ch1 : TimerA 的 TA1 輸出 PWM ( PWM 已停止動作 )

Ch2 : TimerB 的 TB1 輸出 PWM ( PWM 已停止動作 )

Ch3 : 可變電阻輸入電壓進入 MCU 比較器腳位,輸入電壓超過 1V

Ch4 : DAC 輸出電壓值為 1V


7.3 當發生 Fault 關閉 HRTIM PWM,輸入電壓回覆到正常狀態( 1V 以下 )時,如果想要回復 HRTIM PWM 啟動狀態,就可以在程式中在下啟動 HRTIM PWM 程式指令如下:

// 重新啟動 HRTIM TimerA TA1 & HRTIM TimerB TB1 輸出

HAL_HRTIM_WaveformOutputStart(&hhrtim1, HRTIM_OUTPUT_TA1 + HRTIM_OUTPUT_TB1 )。

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

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論

辰亦

辰亦

4 個月前
您好我想问一下FAULT是怎么配置的?comp是怎么接入fault的
Neil_M

Neil_M

5 個月前
您好我想问一下FAULT是怎么配置的?
ybbbbb

ybbbbb

2023年8月26日
您好我想问一下FAULT是怎么配置的?