0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用AT32 MCU WDT和WWDT?

jf_pJlTbmA9 ? 來源:AT32 MCU 雅特力科技 ? 作者:AT32 MCU 雅特力科技 ? 2023-11-10 18:26 ? 次閱讀

看門狗簡介

看門狗通常用來提高系統(tǒng)的穩(wěn)定性。當因為一些特殊的情況導致程序跑飛,或者運行邏輯錯誤,而沒 有及時喂狗時,看門狗會將MCU重新復位,以達到自動從異常中恢復的效果。建議用戶在所有應用中都使用看門狗,以提高系統(tǒng)穩(wěn)定性。

AT32單片機有兩個看門狗:看門狗(WDT)和窗口看門狗(WWDT):

看門狗(WDT):一個12位的遞減計數(shù)器,當計數(shù)器從某個值遞減到0的時候,系統(tǒng)會產(chǎn)生復位,如果在計數(shù)器遞減到0之前刷新了遞減計數(shù)器,那么就不會產(chǎn)生復位。

窗口看門狗(WWDT):一個7位的遞減計數(shù)器,當計數(shù)器從某個值遞減到0x3F的時候,系統(tǒng)會產(chǎn)生復位,如果在規(guī)定時間刷新了計數(shù)器(窗口時間內(nèi)),那么就不會產(chǎn)生復位。

各個型號差異

各型號的窗口看門狗(WWDT)相同,程序兼容。

各型號的看門狗(WDT)基本功能相同,只是各個型號之間,可能去掉了更高級的窗口功能或者低功耗下可選的停止運行功能,其余功能相同并且程序兼容。

wKgaomUD4JyAei4_AACviDyEaBE441.png 表1. 各型號看門狗(WDT)差異

√:表示支持該功能,且功能相同。
×:表示不支持該功能。

使用場景對比

看門狗(WDT)和窗口看門狗(WWDT)作為兩種不同類型的看狗,有著不用的適用環(huán)境。

wKgaomUD4J6AVLrPAAHV-g4pnwM343.png 圖1. WDT與WWDT使用場景對比

特點對比

wKgZomUD4KCAFvtoAANIILQwPPE324.png 圖2. WDT與WWDT特點對比

看門狗WDT

寄存器訪問

狀態(tài)寄存器

看門狗功能位于兩個不同的區(qū)域,寄存器部分位于1.2V電壓域,計數(shù)邏輯部分位于VDD電壓域,所以看門狗能夠在SLEEP、DEEPSLEEP、STANDBY模式下運行。

對看門狗寄存器的寫操作位于1.2V電壓域,所以當寫了寄存器之后,還需要將寄存器值同步到VDD電壓域。每一個寄存器都有一個同步標志指示同步操作是否完成。每一次同步時間最多需要4個LICK時鐘,大約125us。當寫了寄存器之后對應的同步標志自動置1,當同步完成了之后標志自動清0,在同步標志清零之前,不允許再寫此寄存器。

wKgaomUD4KGAeUUvAAE1_jm36kE511.png 圖3. 看門狗框圖

RLDF:當該位為1時,表示重裝載值的同步正在進行中;當為0時,表示該過程執(zhí)行完成。

DIVF:當該位為1時,表示預分頻器值的同步正在進行中;當為0時,表示該過程執(zhí)行完成。

WINF:當該位為1時,表示窗口值的同步正在進行中;當為0時,表示該過程執(zhí)行完成。

標志獲取函數(shù):

wKgZomUD4KKAHW6eAAAanWOtqfA098.png

寄存器寫保護

看門狗寄存器受到寫保護,在寫寄存器前需要先解鎖寫保護,寫命令寄存器CMD=0x5555解鎖寫保護。當寫一個其他值,將重新開啟讀保護。受讀保護的寄存器如下表所示:

wKgZomUD4KOAGWt1AAC_qcxmOoQ567.png 表2. 看門狗寄存器

寄存器解鎖寫保護函數(shù):

wKgaomUD4KWAR7OXAAAgsR7MySM500.png

時鐘結構

wKgZomUD4KaAUrICAAA_IrM_vdA274.png 圖4. 看門狗時鐘

