看門狗大家應該再熟悉不過了,一旦忘記喂狗就會導致單片機復位,而在大部分stm32中都存在兩種類型的看門狗,Independent watchdog (IWDG)獨立看門狗和Window watchdog (WWDG)窗口看門狗。
獨立看門狗也就是常規的一種看門狗,需要定時reload計數值進入downcounter下降計數器中,否則當下降計數到0便會產生IWDG_reset信號,導致芯片復位。
通過下方原理框圖可知,其有獨立LSI時鐘驅動,不會受到主時鐘的影響,相對比較獨立。
窗口看門狗與獨立看門狗有所不同,該看門狗必須在所設置的窗口重載下降計數器才不會導致RESET,過早或者過晚都會導致復位。
然而有時候系統異常觸發了窗口看門狗,為了便于分析想記錄適當的日志,或者應對一些不能直接復位的應用場合,進行一些卸載操作,當窗口看門狗當下降計數器達到0x40后,生成一個EWI中斷,并執行相應的中斷服務函數,處理完中斷以后,才復位系統。
那到底什么是模擬看門狗呢?
雖然名字叫看門狗,不過模擬看門狗存在的目的并不是使得芯片復位,而是對外設信號起到一個監控作用。
如下圖所示,模擬看門狗在ADC外設里面:
從外設結構框圖可以了解到,該看門狗主要是由一個12bit的上限值(High threshold)和一個12bit的下限值(Low threshold)構成,比較以后輸出一個AWD的ADC中斷信號,從而觸發相應中斷。
在stm32庫中通過填充ADC_AnalogWDGConfTypeDef,并進行配置即可啟動該功能。
模擬看門狗到底有什么用處呢?
做過控制或者數據采集的朋友都會進行信號的過低或者超高的異常處理,對于一些快速性的處理和保護,常規的處理辦法就是直接在采集中斷中用采集結構比較所設置的最大值或者最小值。
如果僅僅只是一個采樣值的判斷倒無傷大雅,當多個ADC通道都需要進行相同判斷和處理,軟件上就有點累贅耗時了。
硬件功底不錯的伙計,可能會想到通過外部比較器+邏輯運算最終通過一個引腳接到MCU的外部中斷,一旦有采樣信號超范圍,便會觸發外部中斷執行中斷服務函數處理。
然而這種需要增加額外硬件的方式對于有模擬看門狗MCU等就沒有必要了,因為每個ADC中的模擬看門狗都可以通過配置相應寄存器選擇一系列通道進入模擬看門狗的上下限監控中。
這樣看來模擬看門狗有點像窗口看門狗,只是其最終不會導致MCU復位,而是觸發中斷交給用戶進行繼續處理。
至于中斷中怎么處理就非常靈活了,比如通過判斷多次觸發模擬看門狗中斷以后才進行保護處理等,以防止一些噪聲導致的誤觸發。
來源:公眾號最后一個bug
審核編輯:湯梓紅
-
單片機
+關注
關注
6067文章
44961瀏覽量
648801 -
mcu
+關注
關注
146文章
17917瀏覽量
362660 -
看門狗
+關注
關注
10文章
581瀏覽量
71671 -
時鐘
+關注
關注
11文章
1891瀏覽量
133017 -
獨立看門狗
+關注
關注
0文章
25瀏覽量
4105
原文標題:聽說過"模擬看門狗"嗎?
文章出處:【微信號:嵌入式情報局,微信公眾號:嵌入式情報局】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
STM32中的獨立看門狗和窗口看門狗是什么

stm32看門狗時間計算 獨立看門狗和窗口看門狗的特性是什么
STM32看門狗配置(獨立看門狗IWDG和窗口看門狗WWDG)

STM32 ADC模擬看門狗及其應用

MCU獨立看門狗與窗口看門狗的區別

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

什么是看門狗,工業路由器看門狗技術的功能優勢

評論