李峰
(小佩網(wǎng)絡科技(上海)有限公司 上海市 201203)
看門狗,又叫WatchDog Timer(WDT),從本質(zhì)上來說就是一個定時器電路,一般有一個輸入和一個輸出,其中的輸入叫做喂狗,輸出一般連接到另外一個部分的復位端,復位端一般為Microcontroller Unit(MCU)。
在MCU正常工作的時候,每隔一段時間輸出一個信號喂狗——給看門狗電路清零,如果在超過規(guī)定的時間不喂狗,WDT 定時超時,就會輸出一個復位信號到達MCU,使MCU 復位重啟,從而防止MCU 死機??偟膩碚f,看門狗電路的作用就是防止程序發(fā)生死鎖或者跑飛。
WDT 的基本工作原理如下:在整個系統(tǒng)運行以后就啟動了看門狗的計數(shù)器,此時看門狗就開始自動計時,如果到達了一定的時間還不去給它清零,看門狗計數(shù)器就會溢出從而引起看門狗中斷,造成系統(tǒng)的復位。
硬件看門狗就是利用了一個定時電路,來監(jiān)控主程序的運行。在主程序的運行中,要在定時時間到達之前對定時器進行復位??撮T狗的作用就是防止程序死循環(huán)和系統(tǒng)死機。
隨著微電子技術的發(fā)展,嵌入式系統(tǒng)越來越復雜,為提高電路運行的可靠性,加入硬件看門狗電路,在軟件出現(xiàn)異常時重啟電路,使得系統(tǒng)恢復正常運行。
本文在介紹了使用時鐘芯片實現(xiàn)硬件看門狗電路的方法,以及與普通看門狗電路實現(xiàn)方案的對比。
圖1:PCF8563 內(nèi)部功能框圖
圖2:PCF8563 看門狗硬件原理圖框圖
圖3:PCF8563 看門狗軟件流程圖
傳統(tǒng)硬件看門狗電路,一般由硬件定時器,看門狗輸入,看門狗輸出電路組成,在電路運行過程中,硬件定時器不停計時,定時器計時滿產(chǎn)生溢出時,觸發(fā)看門狗輸出電路輸出低電平,此低電平用于觸發(fā)處理器系統(tǒng)的硬重啟;當處理器正常運行時,會在定時器溢出前控制看門狗輸入引腳電平不斷變化,對定時器進行清零,從而避免溢出產(chǎn)生重啟信號。
隨著集成電路的發(fā)展與成熟,目前已很少使用分立器件實現(xiàn)硬件看門狗,多采用集成電路來實現(xiàn),如SGM706、CAT823、EM6323、MAX813L 等均是常用的硬件看門狗芯片,他們的共同特點是定時器最大計時長度均為1.6 秒左右,即處理器的“喂狗”信號周期必須小于1.6 秒,才能可靠實現(xiàn)看門狗功能。
當前物聯(lián)網(wǎng)系統(tǒng)的飛速發(fā)展,有大量硬件終端處于遠程、低功耗工作模式,如遠程抄表,電子車鎖等,處理器多數(shù)時間處于低功耗睡眠狀態(tài),頻繁的啟動并輸出“喂狗”信號將耗費大量電源,不利于系統(tǒng)長時間低功耗運行。
通用市售時鐘芯片種類繁多,其型號主要有 PCF8563、DS12887、DS1302、DS1307、DS3231 等多種型號,在實現(xiàn)通用的秒、分、時、日、月、年的計時功能外,各型號對外接口、鬧鐘、中斷信號等功能略有不同。鑒于看門狗電路必須有低電平信號輸出以便控制處理器硬重啟的需要,選取了帶有中斷信號輸出的PCF8563作為硬件看門狗電路的主芯片。
PCF8563 是恩智浦(NXP)公司的一款低功耗實時時鐘萬年歷芯片,采用CMOS 工藝,具備可編程時鐘輸出、中斷輸出、低電壓檢測等功能,其中可編程時鐘輸出可配置為32.768 kHz, 1.024 kHz, 32 Hz, and 1 Hz;中斷輸出為集電極開路結(jié)構(gòu),在無信號輸出時對外界電路無任何影響;對外通訊使用速度最高400kbit/s 的IIC總線。外接32.768KHz 時鐘晶體,內(nèi)置起振電容,可以實現(xiàn)年、月、日、周、小時、分鐘、秒的計時信號存儲與輸出、鬧鐘和計時中斷功能。室溫條件下具有1.0V-5.5V 的寬工作電壓范圍和250nA 的低工作電流(關閉可編程時鐘輸出和IIC 等對外接口),具有SO8、TSSOP8、HVSON10 封裝可供不同電路面積需求使用,適用于手機,PAD 等使用電池供電的便攜電子設備使用。
其內(nèi)部框圖如圖1 所示。
使用其中的TIMER FUNCTION 或ALARM FUNCTION 實現(xiàn)定時,ALARM FUNCTION 可實現(xiàn)周、日、小時、分鐘級別的定時周期,TIMER FUNCTION 的時鐘源可軟件配置為4.096kHz,64Hz,1Hz,1/60Hz,結(jié)合8 位計數(shù)器,可實現(xiàn)0.25 毫秒到7680秒(2 小時多)的定時周期,此定時周期間隔即是看門狗的RST 信號間隔,從上述分析可以看出,PCF8563 可實現(xiàn)從毫秒級到小時級,甚至天、周級的定時周期輸出,此周期的靈活性和適應性明顯比傳統(tǒng)看門狗電路強。
實現(xiàn)硬件看門狗功能的PCF8563 外圍電路連接原理如圖2 所示,其中PCF8563 的INT 引腳與MCU 的RST 引腳通常情況下可以直連;當INT 輸出時間特性與MCU 所需RST 信號不匹配時,可以做是的匹配變換,以確保功能可靠實現(xiàn)。
系統(tǒng)開機上電后,處理器芯片通過IIC 總線初始化PCF8563,根據(jù)所需看門狗電路定時間隔,設定當前時間,TIMER FUNCTION定時寄存器或ALARM FUCNTION定時寄存器,在系統(tǒng)正常運行時,在定時時間到之前,處理器重新設定TIMER FUNCTION 定時寄存器或ALARM FUCNTION 定時寄存器,以免其INT 引腳輸出低電平;在系統(tǒng)運行異常,無法按應有間隔設定TIMER FUNCTION 或ALARM FUCNTION 寄存器,定時時間到時,PCF8563 的INT 引腳輸出低電平,從而觸發(fā)系統(tǒng)重啟。
軟件流程圖如圖3 所示。
如上使用的硬件看門狗電路,可以實現(xiàn)0.25 毫秒到周級的定時“喂狗”間隔,喂狗間隔可以靈活設置,短定時間隔可以提高系統(tǒng)的響應速度,長定時間隔可最大限度的延長喂狗間隔,降低系統(tǒng)功耗。其優(yōu)勢在于時間間隔程序可控,長短可調(diào),長時間間隔有利于低功耗設備,其本身就是低功耗芯片,運行電流250nA,22uF電容可運行超過24 小時,XH414HG 電容式紐扣電池可運行數(shù)天;
此外,作為輸出復位信號的INT 引腳,除了可以連接MCU 的復位引腳外,還可以連接至系統(tǒng)供電電源的控制引腳,在定時器超時溢出時,短時間切斷系統(tǒng)電源,從而實現(xiàn)全系統(tǒng)重新上電的硬重啟,比單純復位MCU 的方法更為徹底有效。
從文章上述內(nèi)容可以看出,傳統(tǒng)的硬件看門狗電路最大“喂狗”間隔均在1.6秒左右,“喂狗”要求頻繁,耗費處理器資源和較多電量。使用時鐘芯片(如PCF8563)實現(xiàn)的硬件看門狗電路,具有自身功耗低、“喂狗”間隔跨度大(1/4096 秒——數(shù)周),成本低,通用性強等特點,尤其適用于本身就需要實時時鐘的產(chǎn)品,在不增加硬件成本的基礎上,實現(xiàn)硬件看門狗電路,提高系統(tǒng)運行的可靠性。