看門狗計數(shù)器由LICK時鐘驅(qū)動,經(jīng)過8位的預分頻器得到遞減計數(shù)器時鐘。LICK是內(nèi)部RC時鐘,其典型值為40kHz,范圍為30kHz~60kHz之間(詳情請見對應型號的數(shù)據(jù)手冊)。所以超時時間也是在一定區(qū)間內(nèi),使用時應注意在超時時間配置上應該留有余量,如果需要獲得較為精確的看門狗超時時間,可以先通過定時器測量出LICK頻率,然后再根據(jù)實際的LICK頻率計算超時時間。

通過寄存器DIV[2:0]配置配置不同的預分頻值,可配置預分頻值為4、8、16、32、64、128、256。

wKgaomUD4KeACuhpAAAu2h-DkIU225.png

分頻設置函數(shù):

wKgaomUD4KmAVnVqAAAa4gWDis0396.png

計數(shù)器

看門狗的計數(shù)器是一個12位的遞減計數(shù)器,最大值為0xFFF。當開啟看門狗后,計數(shù)值將從設定的值開始遞減,當遞減到0時,產(chǎn)生系統(tǒng)復位。

wKgZomUD4KqAP4ptAABf_wET_Ek766.png 圖5. 看門狗重載

計數(shù)值通過重載寄存器RLD設置,在分頻值確定的情況下,該值的大小決定了看門狗復位的時間長 短,每當往命令寄存器WDT_CMD寫入0xAAAA時,該寄存器的值便會更新到遞減計數(shù)器中(此操作通常稱為喂狗),喂狗的操作需要在計數(shù)器遞減到0之前進行,不然會發(fā)生復位。

看門狗復位時間計算如下:

wKgaomUD4K2ATw8PAABCr3BDXz4878.png
wKgZomUD4K6AB-yJAACA14yFSIQ560.png 表3. 看門狗復位時間(LICK=40kHz)

重載值設置函數(shù):

wKgaomUD4LCAJ6B_AAAcYHw4FZk025.png

重載看門狗計數(shù)器(喂狗)函數(shù):

wKgZomUD4LGAY1_5AAAXHTfjvLY992.png

窗口功能

當WIN[11:0]設置為非默認值(0xFFF)將開啟窗口功能。當在計數(shù)值大于窗口值時重載計數(shù)器值將會產(chǎn)生系統(tǒng)復位,例如將WIN值設置成800時允許重載的窗口時間如下圖所示。

wKgaomUD4LKAHBxIAACelFbPrY4878.png 圖6. 窗口功能

窗口設置函數(shù):

wKgZomUD4LSAYMgKAAAcUVf2ngM589.png

低功耗停止計數(shù)

看門狗能夠在SLEEP、DEEPSLEEP、STANDBY模式下運行,用戶可選擇進入DEEPSLEEP、STANDBY模式后計數(shù)器是否停止計數(shù),可由用戶系統(tǒng)數(shù)據(jù)區(qū)中的nWDT_DEPSLP、nWDT_STDBY位配置。

如果設置了停止計數(shù),當進入了DEEPSLEEP、STANDBY模式后,看門狗計數(shù)器停止遞減,意味著看門狗在這兩種低功耗模式下不會發(fā)生復位,當從這兩種模式喚醒后,計數(shù)器從進入時的值繼續(xù)遞減。

wKgaomUD4LWAbK3nAABvBgiTBHI497.png 圖7. 低功耗停止計數(shù)功能

用戶系統(tǒng)數(shù)據(jù)擦除函數(shù):

wKgZomUD4LaAIKXJAAAdnn6Csis136.png

用戶系統(tǒng)數(shù)據(jù)配置函數(shù):

wKgaomUD4LeAI13tAAAcYqhQxrI231.png

低功耗停止功能使用示例:

wKgZomUD4LmAdy47AACiOJzB7wA667.png

啟動看門狗

看門狗啟動方式分為硬件啟動和軟件啟動,當看門狗啟動了之后不能被關閉,除非發(fā)生復位。

軟件啟動方式

向命令寄存器寫入0xCCCC,啟用看門狗。

看門狗軟件使能函數(shù):

wKgaomUD4LqAPgm2AAAU_rrHZZk393.png

硬件啟動方式

