看門(mén)狗的工作原理 看門(mén)狗的類(lèi)型
?看門(mén)狗(Watchdog)是一種用于監(jiān)控系統(tǒng)運(yùn)行狀況的技術(shù),主要功能是在系統(tǒng)出現(xiàn)異常時(shí)進(jìn)行重啟,防止系統(tǒng)崩潰。??12看門(mén)狗的基本功能,看門(mén)狗本質(zhì)上是一個(gè)定時(shí)器電路,它定期檢查系統(tǒng)的運(yùn)行狀態(tài)。如果系統(tǒng)正常運(yùn)行,用戶(hù)需要在特定時(shí)間間隔內(nèi)“喂狗”(重置定時(shí)器),以防止系統(tǒng)重啟。如果系統(tǒng)出現(xiàn)異常,導(dǎo)致“喂狗”操作未能按時(shí)執(zhí)行,看門(mén)狗定時(shí)器將達(dá)到其設(shè)定時(shí)間限制,從而觸發(fā)系統(tǒng)重啟,恢復(fù)系統(tǒng)的正常運(yùn)行。
看門(mén)狗的類(lèi)型
?獨(dú)立看門(mén)狗?:這是一種基本的看門(mén)狗定時(shí)器,通常是一個(gè)遞減計(jì)數(shù)器。當(dāng)計(jì)數(shù)器減到0時(shí),會(huì)產(chǎn)生復(fù)位信號(hào)。用戶(hù)可以在計(jì)數(shù)器減到0之前通過(guò)“喂狗”操作來(lái)重置計(jì)數(shù)器,從而避免系統(tǒng)重啟。
?窗口看門(mén)狗?:這是一種高級(jí)看門(mén)狗定時(shí)器,通過(guò)設(shè)置一個(gè)時(shí)間窗口來(lái)監(jiān)控系統(tǒng)的運(yùn)行狀態(tài)。與獨(dú)立看門(mén)狗不同,窗口看門(mén)狗通過(guò)限制“喂狗”的時(shí)間窗口,可以更精確地檢測(cè)系統(tǒng)的異常運(yùn)行情況,避免系統(tǒng)過(guò)早或過(guò)晚重置。
看門(mén)狗的工作原理
看門(mén)狗主要由寄存器、計(jì)數(shù)器和狗叫模塊構(gòu)成。通過(guò)寄存器對(duì)看門(mén)狗進(jìn)行基本設(shè)置,計(jì)數(shù)器計(jì)算狗叫時(shí)間,狗叫模塊決定看門(mén)狗超時(shí)后發(fā)出的中斷或復(fù)位方式。系統(tǒng)上電后,根據(jù)不同的工作模式可以選擇使能看門(mén)狗的時(shí)機(jī)。如果看門(mén)狗被使能,計(jì)數(shù)器開(kāi)始計(jì)數(shù)。如果在設(shè)定的時(shí)間內(nèi)沒(méi)有及時(shí)喂狗,則會(huì)發(fā)生看門(mén)狗超時(shí),系統(tǒng)將進(jìn)入中斷處理程序或強(qiáng)制復(fù)位。
看門(mén)狗的應(yīng)用場(chǎng)景
看門(mén)狗廣泛應(yīng)用于各種嵌入式系統(tǒng)中,如單片機(jī)、微型計(jì)算機(jī)系統(tǒng)等。它能夠有效防止系統(tǒng)因電磁干擾或其他異常情況導(dǎo)致的死循環(huán)或程序錯(cuò)誤,確保系統(tǒng)的穩(wěn)定性和可靠性。
隨著汽車(chē)電子對(duì)功能安全等級(jí)的要求提高,越來(lái)越多的汽車(chē)電子系統(tǒng)也用上了看門(mén)狗(Watchdog)功能來(lái)提高電源的安全性和可靠性,以滿(mǎn)足功能安全的要求。本文將介紹帶看門(mén)狗電源的分類(lèi)、系統(tǒng)框圖、工作原理以及典型應(yīng)用。
通常,我們將帶有看門(mén)狗的電源分為三類(lèi):
■ 基本型看門(mén)狗電源
■ 窗口型看門(mén)狗電源
■ 問(wèn)答型看門(mén)狗電源
1. 基本型看門(mén)狗電源
1.1系統(tǒng)框圖

