看門狗定時器(Watchdog Timer,WDT)是嵌入式系統中至關重要的組件,用于監控和維護系統的穩定性。主要是用來監測單片機運行狀態和解決程序引起的故障的模塊。在由單片機構成的微型計算機系統中,由于單片機的工作常常會受到來自外界電磁場的干擾,造成程序的跑飛,而陷入死循環,程序的正常運行被打斷,由單片機控制的系統無法繼續工作,會造成整個系統的陷入停滯狀態,發生不可預料的后果,所以出于對單片機運行狀態進行實時監測的考慮,便產生了一種專門用于監測單片機程序運行狀態的芯片,俗稱“看門狗”(watchdog)。根據功能不同,通常分為獨立看門狗和窗口看門狗。因為獨立看門狗受工作場合因素的影響會多一點,僅適用于一些對時間精度要求較低的場合;窗口看門狗適用于對時間精度高的場合。
一、獨立看門狗
獨立看門狗本質上是一個定時器,這個定時器有一個輸出端,可以輸出復位信號。該定時器是一個 12 位的遞減計數器,當計數器的值減到 0 的時候,就會產生一個復位信號。如果在計數沒減到 0 之前,重置計數器的值的話,那么就不會產生復位信號,這個動作我們稱為喂狗。看門狗功能由 VDD 電壓域供電,在停止模式和待機模式下仍然可以工作。
從 IWDG 框圖整體認知可得以下結論:
時鐘源:IWDG 的時鐘源通常來自一個低速內部振蕩器(LSI),獨立于主系統時鐘,確保在主系統時鐘故障時仍能正常運行。
分頻器:IWDG 使用分頻器來調整計時器的頻率。通過配置分頻器,可以改變 IWDG 的計時周期,從而靈活控制超時時間。
計數器:計數器是 IWDG 的核心部分,它會根據配置的分頻值進行遞減計數。系統需要定期重置計數器(即“喂狗”),以防止計數器達到零觸發復位。
復位控制邏輯:當計數器達到零時,復位控制邏輯會生成一個復位信號,觸發系統復位。
控制寄存器:IWDG 包含一組控制寄存器,用于配置分頻值、計數器初始值以及控制 IWDG 的啟停狀態。
- 看門狗啟動邏輯:該邏輯用于啟用和禁用 IWDG。在一些系統中,IWDG 的啟動邏輯可能是一次性的,即一旦啟動便無法關閉,以增強系統的安全性。
IWDG 的工作流程可以概括為以下幾個步驟:
時鐘源供電:IWDG 通過低速內部振蕩器(LSI)提供的時鐘信號進行計時,確保即使主系統時鐘發生故障,IWDG 仍然可以正常運行。
配置分頻器:通過設置控制寄存器中的分頻器值,調整 IWDG 的計時頻率和超時時間。常見的分頻值范圍從 4 到 256 倍,以適應不同的應用需求。
初始化計數器:將計數器初始化為一個預設值,開始計時。計數器會根據配置的分頻值逐漸遞減。
系統定期“喂狗”:在系統正常運行過程中,主程序或定時任務需要定期重置計數器,以防止計數器達到零。如果計數器未在設定時間內重置,IWDG 將認為系統出現了故障。
觸發復位:當計數器遞減至零時,復位控制邏輯生成復位信號,觸發系統復位。系統復位后,重新初始化 IWDG,并進入正常工作狀態。
二、 窗口看門狗
窗口看門狗(Window Watchdog,WWDG)是一種高級看門狗定時器,主要用于檢測系統在指定時間窗口內的運行情況。相比于傳統的看門狗定時器,窗口看門狗通過限制系統“喂狗”的時間窗口,能夠更精準地監控系統的運行狀態,避免系統過早或過晚重置看門狗。本文將通過框圖介紹窗口看門狗的整體結構和功能。
對于一般的看門狗,程序可以在它產生復位前的任意時刻刷新看門狗,但這有一個隱患,有可能程序跑亂了又跑回到正常的地方,或跑亂的程序正好執行了刷新看門狗操作,這樣的情況下一般的看門狗就檢測不出來了,如果使用窗口看門狗,程序員可以根據程序正常執行的時間設置刷新看門狗的一個時間窗口,保證不會提前刷新看門狗也不會滯后刷新看門狗,這樣可以檢測出程序沒有按照正常的路徑運行非正常地跳過了某些程序段的情況。
窗口看門狗中有一個7位的遞減計數器T[6:0],它會在出現下述2種情況之一時產生看門狗復位:
當喂狗的時候如果計數器的值大于某一設定數值W[6:0]時,此設定數值在WWDG——CFR寄存器定義。(上窗口)
當計數器的數值從0x40見到0x3F時,【T6位跳變到0】。(下窗口)
如果啟動了看門狗并且允許中斷,當遞減計數器等于0x40時,產生早期喚醒中斷(EWI),它可以用于喂狗以避免WWDG復位。
三、總結
窗口看門狗作為一種先進的時間監控機制,能夠有效提升系統的實時性和安全性。通過合理配置和使用窗口看門狗,開發者可以確保系統在復雜環境中穩定運行,防止系統因時間偏差或異常操作而失控。未來,隨著嵌入式系統技術的不斷發展,窗口看門狗將在系統安全和穩定性保障方面繼續發揮重要作用。
-
嵌入式
+關注
關注
5118文章
19383瀏覽量
312063 -
監測
+關注
關注
2文章
3784瀏覽量
45141 -
看門狗定時器
+關注
關注
0文章
61瀏覽量
16351
發布評論請先 登錄
相關推薦
AT32單片機看門狗簡介
STM32中的獨立看門狗和窗口看門狗是什么

基于Keil C51的軟件看門狗系統設計
stm32看門狗時間計算 獨立看門狗和窗口看門狗的特性是什么
STM32看門狗配置(獨立看門狗IWDG和窗口看門狗WWDG)

STM32中的獨立看門狗和窗口看門狗
STM32中的獨立看門狗和窗口看門狗

安利給工程師!看門狗相關知識

評論