基于80C552單片機的多芯片同步復(fù)位電路
關(guān)鍵詞:軟件復(fù)位;同步;可靠性
0.引言
復(fù)位是單片機的重要操作內(nèi)容,復(fù)位功能是系統(tǒng)正常運行的先決條件。在簡單的復(fù)位電路中,只要在微處理芯片的RESET引腳保持高電平達2個以上的機器周期,即可完成一次復(fù)位操作[1]??紤]到電源的穩(wěn)定時間,參數(shù)漂移,晶振穩(wěn)定時間以及復(fù)位的可靠性等因素,一般只要在RESET引腳出現(xiàn)10ms以上的高電平,就能使單片機有效復(fù)位。但是在單片機應(yīng)用系統(tǒng)中除單片機外,往往還有若干個外圍器件,如果外圍器件有復(fù)位要求,便形成了多個芯片的綜合復(fù)位系統(tǒng),這時,一般的復(fù)位電路就不能滿足使用要求,本文以常用芯片80C552為例,提出了一種多芯片同步復(fù)位電路設(shè)計方法,供讀者參考。
1.MSC-51系列的一般上電復(fù)位電路
圖1 一般復(fù)位電路 |
一般上電復(fù)位電路是利用RC充電原理實現(xiàn)的,如圖1(a)所示。初始上電,電容兩端等電位,則RESET為高電平,隨著對電容的充電,RESET端電位逐漸降低,直至低電平,復(fù)位過程結(jié)束。RC的選取應(yīng)使RESET端保持10ms的高電平,才能實現(xiàn)可靠復(fù)位。
圖1(a)雖然能實現(xiàn)上電復(fù)位功能,但對干擾沒有抵抗作用,不能保證復(fù)位電路任何時候都能可靠地工作。單片機復(fù)位端口的干擾主要來自電源的噪聲,盡管不會造成單片機的錯誤復(fù)位,但會引起某些內(nèi)部寄存器錯誤復(fù)位。因此要采取必要措施,消除干擾低復(fù)位功能的影響。
圖1(b)給出了一個改進的電路。電阻R與電容C構(gòu)成一個低通濾波環(huán)節(jié),然后通過74LS14施密特電路接入單片機復(fù)位端,可以提高對串入復(fù)位端噪聲的抑制能力。電路中并聯(lián)二極管D的目的是在電源斷電后,電容能迅速放電。如果沒有二極管,那么在斷電窄脈沖的干擾下,由于電容C不能迅速將電荷放掉,待電源恢復(fù)時,由于電容C兩端仍維持較高電壓,單片機不能上電自動復(fù)位,導(dǎo)致程序運行失控。
2.1 80C552內(nèi)部特殊的復(fù)位結(jié)構(gòu)
圖 2 80C552片內(nèi)復(fù)位電路 |
80C552[4]芯片的內(nèi)部復(fù)位電路和MSC-51系列的其他芯片不同,它已經(jīng)將抑制噪聲干擾的史密特電路集成到芯片內(nèi)部,這樣就減少了外部連接的不可靠因素的影響,而且將上電復(fù)位用的充電電阻也集成到芯片內(nèi)部,簡化了外部復(fù)位電路的硬件設(shè)計,提高了上電復(fù)位的可靠性。
另外,80C552內(nèi)部有一個定時監(jiān)視器T3,可以產(chǎn)生內(nèi)部復(fù)位。如圖2所示。80C552的內(nèi)部復(fù)位過程是:將定時監(jiān)視器T3置為有效,當(dāng)程序運行出現(xiàn)異常時,定時器T3溢出,并輸出寬度為3個機器周期的窄脈沖到復(fù)位電路,這樣的脈沖足以完成一次復(fù)位操作,使系統(tǒng)盡快地從故障中恢復(fù)正常。80C552的外部復(fù)位與內(nèi)部復(fù)位是相互獨立的,當(dāng)允許內(nèi)部復(fù)位時,不管RST引腳是否為高電平,都能產(chǎn)生一次復(fù)位操作。
2.2 單獨采用80C552芯片的復(fù)位電路
圖 3 80C552外部復(fù)位電路 |
如果80C552的復(fù)位端不再連到其它芯片上,可以采取圖3(a)的方案,外部元件少,而且外部復(fù)位、內(nèi)部復(fù)位均可實現(xiàn),系統(tǒng)設(shè)計簡單,可靠性也高。
2.3 多芯片簡單復(fù)位電路
當(dāng)系統(tǒng)中有多個復(fù)位端連在一起時,不能采用圖3(a)的方案。因為電容的放電作用,使得T3輸出的窄脈沖無法在RST引腳出現(xiàn),這樣,當(dāng)產(chǎn)生內(nèi)部復(fù)位條件時,雖然80C552可以得到復(fù)位,但其它外圍芯片無法得到復(fù)位。這時應(yīng)采用圖3(b)的方案,電容不直接與RST引腳相連,在RST引腳就可以取到T3輸出的窄脈沖了。這樣,當(dāng)產(chǎn)生內(nèi)部復(fù)位條件時,整個系統(tǒng)都可以實現(xiàn)復(fù)位了。
但由于不同廠家生產(chǎn)的芯片結(jié)構(gòu)不同,對復(fù)位的要求也不同[5],況且多芯片的復(fù)位連接必然使復(fù)位線加長,這極易引起較大的分布電容,從而使外圍電路的復(fù)位過程滯后于單片機,如果單片機復(fù)位結(jié)束后立即對外圍電路進行初始化操作,往往會導(dǎo)致失敗。解決的方法是在程序的初始處加一些延時軟件,然后再對外圍芯片進行初始化設(shè)置,可實現(xiàn)多個芯片的可靠同步。
2.4 基于80C552的多芯片同步復(fù)位電路設(shè)計圖
圖4多芯片綜合復(fù)位電路舉例
5軟件復(fù)位流程圖
圖4是我們設(shè)計的遙控數(shù)據(jù)采集器的接收和轉(zhuǎn)發(fā)電路,紅外接收器接收發(fā)射器發(fā)過來的現(xiàn)場數(shù)據(jù)信息,送到89C2051進行處理,然后通過I2C總線傳送到80C552,經(jīng)過80C552進一步處理后,采用CAN總線傳送到數(shù)據(jù)處理中心.我們這里僅對它的復(fù)位電路進行討論.
在這個系統(tǒng)中,除了80C552需要復(fù)位外,還有兩個芯片需要復(fù)位操作,一個是CAN控制器SJA1000,一個是單片機89C2051。其復(fù)位要求是:既要有上電自動復(fù)位功能,又要能通過定時監(jiān)視器T3實現(xiàn)“看門狗”復(fù)位功能;當(dāng)80C552復(fù)位時,89C2051和SJA1000也同時復(fù)位;當(dāng)89C2051或SJA1000出現(xiàn)問題時,通過80C552能夠分別對其進行復(fù)位,而不影響80C552程序的正常運行。而且,89C2051和SJA1000兩個芯片的復(fù)位電平信號不同,前者為高電平復(fù)位,后者為低電平復(fù)位。按照上述功能要求,簡單的采用前面介紹的兩種復(fù)位電路均不可行。于是我們采取了一種軟件與硬件結(jié)合的方法,這種方法是,在硬件結(jié)構(gòu)上,芯片80C552的外部復(fù)位電路仍采用圖3(a)的結(jié)構(gòu),芯片89C2051和SJA1000的復(fù)位不直接與80C552的復(fù)位端相連,而是連到了80C552的兩根I/O口線P1.1和P1.3;在軟件設(shè)計上,通過在初始化程序中軟件模擬上電復(fù)位過程,就可以滿足系統(tǒng)的要求,其程序流程圖如圖5所示。
系統(tǒng)綜合復(fù)位過程是:系統(tǒng)上電后,80C552首先復(fù)位,開始運行軟件程序,在執(zhí)行初始化部分時,首先通過P1.1和P1.3實現(xiàn)對89C2051和SJA1000的復(fù)位操作,然后再運行其他程序。當(dāng)程序運行出現(xiàn)異常時,“看門狗”起作用,T3溢出產(chǎn)生內(nèi)部復(fù)位操作,程序重新開始,初始化部分也重新運行,89C2051和SJA1000隨之再復(fù)位一次。在程序正常運行過程中,如果與89C2051或SJA1000相關(guān)的模塊出現(xiàn)錯誤時,可以通過軟件判定是否出現(xiàn)異常,之后通過P1.1、P1.3端口分別對89C2051或SJA1000單獨進行復(fù)位操作,此時80C552并不需要復(fù)位,程序正常運行。
3 結(jié)論:
本文作者創(chuàng)新點: 對于多芯片結(jié)構(gòu)提出了一種軟件與硬件相結(jié)合的方法建立同步復(fù)位系統(tǒng)。這種方法有利于提高系統(tǒng)設(shè)計的靈活性和可靠性。經(jīng)過長期使用的結(jié)果表明,這種采用軟件、硬件相結(jié)合的復(fù)位方法,具有硬件器件少、靈活、可靠性高的特點,完全能夠保證多個芯片的可靠同步。
參考文獻
[1]孫涵芳 徐愛卿.MCS-51、96系列單片機原理及應(yīng)用[M],北京:北京航空航天大學(xué)出版社,1995,4
[2]王幸之 王雷 翟成 王閃.單片機應(yīng)用系統(tǒng)抗干擾技術(shù)[M],北京:北京航天大學(xué)出版社,2000,9
[3]張有德.飛利浦80C51系列單片機原理與應(yīng)用技術(shù)手冊[M],北京:北京航空航天大學(xué)出版社,1999,1
[4]田景文,性能卓越的單片機80C552[J].石油儀器[J] 1998,3:32-34
[5]洪一池,袁一萍.微控制器實時系統(tǒng)監(jiān)測復(fù)位電路的軟件設(shè)計[J].微型計算機應(yīng)用2003,3:44-45.
[6]喬維德.基于87LPC768微處理器相位計的設(shè)計[J].微計算機信息2006,3-2:43-44.
DIY機械鍵盤相關(guān)社區(qū):機械鍵盤DIY
評論