圖1:線性穩(wěn)壓器L4995的系統(tǒng)框圖。
以意法半導(dǎo)體(ST)的線性穩(wěn)壓器L4995為例,從其系統(tǒng)框圖(圖1)中可以看到,基本型看門(mén)狗電路基本有以下三種功能引腳:
■ 基本功能引腳
– Vin(電池輸入)
– Vo(穩(wěn)壓器電壓輸出)
– GND
■ 用3個(gè)引腳來(lái)實(shí)現(xiàn)看門(mén)狗的功能(Wi、Vcw、Res)
– Wi(WD PWM輸入)
– Vcw(WD電容器引腳)
– Res(復(fù)位)
■ 保護(hù)功能(沒(méi)有列出所有的保護(hù)功能)
– 負(fù)載電流限流
– 溫度關(guān)斷
1.2 工作原理

圖2:L4995工作原理。
連接的微控制器由看門(mén)狗輸入Wi監(jiān)控。如果脈沖丟失,復(fù)位輸出引腳設(shè)置為低(圖2)。利用外部電容器Ctw,可以在較寬的范圍內(nèi)設(shè)置脈沖序列時(shí)間??撮T(mén)狗電路用恒流Icwd向電容器Ctw放電。如果達(dá)到較低的閾值Vwlth,將看門(mén)狗重置。
每個(gè)Wi正邊沿將電流源從放電切換到充電。當(dāng)達(dá)到較低的閾值時(shí)也會(huì)發(fā)生同樣的情況。當(dāng)電壓達(dá)到上限時(shí),電流從充電切換到放電,其結(jié)果是一個(gè)鋸齒波。Vcw為看門(mén)狗定時(shí)器電容器Ctw處的電壓。
2. 窗口型看門(mén)狗
2.1系統(tǒng)框圖

圖3:低壓差穩(wěn)壓器TLE7273-2系統(tǒng)框圖。
英飛凌(Infineon)的低壓差穩(wěn)壓器TLE7273-2中所內(nèi)置的看門(mén)狗即為窗口型看門(mén)狗,其系統(tǒng)框圖如圖3所示。
2.2 工作原理

圖4:TPS7A63xx-Q1內(nèi)置看門(mén)狗的窗口持續(xù)時(shí)間。
以TI低壓差穩(wěn)壓器TPS7A63xx-Q1為例,如圖4所示,每個(gè)看門(mén)狗窗口由一個(gè)打開(kāi)的窗口和一個(gè)關(guān)閉的窗口組成,每個(gè)窗口的寬度約為看門(mén)狗窗口的50%。但有一個(gè)例外:看門(mén)狗初始化后第一個(gè)打開(kāi)的窗口是看門(mén)狗窗口持續(xù)時(shí)間的8倍。除看門(mén)狗初始化后打開(kāi)的窗口外,所有打開(kāi)的窗口都是看門(mén)狗窗口寬度的一半。初始化時(shí),看門(mén)狗只能在打開(kāi)的窗口中接收服務(wù)(通過(guò)軟件、外部微控制器等)。在關(guān)閉的窗口中維護(hù)的看門(mén)狗,或在打開(kāi)的窗口中不維護(hù)的看門(mén)狗,會(huì)造成看門(mén)狗的報(bào)錯(cuò)。
3. 問(wèn)答型看門(mén)狗
3.1系統(tǒng)框圖
用德州儀器(TI)的TPS65381(用于安全關(guān)鍵型應(yīng)用中的微處理器的多軌電源)的系統(tǒng)框圖(圖5)來(lái)示意帶有問(wèn)答型看門(mén)狗的結(jié)構(gòu)。

圖5:TPS65381系統(tǒng)框圖。
3.2 工作原理
下面用DRV3205-Q1(TI的一款用于汽車(chē)安全應(yīng)用的具有3個(gè)電流感應(yīng)放大器的三相電機(jī)前置驅(qū)動(dòng)器IC)的問(wèn)答型看門(mén)狗來(lái)解釋一下具體的工作原理(圖6)。