硬件啟動則需通過配置用戶系統(tǒng)數(shù)據(jù)區(qū)的nWDT_ATO_EN位來實現(xiàn),使能硬件看門狗后,看門狗將在上電復位后自動開始運行。

硬件啟動看門狗使用示例:

wKgZomUD4LyAPaLIAACt3WuUbxM056.png

使用方法

看門狗一般用于檢測程序跑飛或者死循環(huán),比如一個正常的程序運行完的時間是10ms,可以設置看門狗超時的時間為20ms,當程序運行完便立即進行喂狗操作,這樣便不會產(chǎn)生復位,超過20ms還未喂狗時,說明產(chǎn)生了故障,此時會復位MCU。

例如:要設置WDT超時時間為20ms,那么可以設置預分頻值為4,計數(shù)值為200

wKgZomUD4L2ADpO9AABzWkPdtdU129.png

配置步驟:

1. 禁止寄存器寫保護

wKgaomUD4L6AaAmwAAAbXyvl_NQ219.png

2. 設置預分頻值為4

wKgaomUD4MCAZilzAAAeQZhkm1A233.png

3. 設置重載值為200

wKgZomUD4MGASkiJAAAawFZutzU419.png

4. 啟用看門狗

wKgZomUD4MKACqbXAAARsjbK0pg892.png

5. 在應用程序中重載計數(shù)器

wKgaomUD4MSAepeqAAAVEHF4YuQ939.png

窗口看門狗WWDT

窗口看門狗(WWDT)主要作用是用來檢測軟件邏輯是否按照預期執(zhí)行,其喂狗時間是一個有上下范圍內(nèi),可以通過相關的寄存器,設定其上限時間和下限時間,喂狗的時間不能過早也不能過晚(當遞減計數(shù)器的值小于0x40,或者當遞減計數(shù)器在窗口外被刷新時產(chǎn)生復位)。

時鐘結構

wKgaomUD4MWAETqeAABQJJ5XmD0278.png 圖8. 窗口看門狗時鐘

窗口看門狗時鐘由APB1時鐘分頻而來,由于APB1_CLK的精確性,因此窗口看門狗時間精度很高。
APB1時鐘先經(jīng)過4096分頻后,再送到預分頻器,最后提供給7位遞減計數(shù)器CNT[6:0]??梢耘渲貌煌念A分頻值來獲得不同的時鐘,通過DIV[1:0]可配置預分頻值取值范圍為1、2、4、8。

wKgZomUD4MaAGGUJAAA8PeQ9h70438.png

分頻設置函數(shù):

wKgaomUD4MeAd1HWAAAbpFPmh4I148.png

計數(shù)器

窗口看門狗的計數(shù)器是一個7位的遞減計數(shù)器,最大值為0x7F,當開啟看門狗后,計數(shù)值將從設定的值開始遞減,當遞減到0x3F時,產(chǎn)生系統(tǒng)復位。

wKgZomUD4MmACLezAABZsajZ0sM963.png

wKgaomUD4MqAG0wAAABt0jYB7CY538.png 表4. 窗口看門狗復位時間(PCLK=72MHz)

計數(shù)值設置函數(shù):

wKgZomUD4MuACUr7AAAaanxNF6g196.png

窗口功能

窗口的值(WIN[6:0])可以自由設定,最大值為(0x7F),最小值必須大于下窗口的0x40,所以取值范圍為64~127(即:0x40~0x7F);只有當遞減計數(shù)器的值小于等于窗口值時,才允許刷新遞減計數(shù)器,否則將會產(chǎn)生復位。

為了便于喂狗,應用程序也可以利用重載計數(shù)器中斷(RLDIEN)進行喂狗。當遞減計數(shù)器到達0x40時,則產(chǎn)生中斷,在相應的中斷服務程序中重新設置計數(shù)器。

wKgZomUD4M2ASQ8YAAB2DE9FA-0783.png 圖9. 窗口功能

如上圖所示當配置窗口值為0x4F時,不允許刷新的窗口為0x7F~0x50,允許刷新的窗口為0x4F~0x40。

重載標志清除函數(shù):

wKgaomUD4M6AUseWAAAYYbpzphk353.png

重載標志獲取函數(shù):

wKgaomUD4M-ASZ4mAAAZ22cwfLU088.png

重載中斷使能函數(shù):

wKgZomUD4NGAG3z4AAAYyLrcPo0381.png

