什么是復(fù)位電路?
復(fù)位電路在單片機小系統(tǒng)中很常見,今天我們就探討下單片機阻容復(fù)位電路的構(gòu)成、特點和改進(jìn)方法,本文內(nèi)容選自龍順宇老師的新書 《深入淺出STC8增強型51單片機進(jìn)階攻略》 。
如果朋友們學(xué)習(xí)過《數(shù)字電子技術(shù)》這門課程的相關(guān)內(nèi)容就肯定知道觸發(fā)器和時序邏輯電路章節(jié)中必學(xué)的 初態(tài) 和 次態(tài) 問題,簡單來說就是需要明確電路之前的狀態(tài)才能推導(dǎo)出后面的狀態(tài),由此可見,在數(shù)字電路(特別是時序電路)中一個已知的初始狀態(tài)有多么重要。
我們學(xué)習(xí)的單片機其實就是個數(shù)字/模擬的混合系統(tǒng),很多片內(nèi)資源和相關(guān)寄存器都需要一個默認(rèn)的起始狀態(tài)。
我們現(xiàn)在講的“復(fù)位”,其作用就是通過相關(guān)電路產(chǎn)生“復(fù)位信號”讓單片機能在上電后或者運行中恢復(fù)到默認(rèn)的起始狀態(tài)。
“復(fù)位”動作之后單片機會產(chǎn)生一系列的重置操作,例如I/O口默認(rèn)的模式和狀態(tài)、相關(guān)寄存器的默認(rèn)取值、所有標(biāo)志位的狀態(tài)重置、通信/定時相關(guān)的數(shù)據(jù)內(nèi)容設(shè)定等等。
由此可見, 復(fù)位的意義就是讓單片機相關(guān)單元進(jìn)行初始重置且程序從內(nèi)存起始地址重新執(zhí)行 。
要讓單片機正確復(fù)位就需要在RST引腳(等同于RESET引腳)上產(chǎn)生符合復(fù)位要求的有效信號,有的單片機需要高電平復(fù)位信號,有的則需要低電平復(fù)位信號。
我們以經(jīng)典51單片機高電平復(fù)位為例,單片機正常運行時RST引腳應(yīng)保持低電平,當(dāng)需要復(fù)位時應(yīng)拉高RST引腳的電平,并維持“系統(tǒng)時鐘源、內(nèi)部電路單元穩(wěn)定周期+2個機器周期”的時間長度( 為保證有效復(fù)位,復(fù)位信號應(yīng)持續(xù)20至200ms為宜 )。
我們知道,在12T型單片機中,1個機器周期等于12個時鐘周期,時鐘周期其實就是振蕩周期,比如晶振頻率是12M,振蕩周期就是1/12000000秒,由此可見,在設(shè)計具體復(fù)位電路時需要考慮單片機工作時鐘頻率后再去匹配復(fù)位電路的相關(guān)參數(shù)。
在早期的51單片機產(chǎn)品中,復(fù)位信號一般是由外部復(fù)位電路產(chǎn)生,所以很多經(jīng)典的單片機原理類書籍將復(fù)位電路稱作最小系統(tǒng)的必要組成,隨著單片機技術(shù)的不斷發(fā)展,很多單片機不再單獨拿出一個RST引腳僅做復(fù)位之用,而是在晶圓設(shè)計時集成了 片內(nèi)上電復(fù)位POR(Power On Reset)電路 ,很多單片機就都具備片上POR電路,POR電路在芯片上電后會產(chǎn)生一個內(nèi)部復(fù)位脈沖并使器件保持靜態(tài),直至電源電壓達(dá)到穩(wěn)定閾值后再釋放復(fù)位信號。
這樣一來,用戶就可以省略外部復(fù)位電路將RST引腳閑置或者當(dāng)做普通I/O使用。
如果讀者朋友們實際應(yīng)用的單片機不具備片上POR電路也沒事,我們可以搭建符合復(fù)位要求的外置電路產(chǎn)生復(fù)位信號。
一般來說,單片機復(fù)位電路主要有四種類型:微分型復(fù)位電路 、 積分型復(fù)位電路 、 比較器型復(fù)位電路 和 看門狗型復(fù)位電路 。接下來小宇老師就拿出相對簡單的微分和積分型電路進(jìn)行講解,讓讀者朋友們能有一個直觀的感受。
常見的阻容式微分復(fù)位電路如圖1(a)所示,電路中的“Reset”電氣網(wǎng)絡(luò)連接至單片機“RST”引腳。該電路上電后的波形如圖(b),其波形在上電后先是高電平,經(jīng)過100ms后跌落到了1V以下最終保持低電平狀態(tài),我們常將其稱為“高電平”復(fù)位電路。
?。╝)(b)
圖1 微分型高電平復(fù)位電路原理圖
分析微分復(fù)位電路,該電路的組成十分簡單,其核心實現(xiàn)僅有1個電阻和1個電容組成,外加的S1按鍵主要實現(xiàn)手動復(fù)位功能,當(dāng)S1按下時“Reset”電氣網(wǎng)絡(luò)被強制拉高實現(xiàn)復(fù)位。
在設(shè)計該電路時一定要先根據(jù)單片機工作的時鐘頻率去考慮阻容的取值,若系統(tǒng)選用12MHz石英晶振,則1個機器周期就是1us,復(fù)位信號的脈沖寬度最小也要2us以上,但是真正設(shè)計時最好不要貼近理論值去構(gòu)造電路,復(fù)位信號脈沖寬度最好是20至200ms為宜。當(dāng)晶振頻率大于或等于12MHz時,常見取值C1為10uF,R1為10k。
當(dāng)系統(tǒng)上電時C1相當(dāng)于通路,“Reset”電氣網(wǎng)絡(luò)上電瞬間為高電平,隨著R1不斷泄放C1的電荷,“Reset”電氣網(wǎng)絡(luò)的電壓逐漸降低,最終降到低電平區(qū)間。在放電的過程中“Reset”電氣網(wǎng)絡(luò)的高電平持續(xù)了100ms左右才跌落到1V以下,這遠(yuǎn)大于2個機器周期的復(fù)位時間要求,即復(fù)位有效。
若將圖2中的電阻R1和電容C1互換位置就可以變成阻容式積分復(fù)位電路,電路原理圖如圖2(a)所示。該電路上電后的波形如圖(b)所示,其波形在上電后先是低電平,然后經(jīng)過50ms左右就超過了1.6V并繼續(xù)上升,最終保持在高電平電壓區(qū)間,我們常將該電路稱為“低電平”復(fù)位電路。
當(dāng)系統(tǒng)上電時C1相當(dāng)于通路,故而“Reset”電氣網(wǎng)絡(luò)上電瞬間為低電平,隨著電源通過R1不斷的向C1充電,“Reset”電氣網(wǎng)絡(luò)的電位逐漸抬升并最終保持高電平。外加的S1按鍵主要實現(xiàn)手動復(fù)位功能,當(dāng)S1按下時“Reset”電氣網(wǎng)絡(luò)被強制拉低實現(xiàn)復(fù)位。
?。╝)(b)
圖2 積分型低電平復(fù)位電路原理圖
阻容式復(fù)位電路非常簡單,成本也很低,但是可靠性如何呢?可能有的讀者朋友會說:市面上的開發(fā)板都用這個電路,我在實驗室也用這個電路,從來沒遇到過問題,而且這種經(jīng)典電路每本書都這么講的,你敢說不可靠?
小宇老師得站出來說:這電路確實簡單,但可靠性確實不高。首先來說,阻容器件本身存在器件誤差,誤差會直接導(dǎo)致RC時間常數(shù)和充放電時間的差異,批量制造時難以保證產(chǎn)品的一致性。其次,阻容器件存在老化現(xiàn)象和溫漂問題,在長期使用或者嚴(yán)苛溫度環(huán)境中容易造成較大誤差導(dǎo)致失效。
最后,簡單的阻容復(fù)位電路會有電容的遲滯充放電問題,導(dǎo)致復(fù)位信號可能不滿足復(fù)位電平閾值要求,且面對來自電源的波動或者快速開關(guān)機情況會出現(xiàn)無法復(fù)位的問題。
朋友們可能會說,器件參數(shù)誤差、老化和溫漂在一般產(chǎn)品中都可以接受,一致性問題也沒有那么高要求,本著“能用就行”的原則,這個電路也湊合用吧!也不是不行,但是可以稍微改進(jìn)下,且看小宇老師做個實驗。
以圖1(a)所示的阻容式微分復(fù)位電路為例,若將電源周期性通斷,其復(fù)位波形就不再完美了,實際波形如圖3(a)所示,復(fù)位波形由于電容的緩慢放電原因出現(xiàn)了下降遲緩且無法到達(dá)低電平閾值的問題(也就是復(fù)位電壓“下不去”的情況),這種復(fù)位信號就不能保證單片機系統(tǒng)的有效復(fù)位,若工業(yè)控制有關(guān)的板卡遇到電源波動出現(xiàn)無法復(fù)位的情況,無疑是危險的。
若將微分復(fù)位電路按圖3(b)改進(jìn),在電阻R1的兩端并聯(lián)個D1,再次將電源周期性通斷,復(fù)位波形就會變成如圖3(c)所示的波形。從波形上看,電路改造后復(fù)位波形得到了明顯的改善,圖中波形下降迅速且可以下降到低電平閾值以下,不會出現(xiàn)頻繁上電時復(fù)位電壓“下不去”的情況。
?。╝)(b)(c)
圖3 微分型高電平不可靠復(fù)位及優(yōu)化實驗
這個“不起眼”的D1為電容C1在掉電情況下提供了一條迅速泄放電荷的通道,這樣一來就可以保證在電源頻繁波動或者周期性上電情況下的正常復(fù)位。有的朋友可能要說了,這個復(fù)位波形看起來還是很“怪異”??!雖說是高電平復(fù)位波形,但是看起來和“毛刺”一樣,就不能通過什么電路把復(fù)位信號搞成類似于高低電平的波形樣式嗎?
當(dāng)然也是可以的,我們再把電路優(yōu)化一次。添加三極管和二極管進(jìn)去,最終搭建出一種閾值電壓比較型高電平復(fù)位電路如圖4(a)所示。電路的目的就是構(gòu)造一個“復(fù)位閾值電壓比較器”,電路中的穩(wěn)壓二極管D1(實際選用3.3V穩(wěn)壓管)和開關(guān)二極管D2(實際選用1N4148,導(dǎo)通壓降為0.6V左右)決定了復(fù)位信號的電平閾值,大致就是3.3V+0.6V=3.9V左右(朋友們也可以更替D1的穩(wěn)壓參數(shù)構(gòu)成更多復(fù)位閾值)。
電路中的三極管Q1及外圍電路構(gòu)成了一個簡單的比較器電路,當(dāng)電源波動的時候也可以有效的根據(jù)閾值比較完成復(fù)位動作。R2的大小可以改變輸出信號的驅(qū)動能力,R1和C2一起決定了復(fù)位延時的長度,C1是為了抑制和旁路電源中的高頻噪聲。該電路上電后的復(fù)位波形如圖4(b)所示,這樣的波形總算是“漂亮”了。
(a)(b)
圖4 一種閾值電壓比較型高電平復(fù)位電路原理圖
雖說圖4(b)所示波形的高電平末端有個向上的小“凸起”,但這并不影響復(fù)位信號的有效性,因為復(fù)位電壓只要在1.6V以上就滿足高電平復(fù)位系列單片機的復(fù)位要求了,如果有朋友和小宇老師一樣是個“強迫癥”,那您也可以微調(diào)R1和C2的取值去優(yōu)化波形。
基于圖4(a)所示的高電平復(fù)位電路,我們也可以稍加變形做成如圖5(a)所示的“低電平復(fù)位電路”,該電路適用于低電平復(fù)位的單片機。該電路上電后的復(fù)位波形如圖5(b)所示,該波形相當(dāng)于圖4(b)的取反波形。
?。╝)(b)
圖5 一種閾值電壓比較型低電平復(fù)位電路原理圖
由此可見,小電路也有很多講究。此處的改進(jìn)只是拋磚引玉,朋友們別被“拋出去的磚”砸暈了,復(fù)位電路還存在很多改進(jìn)電路和一些實際問題,希望讀者朋友們可以自行延展,單片機復(fù)位端口處還可并聯(lián)0.01至0.1uF的瓷片電容,以抑制電源高頻噪聲干擾或配置施密特觸發(fā)器電路,進(jìn)一步的提高單片機對串入噪聲的抑制。
可能有的朋友還是不滿意這種RC充放電電路產(chǎn)生的復(fù)位波形,能不能有什么電路或者器件使用簡單又能產(chǎn)生類似方波一樣的復(fù)位波形呢?答案是肯定的,想要高可靠復(fù)位單元可以選擇專用的復(fù)位監(jiān)控芯片。如飛利浦半導(dǎo)體、美信半導(dǎo)體公司均有此類產(chǎn)品,這些芯片的體積小、功耗低、門檻電壓可選。
集成度的提高使抗干擾能力和溫度適應(yīng)性都得到了大幅提高,可以保證系統(tǒng)在不同的異常條件下進(jìn)行可靠的復(fù)位。其原理其實是通過確定的電壓閾值啟動復(fù)位操作,同時排除瞬間干擾的影響,又有防止單片機在電源啟動和關(guān)閉期間的誤操作效果,以保證程序的正常執(zhí)行。
我們以美信公司生產(chǎn)的MAX810這款高電平復(fù)位電路專用芯片為例,搭建如圖6(a)所示電路,上電后測量“Reset”電氣網(wǎng)絡(luò)可以得到如圖6(b)所示波形,這個波形就堪稱“完美”了。
?。╝)(b)
圖6 專用復(fù)位芯片MAX810電路及復(fù)位波形
常見的低電平復(fù)位電路有MAX705、MAX706、MAX809、MAX811等器件。高電平復(fù)位電路有MAX810、MAX812等器件。而MAX707、MAX708、MAX813L等器件同時有高、低電平復(fù)位輸出信號和看門狗輸出,在實際產(chǎn)品中經(jīng)常會看到它們,需要注意的是,不同芯片的復(fù)位脈沖時間不一樣,但是一般都可以達(dá)到100至200ms左右,完全滿足常見處理器對復(fù)位時間的需求,有的芯片還支持復(fù)位閾值設(shè)定、備份電池切換、看門狗定時器、門限值檢測器、復(fù)位脈沖極性選擇等更為高級的功能,此處就留給讀者朋友們自行去研究了。
編輯:黃飛
評論