圖6:看門(mén)狗定時(shí)器簡(jiǎn)化流程圖。
問(wèn)答型看門(mén)狗通過(guò)SPI發(fā)送特定的消息序列定期進(jìn)行操作。根據(jù)單片機(jī)的請(qǐng)求,DRV3205-Q1向SPI上的MCU,鎖定在WDT_ANSWER令牌U值寄存器中。單片機(jī)執(zhí)行一系列固定的對(duì)令牌值進(jìn)行算術(shù)運(yùn)算,并將生成的令牌值返回給MCU通過(guò)寫(xiě)入WDT_ANSWER應(yīng)答寄存器的SPI。DRV3205-Q1設(shè)備驗(yàn)證MCU是否返回令牌值在指定的時(shí)間窗口內(nèi)產(chǎn)生(應(yīng)答),并且令牌值響應(yīng)(答案)正確。
● 當(dāng)MCU在正確的時(shí)間窗口內(nèi)執(zhí)行與看門(mén)狗相關(guān)的SPI通信時(shí),并返回正確計(jì)算的響應(yīng)(答案),看門(mén)狗認(rèn)為這是好事件。
● 當(dāng)MCU在正確的定時(shí)窗口外執(zhí)行與看門(mén)狗相關(guān)的SPI通信時(shí),或返回錯(cuò)誤計(jì)算的令牌響應(yīng)(答案),或返回錯(cuò)誤的正確答案順序,看門(mén)狗認(rèn)為這是壞事件。
● 當(dāng)MCU在看門(mén)狗超時(shí)期間暫??撮T(mén)狗相關(guān)的SPI通信時(shí)窗口,看門(mén)狗將此視為無(wú)響應(yīng)事件。
● 內(nèi)部計(jì)數(shù)器存儲(chǔ)wd_fail_cnt寄存器中的錯(cuò)誤響應(yīng)數(shù),該寄存器觸發(fā)。
● 如果wd_fail_cnt達(dá)到預(yù)先定義的限制,則失敗。通過(guò)在wd_fail_max中指定限制注冊(cè)后,可以為壞事件的數(shù)量設(shè)置一個(gè)緩沖區(qū)。
問(wèn)答型看門(mén)狗目前用在對(duì)應(yīng)功能安全等級(jí)ASIL-C/D的汽車(chē)系統(tǒng)中,例如EPS。但這個(gè)電路的缺點(diǎn)就是增加了控制軟件的復(fù)雜度,同時(shí)也增加了硬件的成本,需要依據(jù)具體的系統(tǒng)要求來(lái)選用。
綜上所述,汽車(chē)中帶有看門(mén)狗功能的電源依據(jù)不同的應(yīng)用場(chǎng)合可以合適地選用。需要在成本、復(fù)雜性、可靠性和功能安全等方面進(jìn)行綜合權(quán)衡后得出一個(gè)折衷的選擇。軟件看門(mén)狗技術(shù)的原理和這差不多,只不過(guò)是用軟件的方法實(shí)現(xiàn),我們還是以51系列來(lái)講,我們知道在51單片機(jī)中有兩個(gè)定時(shí)器,我們就可以用這兩個(gè)定時(shí)器來(lái)對(duì)主程序的運(yùn)行進(jìn)行監(jiān)控。我們可以對(duì)T0設(shè)定一定的定時(shí)時(shí)間,當(dāng)產(chǎn)生定時(shí)中斷的時(shí)候?qū)σ粋€(gè)變量進(jìn)行賦值,而這個(gè)變量在主程序運(yùn)行的開(kāi)始已經(jīng)有了一個(gè)初值,在這里我們要設(shè)定的定時(shí)值要小于主程序的運(yùn)行時(shí)間,這樣在主程序的尾部對(duì)變量的值進(jìn)行判斷,如果值發(fā)生了預(yù)期的變化,就說(shuō)明T0中斷正常,如果沒(méi)有發(fā)生變化則使程序復(fù)位。對(duì)于T1我們用來(lái)監(jiān)控主程序的運(yùn)行,我們給T1設(shè)定一定的定時(shí)時(shí)間,在主程序中對(duì)其進(jìn)行復(fù)位,如果不能在一定的時(shí)間里對(duì)其進(jìn)行復(fù)位,T1 的定時(shí)中斷就會(huì)使單片機(jī)復(fù)位。在這里T1的定時(shí)時(shí)間要設(shè)的大于主程序的運(yùn)行時(shí)間,給主程序留有一定的的余量。而T1的中斷正常與否我們?cè)儆蒚0定時(shí)中斷子程序來(lái)監(jiān)視。這樣就構(gòu)成了一個(gè)循環(huán),T0監(jiān)視T1,T1監(jiān)視主程序,主程序又來(lái)監(jiān)視T0,從而保證系統(tǒng)的穩(wěn)定運(yùn)行。