窗口設置函數(shù):

wKgZomUD4NKAX163AAAcRH6kPJU178.png

看門狗使能

設置WWDTEN=1使能窗口看門狗,當窗口看門狗被打開后不能被關閉,直到復位。為了避免使能看門狗后立即發(fā)生復位,在使能看門狗時,應該同時配置看門狗計數(shù)值。

窗口看門狗使能函數(shù):

wKgaomUD4NOAWzKlAAAakqJLM10939.png

使用方法

窗口看門狗一般用于檢測邏輯運行是否正常,比如一個正常的程序執(zhí)行完的時間是10ms,當程序在10ms以前執(zhí)行完說明出現(xiàn)了邏輯錯誤,可以設置看門狗窗口值為9ms,當程序在9ms以前進行喂狗時,說明程序產(chǎn)生了故障,此時會產(chǎn)生一個復位。

例如:當PCLK1=36MHz時,要設置WWDT超時時間為9ms,那么可以設置預分頻值為4,總的分頻為 4x4096=16384。計數(shù)值為127,窗口值為108,此時從計數(shù)值減到窗口值時間約為9.1ms。

wKgaomUD4NWADkshAACWib7QGe0600.png
wKgZomUD4NaALPH1AACbUnDVijs812.png

所以允許喂狗時間為9.1~29.1ms,不允許喂狗時間為0~9.1ms。

配置步驟:

1. 開啟窗口看門狗APB1時鐘

wKgaomUD4NiAeSlyAAAps_qmTnE214.png

2. 設置預分頻值為4,總的分頻為4096x4=16384

wKgZomUD4NmAWYqDAAAl47tCaO8165.png

3. 設置窗口值為108

wKgZomUD4NqAPX3jAAAanU6WcZ4977.png

4. 啟用看門狗

wKgaomUD4NuANr_BAAAVOflaAqw093.png

5. 在應用程序中重載計數(shù)器

wKgZomUD4N2AZfZOAAAXfdElgv0575.png

備注:需要在0x3F<遞減計數(shù)器<=窗口值執(zhí)行

案例 看門狗WDT使用

功能簡介

演示看門狗(WDT)功能使用。

資源準備

1) 硬件環(huán)境:

對應產(chǎn)品型號的AT-START BOARD

2) 軟件環(huán)境

projectat_start_f4xxexampleswdtwdt_reset

注:所有project都是基于keil 5而建立,若用戶需要在其他編譯環(huán)境上使用,請參考AT32xxx_Firmware_Library_V2.x.xprojectat_start_xxxtemplates中各種編譯環(huán)境(例如IAR6/7,keil 4/5)進行簡單修改即可。

軟件設計

1) 配置流程

初始化看門狗

在主程序中喂狗

2) 代碼介紹

main函數(shù)代碼描述

wKgaomUD4OGAD8waAALj8j1aPpo870.png

實驗效果

正常運行時看門狗不會復位,當按下按鍵后,停止喂狗,導致MCU復位。

復位后,如果檢查到是看門狗復位則LED4點亮,否則LED4不亮。

案例 窗口看門狗WWDT使用

功能簡介

演示窗口看門狗(WWDT)功能使用。

資源準備

1) 硬件環(huán)境:

對應產(chǎn)品型號的AT-START BOARD

2) 軟件環(huán)境

projectat_start_f4xxexampleswwdtwwdt_reset

注:所有project都是基于keil 5而建立,若用戶需要在其他編譯環(huán)境上使用,請參考AT32xxx_Firmware_Library_V2.x.xprojectat_start_xxxtemplates中各種編譯環(huán)境(例如IAR6/7,keil 4/5)進行簡單修改即可。

軟件設計

1) 配置流程

初始化窗口看門狗

在主程序中喂狗

2) 代碼介紹

main函數(shù)代碼描述

wKgZomUD4OKAViX-AAKWO-lHRQw135.png

實驗效果

正常運行時窗口看門狗不會復位,當按下按鍵后,停止喂狗,導致MCU復位。

復位后,如果檢查到是窗口看門狗復位則LED4點亮,否則LED4不亮。

