SemiDrive E3 MCAL 開發系列(3)– Wdg 模塊的使用

一、  概述

本文將會介紹 SemiDrive E3 MCAL Wdg 模塊的基本配置,並且會結合實際操作的介紹,幫助新手快速了解並掌握這個模塊的使用,文中的 MCAL 是基於 PTG3.0 的版本,開發板是官方的 E3640 網關板。

二、  Wdg 模塊的主要配置

Wdg 模塊的配置主要有兩大部分,一個是通用配置,另一個是針對每個 Wdg 實例的配置,我們先看通用配置,具體配置如圖 2.1 所示。


                                                                    圖 2.1 Wdg 模塊通用配置

關於以上配置選項的說明如下:

  • WdgDevErrorDetect:勾選決定是否使能 Wdg 模塊的 Dev 錯誤檢測功能
  • WdgDisableAllowed:勾選決定是否允許關閉看門狗功能
  • WdgInitialTimeout:配置看門狗的初始超時時間,單位為秒,最大可以配置為 65.535 秒
  • WdgMaxTimeout:配置看門狗的最大超時時間,單位為秒,最大可以配置為 65.535 秒,Det 檢查時會用到。
  • WdgRunArea,該功能目前不支持,不需配置。

接著針對每個 Wdg 實例進行配置,首先添加 Wdg 實際,操作如圖 2.2 所示。

                                                                              圖 2.2 添加 Wdg 實例

接著如圖 2.3 所示,進入 Wdg 具體實例的配置界面。

                                                              圖 2.3 進入 Wdg 實例配置界面

如圖 2.4 和圖 2.5 所示為 Wdg 實例的配置界面,

                                                                     圖 2.4 Wdg 模塊實例配置一


                                                                                圖 2.5 Wdg 模塊實例配置二

具體每個配置項的作用如下:

  • WdgChannelId:這個是自增的 ID,用戶無需修改,改了會報錯
  • WdgDefaultMode:該 Wdg 模塊調用初始化接口後的默認工作模式,總共有三種可以選擇,WDGIF_FAST_MODE 和 WDGIF_SLOW_MODE 這兩種模式本質上沒有區別,對應兩套配置,這兩套配置的參數都是獨立的,具體如圖 2.5 所示。看門狗初始化後超時時間參數還是 WdgInitialTimeout 配置的時間,如果需要使用 Fast/Slow 模式下的時間參數,可以調用 Wdg_140_Instance(x)_Wdg_SetMode() 或者 Wdg_140_Instance(x)_SetTriggerCondition()。 除此之外還有 WDGIF_OFF_MODE,該模式會把超時值設置為 0,而 Wdg 是從 1 開始計數的,因此 0 永遠不能達到,故不會發生超時。
  • WdgInstanceIndex:選擇使用哪個看門狗
  • WdgTimeoutNotification:看門狗的中斷回調函數
  • WdgExternalSignalApi:可以配置一個 Gpio,超時後電平從高拉到低
  • WdgClockFrequency:Wdg 的時鐘,為 24MHz,不可修改
  • WdgTimeoutPreiod:Fast/Slow 模式下的超時時間,單位為 ms。
  • WdgTimeoutBehavior:Wdg 模塊超時後的行為,可以選擇復位、中斷、或者兩者都執行。
  • WdgTiggerCondition:可以配置為 NO_CONDITION_MODE 或者 WINDOW_BASED_MODE,前者為普通模式,後者為窗口模式。
  • WdgRefleshTime:用來配置窗口模式的時間,超過這個值才可以進行餵狗,單位為 ms,最大可以配置為 65535。

三、  實際操作

下面我們基於 MCAL 3.0 的例程來進行 Wdg 模塊的驗證,基於我們上面的 Wdg 模塊配置,我們配置 Wdg4 的超時時間為 1200 ms,觸發動作為中斷,我們在例程中對 Wdg4 進行初始化並且設置為 Fast 模式,然後不進行餵狗,這樣的話會每 1.2 s 進入一次中斷函數,我們在中斷回調函數中進行列印,具體測試代碼如圖 3.1 所示。



                                                                            圖 3.1 看門狗的測試代碼

接著進行實際操作,將代碼燒錄到板子後啟動運行,在串口終端中輸入命令“runcase 1500”,此時會運行 sint32_Wdg4_irq_test1 這個函數,可以看到串口會每隔 1.2 s 列印一次 WDT4_IRQ,如圖 3.2 所示。

                                                                                   圖 3.2 串口列印

四、  使用注意事項

E3 的 Wdg 模塊在使用上有以下注意事項:

  • E3 系列 MCU 最多支持 7 個 WatchDog,其中 WatchDog1~6 支持中斷和重啟,WatchDog8 只支持中斷。
  • 當觸發重啟操作時,除了 RTC 域以外其他域全部重新上電。
  • 當 WdgTimeoutBehavior 模式選擇為 Both 時,在系統重啟前會先觸發中斷,中斷和重啟之間的間隔是固定的,大約 7 ms。
  • 每個看門狗只允許在一個核中運行,禁止調用其他核的看門狗。
  • 在窗口模式下,如果沒有在窗口內餵狗會失敗,並且沒有提示信息。
  • 如果某路看門狗未配置,禁止調用這路看門狗的任何接口
  • Wdg 的時鐘取決於 FS_24M 的配置,如果配置為 RC,看門狗時鐘為 RC 24M,如果配置為 FS_24M,則看門狗時鐘為外部晶振 24M。

五、  參考資料

1.《Semidrive_Wdg_User_Manual.pdf》,2022.05

2.《SemiDrive_E3_MCAL_User_Guide_Rev03.00.pdf》,2023.08

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

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

評論