新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MCU獨立看門狗 vs 窗口看門狗

        MCU獨立看門狗 vs 窗口看門狗

        作者:焉知新能源汽車 時間:2023-03-10 來源:搜狐科技 收藏

        早期的沒有,就容易引起有些產品死機了不能重啟工作。為了避免這個問題,后期的在內部集成了的功能。

        本文引用地址:http://www.104case.com/article/202303/444265.htm

        為了滿足更多使用場景,現在很多都集成了兩個:獨立看門狗與窗口看門狗 。

        拿現在大家熟悉的STM32來說,都集成了獨立看門狗和窗口看門狗,下面就展開來講講這個兩個看門狗以及它們的區別。

        獨立看門狗

        獨立看門狗,顧名思義,就是獨立的一個看門狗,由其專用低速時鐘 (LSI) 驅動,因此,即便在主時鐘發生故障時仍然保持工作狀態。

        IWDG 最適合應用于那些需要看門狗作為一個在主程序之外,能夠完全獨立工作,并且對時間精度要求較低的場合。

        獨立看門狗特性:

        • 自由運行遞減計數器

        • 時鐘由獨立 RC 振蕩器提供(可在待機和停止模式下運行)

        • 當遞減計數器值達到 0x000 時產生復位(如果看門狗已激活)

        窗口看門狗

        窗口看門狗,之所以稱為窗口,是因為其喂狗時間是一個有上下限的范圍內,你可以通過設定相關寄存器,設定其上限時間和下限時間: 喂狗的時間不能過早也不能過晚。

        窗口型看門狗

        窗口看門狗的上窗口就是配置寄存器WWDG->CFR里設定的W[6:0];下窗口是固定的0x40;當窗口看門狗的計數器在上窗口值之外,或是低于下窗口值都會產生復位。

        窗口型看門狗工作原理

        上窗口的值可以只有設定,7位二進制數最大只可以設定為127(0x7F),最小又必須大于下窗口的0x40,所以其取值范圍為64~127(即:0x40~0x7F);配置寄存器WWDG->CFR中為計數器設定時鐘分頻系數,確定這個計數器可以定時的時間范圍,從而確定窗口的時間范圍。

        窗口看門狗的時鐘來自于PCLK1,在時鐘配置中,其頻率為外部時鐘經倍頻器后的二分頻時鐘,即為36MHz,根據手冊可以知道其定時時間計算方法:

        兩者對比

        1.使用條件對比

        2.特點對比

        兩者的區別

        獨立看門狗與窗口看門狗的區別如下:

        獨立看門狗沒有中斷,窗口看門狗有中斷。

        獨立看門狗有硬件軟件之分,窗口看門狗只能軟件控制。

        獨立看門狗只有下限,窗口看門狗有下限和上限。

        獨立看門狗是12位遞減的,窗口看門狗是7位遞減的。

        獨立看門狗是用的內部大約40KHz的RC振蕩器,窗口看門狗是用的系統時鐘APB1ENR

        獨立看門狗沒有中斷功能,只要在計數器減到0(下限)之前,重新裝載計數器的值,就不會產生復位。

        要注意看門狗和外接復位IC同時存在的情況 ,外部電路可能會阻止看門狗復位。

        窗口看門狗有中斷,這個中斷的作用是在計數器達到下限0x40的時候,產生中斷,讓你喂狗;如果你不喂狗,計數器的值變為0x3f的時候,將會產生系統復位;即使是喂狗,也應該在中斷里快速喂狗,要不時間長了計數器減1也會變成0x3f產生復位。

        窗口看門狗還有一個上限值,這個值如果大于計數器的初始值,那么就沒有任何作用了;這個值小于計數器初始值的時候,當計數器的值大于上限值時你對計數器進行裝載,將會產生復位,只有在計數器減到小于上限值時,你才能重新裝載計數器。意思就是說只有計數器的值在上限值和下限值之間你才能裝載計數器,否則就會產生系統復位,當上限值小于下限值,也沒有意義。

        最后,拓展一下基于STM32、FreeRTOS實現硬件看門狗+軟件看門狗監測多任務的思路 。



        關鍵詞: MCU 看門狗

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 广饶县| 鄂州市| 交城县| 迁西县| 拜城县| 温宿县| 济源市| 柳州市| 安徽省| 和静县| 彰化县| 鄯善县| 嵩明县| 县级市| 贵阳市| 隆安县| 驻马店市| 弋阳县| 长岭县| 岫岩| 奉节县| 西平县| 苏尼特右旗| 天津市| 凯里市| 建德市| 亚东县| 全椒县| 渭南市| 丹东市| 元阳县| 通化市| 太保市| 阿城市| 祁阳县| 沙坪坝区| 霍城县| 南昌县| 柳州市| 奉节县| 海口市|