來源:AT32 MCU 雅特力科技

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    16667

    瀏覽量

    347772
  • 看門狗
    +關注

    關注

    10

    文章

    554

    瀏覽量

    70572
  • AT32
    +關注

    關注

    1

    文章

    109

    瀏覽量

    2017
收藏 人收藏

    評論

    相關推薦

    AT32看門狗WDT使用方法

    )導致程序跑飛時,復位mcu/* 解鎖看門狗寫保護*/wdt_register_write_enable(TRUE);/* 設置分頻系數(shù)為32*/wdt
    發(fā)表于 08-16 20:56

    AT32 WDT WWDT入門指南

    AT32 WDT WWDT入門指南詳細闡述了如何使用AT32 看門狗(WDT)和窗口看門狗(WWDT
    發(fā)表于 10-24 06:50

    AT32 MCU SDRAM應用說明

    AT32 MCU SDRAM Application Note本文主要講解AT32 SDRAM 控制器的使用。
    發(fā)表于 10-25 06:37

    AT32 MCU CAN入門指南

    AT32 MCU CAN入門指南本文介紹了CAN 標準協(xié)議,AT32 CAN 的使用流程以及基于AT32 的幾個CAN 使用例程。
    發(fā)表于 10-25 06:01

    AT32 MCU USART應用說明

    AT32 MCU USART Application Note介紹了AT32 的USART 功能,并對BSP 例程的軟件設計加以說明,同時演示使用方法并展示實驗效果,供用戶參考。
    發(fā)表于 10-25 08:11

    AT32講堂019 | 如何使用AT32 MCU WDTWWDT

    使用看門狗,以提高系統(tǒng)穩(wěn)定性。AT32單片機有兩個看門狗:看門狗(WDT)和窗口看門狗(WWDT):看門狗(WDT):一個12位的遞減計數(shù)器,當計數(shù)器從某個值遞減到0的時
    的頭像 發(fā)表于 08-05 10:30 ?1770次閱讀
    <b class='flag-5'>AT32</b>講堂019 | 如何使用<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>WDT</b>和<b class='flag-5'>WWDT</b>

    Segger Jscope波形軟件在AT32 MCU的使用

    Segger Jscope波形軟件在AT32 MCU的使用
    的頭像 發(fā)表于 11-10 18:24 ?1737次閱讀
    Segger Jscope波形軟件在<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>的使用

    如何在AT32 MCU上使用FPU功能

    如何在AT32 MCU上使用FPU功能
    的頭像 發(fā)表于 11-01 17:18 ?3865次閱讀
    如何在<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>上使用FPU功能

    關于AT32 MCU溫度傳感器的應用

    關于AT32 MCU溫度傳感器的應用
    的頭像 發(fā)表于 10-27 09:44 ?569次閱讀
    關于<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>溫度傳感器的應用

    AT32 MCU Printf的功能使用方法

    AT32 MCU Printf的功能使用方法
    的頭像 發(fā)表于 10-27 09:27 ?833次閱讀
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> Printf的功能使用方法

    AT32 MCU如何使用USB MSD 進行IAP升級?

    AT32 MCU如何使用USB MSD 進行IAP升級?
    的頭像 發(fā)表于 10-27 09:23 ?950次閱讀
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>如何使用USB MSD 進行IAP升級?

    AT32 MCU DMA通道的靈活配置

    AT32 MCU DMA通道的靈活配置
    的頭像 發(fā)表于 10-26 17:51 ?876次閱讀
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> DMA通道的靈活配置

    AT32 MCU SDIO入門指南

    電子發(fā)燒友網(wǎng)站提供《AT32 MCU SDIO入門指南.pdf》資料免費下載
    發(fā)表于 09-19 16:18 ?2次下載
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> SDIO入門指南

    AT32 WDT WWDT入門指南

    電子發(fā)燒友網(wǎng)站提供《AT32 WDT WWDT入門指南.pdf》資料免費下載
    發(fā)表于 09-19 16:05 ?1次下載
    <b class='flag-5'>AT32</b> <b class='flag-5'>WDT</b> <b class='flag-5'>WWDT</b>入門指南

    AT32 MCU Develop with VSCode

    電子發(fā)燒友網(wǎng)站提供《AT32 MCU Develop with VSCode.pdf》資料免費下載
    發(fā)表于 09-19 15:22 ?2次下載
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> Develop with VSCode