張文豐
摘要:對(duì)于從事單片機(jī)應(yīng)用開發(fā)的電子工程師來說,在單片機(jī)系統(tǒng)的設(shè)計(jì)中,應(yīng)充分考慮系統(tǒng)的應(yīng)用環(huán)境,滿足系統(tǒng)的抗干擾要求,避免在設(shè)計(jì)完成后再去進(jìn)行抗干擾的補(bǔ)救措施。文章主要以單片機(jī)應(yīng)用的前瞻性抗干擾設(shè)計(jì)作為研究對(duì)象,探討在單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)中采取的硬件及軟件抗干擾措施。
關(guān)鍵詞:?jiǎn)纹瑱C(jī);前瞻性;抗干擾設(shè)計(jì)
中圖分類號(hào):TU37?;?;?;?;文獻(xiàn)標(biāo)識(shí)碼:A?;?;?;?;文章編號(hào):1009-2374(2014)18-0021-03
隨著現(xiàn)代集成電路技術(shù)迅速的發(fā)展,單片機(jī)以其體積小、功耗低、應(yīng)用靈活等特點(diǎn),使其在各個(gè)領(lǐng)域中得到了極為廣泛的應(yīng)用。與此同時(shí),在單片機(jī)的使用期間,由于系統(tǒng)工作環(huán)境各不同,潛在大量的干擾因素,危及單片機(jī)的正常運(yùn)行乃至相關(guān)數(shù)據(jù)的安全性,嚴(yán)重影響了單片機(jī)功能的發(fā)揮。因此,在單片機(jī)系統(tǒng)的應(yīng)用中,需要通過引入前瞻性設(shè)計(jì)理念,從單片機(jī)系統(tǒng)的硬件、軟件兩個(gè)角度入手,確保單片機(jī)運(yùn)行穩(wěn)定、可靠。本文即針對(duì)該問題展開詳細(xì)分析。
1單片機(jī)系統(tǒng)硬件干擾
單片機(jī)系統(tǒng)的干擾因素主要是來自系統(tǒng)內(nèi)部和外部的各種電氣、電磁干擾,并與單片機(jī)應(yīng)用系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)、元器件選擇、安裝及制造工藝等息息相關(guān)。在單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)中必須采取措施對(duì)系統(tǒng)運(yùn)行過程中出現(xiàn)的各種干擾信號(hào)以及來自于系統(tǒng)外部的干擾信號(hào)進(jìn)行有效的抑制,使系統(tǒng)運(yùn)行可靠穩(wěn)定。
1.1供電系統(tǒng)的抗干擾設(shè)計(jì)
對(duì)于供電系統(tǒng)中存在電動(dòng)機(jī)等大的用電設(shè)備的工作環(huán)境,為了提高單片機(jī)系統(tǒng)的供電質(zhì)量,防止竄入干擾,可以將單片機(jī)系統(tǒng)的電源與強(qiáng)電動(dòng)力設(shè)備電源分開,在系統(tǒng)電源的輸入端采用交流穩(wěn)壓器以及具有靜電屏蔽和抗電磁干擾的隔離電源變壓器,通過交流低通慮波器過濾后,由電源變壓器輸出多路低電壓經(jīng)過整流、濾波后再通過LDO或DC-DC電源電路轉(zhuǎn)換為符合要求的直流電源,分別供給單片機(jī)系統(tǒng)的各個(gè)部分使用。達(dá)到抑制外部電源電壓的波動(dòng)對(duì)單片機(jī)系統(tǒng)造成的干擾(如
圖1)。
在直流電源供電的單片機(jī)應(yīng)用系統(tǒng),對(duì)應(yīng)用系統(tǒng)中的不同等級(jí)的直流電源采取集成穩(wěn)壓塊單獨(dú)供電,單獨(dú)對(duì)電壓做過載保護(hù),減少公共電源和公共阻抗的相互耦合,以避免模塊間的互相影響;使用直流開關(guān)電源、DC-DC變換器以加強(qiáng)隔離提高電源穩(wěn)定性等。
圖1交流電源供電系統(tǒng)示意圖
1.2過程通道的抗干擾設(shè)計(jì)
在單片機(jī)應(yīng)用系統(tǒng)中,由于輸入/輸出通道直接與外部設(shè)備連接,無論是數(shù)字通道還是模擬通道,都很容易受到干擾,成為干擾傳入系統(tǒng)的主要通道。采用隔離技術(shù)是一種減少干擾行之有效的方法。常用的隔離方法有光電隔離與電磁隔離。對(duì)于數(shù)字通道、開關(guān)信號(hào)等,可以采用光電耦合器、繼電器、SSR等隔離,通過RC消抖后再由施密特電路整形,濾除干擾。對(duì)于模擬通道,模擬信號(hào)的各類可以采用光電耦合器、隔離變壓器、隔離放大器和差動(dòng)放大器等隔離措施。采用隔離放大器方法隔離是利用隔離放大器內(nèi)的變壓器將信號(hào)磁耦合,隔斷了通路的線路連接,從而切斷干擾源。模擬信號(hào)采用光電耦合器隔離,由電壓-頻率轉(zhuǎn)換器VFC把模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),再通過光電耦合器隔離,而光電耦合器的輸出信號(hào)再由頻率-電壓轉(zhuǎn)換器FVC轉(zhuǎn)換成模擬信號(hào)。
在輸入通道上采用一定的過壓保護(hù)措施,以防引入高壓,損壞系統(tǒng)電路。過壓保護(hù)電路由限流電阻和穩(wěn)壓管或瞬態(tài)抑制二極管(TVS)組成,穩(wěn)壓值以略高于最高傳送信號(hào)電壓為宜。
在輸入輸出通道中,當(dāng)導(dǎo)線的長(zhǎng)度和在它上面?zhèn)鬏數(shù)男盘?hào)波長(zhǎng)接近時(shí),會(huì)產(chǎn)生“傳輸線效應(yīng)”,傳輸信號(hào)因阻抗不匹配而出現(xiàn)反射,使得傳輸信號(hào)發(fā)生失真和畸變??梢圆捎檬级舜?lián)阻抗匹配、終端并聯(lián)阻抗匹配和二極管端接等方法使阻抗匹配,消除傳輸線中波形反射而造成的信號(hào)失真。
1.3空間抗干擾措施
空間干擾主要來自太陽(yáng)及其他天體輻射電磁波、廣播電臺(tái)或通訊發(fā)射臺(tái)發(fā)出的電磁波及各種周圍電氣設(shè)備發(fā)射的電磁干擾等??臻g電磁干擾主要采取屏蔽措施,采用導(dǎo)電性能好的金屬外殼將整機(jī)或部分元器件包圍起來,再將金屬外殼接地,把空間的干擾源屏蔽,對(duì)于各種通過電磁感應(yīng)引起的干擾特別有效。
1.4接地系統(tǒng)的抗干擾設(shè)計(jì)
單片機(jī)系統(tǒng)設(shè)備的抗干擾能力與系統(tǒng)的接地設(shè)計(jì)有很大關(guān)系。良好的接地設(shè)計(jì)可以在很大程度上抑制系統(tǒng)內(nèi)部噪音耦合,防止外部干擾的侵入,提高系統(tǒng)的抗干擾能力。在單片機(jī)系統(tǒng)中,數(shù)字地和模擬地應(yīng)分別接地,在一點(diǎn)與單片機(jī)系統(tǒng)電源的地線,俗稱為系統(tǒng)地(參考地)相連,地線應(yīng)盡量加粗以減少地線阻抗。
單片機(jī)系統(tǒng)里面的高頻電路應(yīng)就近多點(diǎn)接地;低頻電路應(yīng)一點(diǎn)接地。交流地和信號(hào)地不能共用。
1.5單片機(jī)系統(tǒng)印刷電路板的抗干擾設(shè)計(jì)
在單片機(jī)系統(tǒng)中,印制電路板設(shè)計(jì)的好壞直接影響著系統(tǒng)的抗干擾性能,關(guān)系到系統(tǒng)運(yùn)行的穩(wěn)定性與可靠性。在印制電路板設(shè)計(jì)過程中應(yīng)遵循:控制噪聲源、減小噪聲的傳播與耦合、降低噪聲敏感電路的噪聲敏感度三大原則。印刷電路板設(shè)計(jì)時(shí)應(yīng)該注意以下幾點(diǎn):
電路板的大小要適中。PCB尺寸太大,印制線路長(zhǎng),阻抗增加,抗噪聲能力下降;尺寸過小,則散熱不好,且鄰近線路容易相互干擾。
對(duì)于電路板的電源線應(yīng)根據(jù)印制電路板電流的大小,盡量加粗電源線寬度,減少環(huán)路電阻。同時(shí)使電源線、地線的走向和數(shù)據(jù)傳遞的方向一致,這樣有助于增強(qiáng)抗噪聲能力。
單片機(jī)系統(tǒng)印刷電路板的數(shù)字地與模擬地分開。若線路板上既有邏輯電路又有線性電路,應(yīng)使它們盡量分開。低頻電路的地應(yīng)盡量采用單點(diǎn)并聯(lián)接地,實(shí)際布線有困難時(shí)可部分串聯(lián)后再并聯(lián)接地。高頻電路宜采用多點(diǎn)串聯(lián)接地,地線應(yīng)短而粗,高頻元件周圍盡量用柵格狀大面積敷銅。印刷電路板的地線加粗,使它能通過三倍于印制板上的允許電流。如有可能,接地線應(yīng)在2~3mm以上。endprint
單片機(jī)的印制電路板設(shè)計(jì)中要注意合理分區(qū)。模擬電路區(qū)(易受干擾)、數(shù)字電路區(qū)(即容易被干擾又產(chǎn)生干擾)、功率驅(qū)動(dòng)區(qū)(干擾源)要適當(dāng)分區(qū),減少相互耦合干擾。
印刷板按單點(diǎn)接地原則供電。三個(gè)區(qū)域的電源線、地線由該點(diǎn)分三路引出。噪聲元件與非噪聲元件要離得遠(yuǎn)一些。
合理配置去耦電容。直流電源輸入端跨接10~100uf的電解電容器;原則上每個(gè)集成電路芯片的VCC引腳都應(yīng)布置一個(gè)0.01uF陶瓷電容,如遇印制板空隙不夠,可每4~8個(gè)芯片布置一個(gè)1~10uF的鉭電容;對(duì)于抗噪能力弱、關(guān)斷時(shí)電源變化大的器件,如RAM、ROM存儲(chǔ)器件,應(yīng)在芯片的電源線和地線之間直接接入退藕電容;電容引線不能太長(zhǎng),尤其是高頻旁路電容不能有引線。
時(shí)鐘的振蕩電路、特殊高速邏輯電路部分可以用地線圍起來。石英晶體振蕩器外殼要接地,時(shí)鐘線要盡量短。石英振蕩器的下面和噪聲敏感器件的下面要加大接地的面積,而不應(yīng)該走其他信號(hào)線。時(shí)鐘發(fā)生電路要盡量靠近用到該時(shí)鐘的器件。
選擇時(shí)鐘頻率低的單片機(jī)及外部時(shí)鐘部件,元件的選擇盡量采用低速器件。
盡量不要使用IC插座,把IC直接焊在印刷板上,因?yàn)镮C座有較大的分布電容。
單片機(jī)不用的I/O端口要定義成輸出口,數(shù)字電路中,閑置不用的門電路輸入端不能懸空,運(yùn)算放大器中,閑置不用的正輸入端接地,閑置的負(fù)輸入端與輸出端連接。
I/O驅(qū)動(dòng)器件、功率放大器件要盡量靠近印刷板的邊,靠近引出接插件。
使用45°的折線布線,不要使用90°折線,以減小高頻信號(hào)的發(fā)射。時(shí)鐘線垂直于I/O線,必要時(shí)要遠(yuǎn)離I/O線。
總線的始端和終端要配置合適的上拉電阻,以提高高電平噪聲容限,增加存儲(chǔ)器端口在高阻狀態(tài)下抗干擾能力和削弱反射波干擾。三總線與其他擴(kuò)展板相連接時(shí),要通過三態(tài)緩沖門后再連接。這可以有效防止外界電磁干擾,改善波形和削弱反射干擾。
盡量采用多層板,單面板、雙面板,電源線、地線要盡量的粗。信號(hào)線的過孔要盡量少。
對(duì)進(jìn)入電路板的信號(hào)源及從高噪聲區(qū)來的信號(hào)要加濾波。繼電器線圈處要采取抑制干擾措施,例如增加加續(xù)流二極管、RC抑制電路等。
弱信號(hào)的引出線、高頻、大功率引出電纜要采用屏蔽電纜(線)。
2單片機(jī)軟件抗干擾設(shè)計(jì)
單片機(jī)應(yīng)用系統(tǒng)的抗干擾不可能完全依靠硬件解決,特別是當(dāng)硬件系統(tǒng)確定以后,軟件抗干擾設(shè)計(jì)是防止和消除應(yīng)用系統(tǒng)故障的有效措施。
2.1單片機(jī)軟件陷阱設(shè)計(jì)
在單片機(jī)的運(yùn)行過程當(dāng)中,當(dāng)處于亂飛運(yùn)行狀態(tài)下的程序進(jìn)入非程序區(qū)域,則會(huì)導(dǎo)致系統(tǒng)冗余指令失去運(yùn)行價(jià)值。在此種情況下,為保障單片機(jī)運(yùn)行的穩(wěn)定與可靠,就應(yīng)當(dāng)通過軟件陷阱的方式,對(duì)亂飛程序進(jìn)行攔截。在程序攔截的基礎(chǔ)之上,將其引導(dǎo)至指定位置,并實(shí)現(xiàn)對(duì)錯(cuò)誤信息的處理,從而及時(shí)恢復(fù)程序運(yùn)行的可
靠性。
一方面,針對(duì)未使用中斷向量區(qū)而言,以當(dāng)前專用設(shè)備控制領(lǐng)域中所廣泛使用的MCS-51單片機(jī)裝置而言,與之相對(duì)應(yīng)的中斷向量區(qū)表現(xiàn)為0003H~002FH區(qū)間。在單片機(jī)系統(tǒng)的運(yùn)行過程當(dāng)中,若部分受到干擾影響而開放,則可通過引入軟件陷阱的方式,對(duì)錯(cuò)誤進(jìn)行捕捉并執(zhí)行中斷處理。還需要特別注意的一點(diǎn)是,在對(duì)軟件陷阱進(jìn)行設(shè)計(jì)的過程當(dāng)中,首先應(yīng)當(dāng)對(duì)中斷加以開放,將軟件陷阱安排在中斷服務(wù)程序當(dāng)中。在此基礎(chǔ)之上,將程序引導(dǎo)至處理錯(cuò)誤的程序入口地址或者是復(fù)位入口地址位置。從軟件設(shè)計(jì)的角度上來說,在對(duì)復(fù)位入口地址進(jìn)行設(shè)計(jì)的過程當(dāng)中,軟件陷阱的設(shè)計(jì)形式多表現(xiàn)為:
NOP
NOP
LJMP 000H;
與此同時(shí),也可借助于中斷源,在終端服務(wù)程序當(dāng)中,增設(shè)相關(guān)的軟件陷阱(定時(shí)溢出中斷TO即當(dāng)中的典型表現(xiàn)形式之一),具體的設(shè)計(jì)方案如下所示:
ORG 000BH;(TO溢出中斷入口地址)
NOP
NOP
POP ACC
POP ACC;(PC壓入堆棧錯(cuò)誤斷點(diǎn)丟棄處理)
PUSH 00H
PUSH 00H;(斷點(diǎn)地址0000H送入棧頂)
RET1
另一方面,針對(duì)未使用的EPROM區(qū)域而言,在該區(qū)域當(dāng)中所設(shè)置的軟件陷阱指令形式典型表現(xiàn)為“LJMP0000H”,與之相對(duì)應(yīng)的機(jī)器碼操作指令表現(xiàn)為“0000020000”?;谝陨戏治隹芍?,在單片機(jī)系統(tǒng)的運(yùn)行過程當(dāng)中,對(duì)于沒有使用完成的基于EPROM芯片空間而言,填充操作代碼可表現(xiàn)為“020000”。在該設(shè)計(jì)方案下,若程序飛入該區(qū)間,則可迅速對(duì)其進(jìn)行相應(yīng),并引導(dǎo)其轉(zhuǎn)入正軌運(yùn)行。
2.2單片機(jī)指令冗余設(shè)計(jì)
指令冗余設(shè)計(jì)的核心意義在于:在單片機(jī)系統(tǒng)運(yùn)行關(guān)鍵程序中,人為地插入一定的單字節(jié)指令,或?qū)τ行巫止?jié)指令進(jìn)行重寫處理。通過指令冗余模塊的應(yīng)用,能夠?qū)⑻幱趤y飛狀態(tài)下的程序恢復(fù)至穩(wěn)定的運(yùn)行狀態(tài)當(dāng)中。為了確保指令冗余模塊運(yùn)行的穩(wěn)定,需要以PC指針面向程序運(yùn)行區(qū)作為基本前提。在單片機(jī)系統(tǒng)的正常運(yùn)行過程當(dāng)中,中央處理器首先提取相關(guān)的操作碼信息,并對(duì)操作數(shù)指標(biāo)進(jìn)行提取,在指令計(jì)數(shù)器PC因干擾影響而產(chǎn)生運(yùn)行故障的情況下,程序可能脫離預(yù)計(jì)軌道,導(dǎo)致亂飛。為避免該問題,需要通過插入NOP指令的方式,滿足指令冗余設(shè)計(jì)的具體要求。從這一角度上來說,在對(duì)于程序流向控制起決定作用(包括RET、AcAuJ、以及LJMP等多種類型在內(nèi))或?qū)ο到y(tǒng)工作狀態(tài)起重要作用(以sElB為典型代表)的指令后面。插入兩條NOP指令或重復(fù)寫入該指令,也可迅速將亂飛程序納入正軌,確保這些重要指令的正確執(zhí)行。
2.3采用軟件濾波算法
對(duì)于由輸入信號(hào)干擾而引起的輸出控制錯(cuò)誤、數(shù)據(jù)采集錯(cuò)誤等可采用軟件濾波算法,可濾掉大部分錯(cuò)誤。常用的軟件濾波方法有算術(shù)平均值法、比較舍取法、中值法、一階遞推數(shù)字濾波法等。
3結(jié)語(yǔ)
本文在單片機(jī)抗干擾設(shè)計(jì)中引入基于前瞻性的設(shè)計(jì)觀念,分別從單片機(jī)硬件和單片機(jī)軟件抗干擾設(shè)計(jì)這兩個(gè)方面入手,針對(duì)單片機(jī)應(yīng)用的前瞻性抗干擾設(shè)計(jì)要點(diǎn)展開了詳細(xì)分析與探討,希望能夠進(jìn)一步提高單片機(jī)應(yīng)用系統(tǒng)可靠性。
參考文獻(xiàn)
[1]?;張曄,王玉民.單片機(jī)應(yīng)用技術(shù)[M].北京:高等?;教育出版社.
[2]?;曲輝,郝福兵,張海軍,等.測(cè)控系統(tǒng)中單片機(jī)?;抗干擾技術(shù)[J].內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)?;版),2008,29(3):191-193.
[3]?;邱會(huì)貴.PCB板設(shè)計(jì)原則和抗干擾措施[J].科學(xué)與?;財(cái)富,2011,(8):177-178.
[4]?;郭一軍,張遷.基于AT89S52單片機(jī)智能儀器的抗?;干擾技術(shù)研究[J].自動(dòng)化儀表,2009,30:63-65.
[5]?;徐慧君,李亞芬,王普.單片機(jī)的抗干擾技術(shù)[J].?;電子產(chǎn)品世界(嵌入式系統(tǒng)),2004,2:46-51.
[6]?;于彭波.電子式電能表的硬件抗干擾設(shè)計(jì)[J].儀?;表技術(shù),2008,8:60-64.endprint
單片機(jī)的印制電路板設(shè)計(jì)中要注意合理分區(qū)。模擬電路區(qū)(易受干擾)、數(shù)字電路區(qū)(即容易被干擾又產(chǎn)生干擾)、功率驅(qū)動(dòng)區(qū)(干擾源)要適當(dāng)分區(qū),減少相互耦合干擾。
印刷板按單點(diǎn)接地原則供電。三個(gè)區(qū)域的電源線、地線由該點(diǎn)分三路引出。噪聲元件與非噪聲元件要離得遠(yuǎn)一些。
合理配置去耦電容。直流電源輸入端跨接10~100uf的電解電容器;原則上每個(gè)集成電路芯片的VCC引腳都應(yīng)布置一個(gè)0.01uF陶瓷電容,如遇印制板空隙不夠,可每4~8個(gè)芯片布置一個(gè)1~10uF的鉭電容;對(duì)于抗噪能力弱、關(guān)斷時(shí)電源變化大的器件,如RAM、ROM存儲(chǔ)器件,應(yīng)在芯片的電源線和地線之間直接接入退藕電容;電容引線不能太長(zhǎng),尤其是高頻旁路電容不能有引線。
時(shí)鐘的振蕩電路、特殊高速邏輯電路部分可以用地線圍起來。石英晶體振蕩器外殼要接地,時(shí)鐘線要盡量短。石英振蕩器的下面和噪聲敏感器件的下面要加大接地的面積,而不應(yīng)該走其他信號(hào)線。時(shí)鐘發(fā)生電路要盡量靠近用到該時(shí)鐘的器件。
選擇時(shí)鐘頻率低的單片機(jī)及外部時(shí)鐘部件,元件的選擇盡量采用低速器件。
盡量不要使用IC插座,把IC直接焊在印刷板上,因?yàn)镮C座有較大的分布電容。
單片機(jī)不用的I/O端口要定義成輸出口,數(shù)字電路中,閑置不用的門電路輸入端不能懸空,運(yùn)算放大器中,閑置不用的正輸入端接地,閑置的負(fù)輸入端與輸出端連接。
I/O驅(qū)動(dòng)器件、功率放大器件要盡量靠近印刷板的邊,靠近引出接插件。
使用45°的折線布線,不要使用90°折線,以減小高頻信號(hào)的發(fā)射。時(shí)鐘線垂直于I/O線,必要時(shí)要遠(yuǎn)離I/O線。
總線的始端和終端要配置合適的上拉電阻,以提高高電平噪聲容限,增加存儲(chǔ)器端口在高阻狀態(tài)下抗干擾能力和削弱反射波干擾。三總線與其他擴(kuò)展板相連接時(shí),要通過三態(tài)緩沖門后再連接。這可以有效防止外界電磁干擾,改善波形和削弱反射干擾。
盡量采用多層板,單面板、雙面板,電源線、地線要盡量的粗。信號(hào)線的過孔要盡量少。
對(duì)進(jìn)入電路板的信號(hào)源及從高噪聲區(qū)來的信號(hào)要加濾波。繼電器線圈處要采取抑制干擾措施,例如增加加續(xù)流二極管、RC抑制電路等。
弱信號(hào)的引出線、高頻、大功率引出電纜要采用屏蔽電纜(線)。
2單片機(jī)軟件抗干擾設(shè)計(jì)
單片機(jī)應(yīng)用系統(tǒng)的抗干擾不可能完全依靠硬件解決,特別是當(dāng)硬件系統(tǒng)確定以后,軟件抗干擾設(shè)計(jì)是防止和消除應(yīng)用系統(tǒng)故障的有效措施。
2.1單片機(jī)軟件陷阱設(shè)計(jì)
在單片機(jī)的運(yùn)行過程當(dāng)中,當(dāng)處于亂飛運(yùn)行狀態(tài)下的程序進(jìn)入非程序區(qū)域,則會(huì)導(dǎo)致系統(tǒng)冗余指令失去運(yùn)行價(jià)值。在此種情況下,為保障單片機(jī)運(yùn)行的穩(wěn)定與可靠,就應(yīng)當(dāng)通過軟件陷阱的方式,對(duì)亂飛程序進(jìn)行攔截。在程序攔截的基礎(chǔ)之上,將其引導(dǎo)至指定位置,并實(shí)現(xiàn)對(duì)錯(cuò)誤信息的處理,從而及時(shí)恢復(fù)程序運(yùn)行的可
靠性。
一方面,針對(duì)未使用中斷向量區(qū)而言,以當(dāng)前專用設(shè)備控制領(lǐng)域中所廣泛使用的MCS-51單片機(jī)裝置而言,與之相對(duì)應(yīng)的中斷向量區(qū)表現(xiàn)為0003H~002FH區(qū)間。在單片機(jī)系統(tǒng)的運(yùn)行過程當(dāng)中,若部分受到干擾影響而開放,則可通過引入軟件陷阱的方式,對(duì)錯(cuò)誤進(jìn)行捕捉并執(zhí)行中斷處理。還需要特別注意的一點(diǎn)是,在對(duì)軟件陷阱進(jìn)行設(shè)計(jì)的過程當(dāng)中,首先應(yīng)當(dāng)對(duì)中斷加以開放,將軟件陷阱安排在中斷服務(wù)程序當(dāng)中。在此基礎(chǔ)之上,將程序引導(dǎo)至處理錯(cuò)誤的程序入口地址或者是復(fù)位入口地址位置。從軟件設(shè)計(jì)的角度上來說,在對(duì)復(fù)位入口地址進(jìn)行設(shè)計(jì)的過程當(dāng)中,軟件陷阱的設(shè)計(jì)形式多表現(xiàn)為:
NOP
NOP
LJMP 000H;
與此同時(shí),也可借助于中斷源,在終端服務(wù)程序當(dāng)中,增設(shè)相關(guān)的軟件陷阱(定時(shí)溢出中斷TO即當(dāng)中的典型表現(xiàn)形式之一),具體的設(shè)計(jì)方案如下所示:
ORG 000BH;(TO溢出中斷入口地址)
NOP
NOP
POP ACC
POP ACC;(PC壓入堆棧錯(cuò)誤斷點(diǎn)丟棄處理)
PUSH 00H
PUSH 00H;(斷點(diǎn)地址0000H送入棧頂)
RET1
另一方面,針對(duì)未使用的EPROM區(qū)域而言,在該區(qū)域當(dāng)中所設(shè)置的軟件陷阱指令形式典型表現(xiàn)為“LJMP0000H”,與之相對(duì)應(yīng)的機(jī)器碼操作指令表現(xiàn)為“0000020000”?;谝陨戏治隹芍?,在單片機(jī)系統(tǒng)的運(yùn)行過程當(dāng)中,對(duì)于沒有使用完成的基于EPROM芯片空間而言,填充操作代碼可表現(xiàn)為“020000”。在該設(shè)計(jì)方案下,若程序飛入該區(qū)間,則可迅速對(duì)其進(jìn)行相應(yīng),并引導(dǎo)其轉(zhuǎn)入正軌運(yùn)行。
2.2單片機(jī)指令冗余設(shè)計(jì)
指令冗余設(shè)計(jì)的核心意義在于:在單片機(jī)系統(tǒng)運(yùn)行關(guān)鍵程序中,人為地插入一定的單字節(jié)指令,或?qū)τ行巫止?jié)指令進(jìn)行重寫處理。通過指令冗余模塊的應(yīng)用,能夠?qū)⑻幱趤y飛狀態(tài)下的程序恢復(fù)至穩(wěn)定的運(yùn)行狀態(tài)當(dāng)中。為了確保指令冗余模塊運(yùn)行的穩(wěn)定,需要以PC指針面向程序運(yùn)行區(qū)作為基本前提。在單片機(jī)系統(tǒng)的正常運(yùn)行過程當(dāng)中,中央處理器首先提取相關(guān)的操作碼信息,并對(duì)操作數(shù)指標(biāo)進(jìn)行提取,在指令計(jì)數(shù)器PC因干擾影響而產(chǎn)生運(yùn)行故障的情況下,程序可能脫離預(yù)計(jì)軌道,導(dǎo)致亂飛。為避免該問題,需要通過插入NOP指令的方式,滿足指令冗余設(shè)計(jì)的具體要求。從這一角度上來說,在對(duì)于程序流向控制起決定作用(包括RET、AcAuJ、以及LJMP等多種類型在內(nèi))或?qū)ο到y(tǒng)工作狀態(tài)起重要作用(以sElB為典型代表)的指令后面。插入兩條NOP指令或重復(fù)寫入該指令,也可迅速將亂飛程序納入正軌,確保這些重要指令的正確執(zhí)行。
2.3采用軟件濾波算法
對(duì)于由輸入信號(hào)干擾而引起的輸出控制錯(cuò)誤、數(shù)據(jù)采集錯(cuò)誤等可采用軟件濾波算法,可濾掉大部分錯(cuò)誤。常用的軟件濾波方法有算術(shù)平均值法、比較舍取法、中值法、一階遞推數(shù)字濾波法等。
3結(jié)語(yǔ)
本文在單片機(jī)抗干擾設(shè)計(jì)中引入基于前瞻性的設(shè)計(jì)觀念,分別從單片機(jī)硬件和單片機(jī)軟件抗干擾設(shè)計(jì)這兩個(gè)方面入手,針對(duì)單片機(jī)應(yīng)用的前瞻性抗干擾設(shè)計(jì)要點(diǎn)展開了詳細(xì)分析與探討,希望能夠進(jìn)一步提高單片機(jī)應(yīng)用系統(tǒng)可靠性。
參考文獻(xiàn)
[1]?;張曄,王玉民.單片機(jī)應(yīng)用技術(shù)[M].北京:高等?;教育出版社.
[2]?;曲輝,郝福兵,張海軍,等.測(cè)控系統(tǒng)中單片機(jī)?;抗干擾技術(shù)[J].內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)?;版),2008,29(3):191-193.
[3]?;邱會(huì)貴.PCB板設(shè)計(jì)原則和抗干擾措施[J].科學(xué)與?;財(cái)富,2011,(8):177-178.
[4]?;郭一軍,張遷.基于AT89S52單片機(jī)智能儀器的抗?;干擾技術(shù)研究[J].自動(dòng)化儀表,2009,30:63-65.
[5]?;徐慧君,李亞芬,王普.單片機(jī)的抗干擾技術(shù)[J].?;電子產(chǎn)品世界(嵌入式系統(tǒng)),2004,2:46-51.
[6]?;于彭波.電子式電能表的硬件抗干擾設(shè)計(jì)[J].儀?;表技術(shù),2008,8:60-64.endprint
單片機(jī)的印制電路板設(shè)計(jì)中要注意合理分區(qū)。模擬電路區(qū)(易受干擾)、數(shù)字電路區(qū)(即容易被干擾又產(chǎn)生干擾)、功率驅(qū)動(dòng)區(qū)(干擾源)要適當(dāng)分區(qū),減少相互耦合干擾。
印刷板按單點(diǎn)接地原則供電。三個(gè)區(qū)域的電源線、地線由該點(diǎn)分三路引出。噪聲元件與非噪聲元件要離得遠(yuǎn)一些。
合理配置去耦電容。直流電源輸入端跨接10~100uf的電解電容器;原則上每個(gè)集成電路芯片的VCC引腳都應(yīng)布置一個(gè)0.01uF陶瓷電容,如遇印制板空隙不夠,可每4~8個(gè)芯片布置一個(gè)1~10uF的鉭電容;對(duì)于抗噪能力弱、關(guān)斷時(shí)電源變化大的器件,如RAM、ROM存儲(chǔ)器件,應(yīng)在芯片的電源線和地線之間直接接入退藕電容;電容引線不能太長(zhǎng),尤其是高頻旁路電容不能有引線。
時(shí)鐘的振蕩電路、特殊高速邏輯電路部分可以用地線圍起來。石英晶體振蕩器外殼要接地,時(shí)鐘線要盡量短。石英振蕩器的下面和噪聲敏感器件的下面要加大接地的面積,而不應(yīng)該走其他信號(hào)線。時(shí)鐘發(fā)生電路要盡量靠近用到該時(shí)鐘的器件。
選擇時(shí)鐘頻率低的單片機(jī)及外部時(shí)鐘部件,元件的選擇盡量采用低速器件。
盡量不要使用IC插座,把IC直接焊在印刷板上,因?yàn)镮C座有較大的分布電容。
單片機(jī)不用的I/O端口要定義成輸出口,數(shù)字電路中,閑置不用的門電路輸入端不能懸空,運(yùn)算放大器中,閑置不用的正輸入端接地,閑置的負(fù)輸入端與輸出端連接。
I/O驅(qū)動(dòng)器件、功率放大器件要盡量靠近印刷板的邊,靠近引出接插件。
使用45°的折線布線,不要使用90°折線,以減小高頻信號(hào)的發(fā)射。時(shí)鐘線垂直于I/O線,必要時(shí)要遠(yuǎn)離I/O線。
總線的始端和終端要配置合適的上拉電阻,以提高高電平噪聲容限,增加存儲(chǔ)器端口在高阻狀態(tài)下抗干擾能力和削弱反射波干擾。三總線與其他擴(kuò)展板相連接時(shí),要通過三態(tài)緩沖門后再連接。這可以有效防止外界電磁干擾,改善波形和削弱反射干擾。
盡量采用多層板,單面板、雙面板,電源線、地線要盡量的粗。信號(hào)線的過孔要盡量少。
對(duì)進(jìn)入電路板的信號(hào)源及從高噪聲區(qū)來的信號(hào)要加濾波。繼電器線圈處要采取抑制干擾措施,例如增加加續(xù)流二極管、RC抑制電路等。
弱信號(hào)的引出線、高頻、大功率引出電纜要采用屏蔽電纜(線)。
2單片機(jī)軟件抗干擾設(shè)計(jì)
單片機(jī)應(yīng)用系統(tǒng)的抗干擾不可能完全依靠硬件解決,特別是當(dāng)硬件系統(tǒng)確定以后,軟件抗干擾設(shè)計(jì)是防止和消除應(yīng)用系統(tǒng)故障的有效措施。
2.1單片機(jī)軟件陷阱設(shè)計(jì)
在單片機(jī)的運(yùn)行過程當(dāng)中,當(dāng)處于亂飛運(yùn)行狀態(tài)下的程序進(jìn)入非程序區(qū)域,則會(huì)導(dǎo)致系統(tǒng)冗余指令失去運(yùn)行價(jià)值。在此種情況下,為保障單片機(jī)運(yùn)行的穩(wěn)定與可靠,就應(yīng)當(dāng)通過軟件陷阱的方式,對(duì)亂飛程序進(jìn)行攔截。在程序攔截的基礎(chǔ)之上,將其引導(dǎo)至指定位置,并實(shí)現(xiàn)對(duì)錯(cuò)誤信息的處理,從而及時(shí)恢復(fù)程序運(yùn)行的可
靠性。
一方面,針對(duì)未使用中斷向量區(qū)而言,以當(dāng)前專用設(shè)備控制領(lǐng)域中所廣泛使用的MCS-51單片機(jī)裝置而言,與之相對(duì)應(yīng)的中斷向量區(qū)表現(xiàn)為0003H~002FH區(qū)間。在單片機(jī)系統(tǒng)的運(yùn)行過程當(dāng)中,若部分受到干擾影響而開放,則可通過引入軟件陷阱的方式,對(duì)錯(cuò)誤進(jìn)行捕捉并執(zhí)行中斷處理。還需要特別注意的一點(diǎn)是,在對(duì)軟件陷阱進(jìn)行設(shè)計(jì)的過程當(dāng)中,首先應(yīng)當(dāng)對(duì)中斷加以開放,將軟件陷阱安排在中斷服務(wù)程序當(dāng)中。在此基礎(chǔ)之上,將程序引導(dǎo)至處理錯(cuò)誤的程序入口地址或者是復(fù)位入口地址位置。從軟件設(shè)計(jì)的角度上來說,在對(duì)復(fù)位入口地址進(jìn)行設(shè)計(jì)的過程當(dāng)中,軟件陷阱的設(shè)計(jì)形式多表現(xiàn)為:
NOP
NOP
LJMP 000H;
與此同時(shí),也可借助于中斷源,在終端服務(wù)程序當(dāng)中,增設(shè)相關(guān)的軟件陷阱(定時(shí)溢出中斷TO即當(dāng)中的典型表現(xiàn)形式之一),具體的設(shè)計(jì)方案如下所示:
ORG 000BH;(TO溢出中斷入口地址)
NOP
NOP
POP ACC
POP ACC;(PC壓入堆棧錯(cuò)誤斷點(diǎn)丟棄處理)
PUSH 00H
PUSH 00H;(斷點(diǎn)地址0000H送入棧頂)
RET1
另一方面,針對(duì)未使用的EPROM區(qū)域而言,在該區(qū)域當(dāng)中所設(shè)置的軟件陷阱指令形式典型表現(xiàn)為“LJMP0000H”,與之相對(duì)應(yīng)的機(jī)器碼操作指令表現(xiàn)為“0000020000”?;谝陨戏治隹芍?,在單片機(jī)系統(tǒng)的運(yùn)行過程當(dāng)中,對(duì)于沒有使用完成的基于EPROM芯片空間而言,填充操作代碼可表現(xiàn)為“020000”。在該設(shè)計(jì)方案下,若程序飛入該區(qū)間,則可迅速對(duì)其進(jìn)行相應(yīng),并引導(dǎo)其轉(zhuǎn)入正軌運(yùn)行。
2.2單片機(jī)指令冗余設(shè)計(jì)
指令冗余設(shè)計(jì)的核心意義在于:在單片機(jī)系統(tǒng)運(yùn)行關(guān)鍵程序中,人為地插入一定的單字節(jié)指令,或?qū)τ行巫止?jié)指令進(jìn)行重寫處理。通過指令冗余模塊的應(yīng)用,能夠?qū)⑻幱趤y飛狀態(tài)下的程序恢復(fù)至穩(wěn)定的運(yùn)行狀態(tài)當(dāng)中。為了確保指令冗余模塊運(yùn)行的穩(wěn)定,需要以PC指針面向程序運(yùn)行區(qū)作為基本前提。在單片機(jī)系統(tǒng)的正常運(yùn)行過程當(dāng)中,中央處理器首先提取相關(guān)的操作碼信息,并對(duì)操作數(shù)指標(biāo)進(jìn)行提取,在指令計(jì)數(shù)器PC因干擾影響而產(chǎn)生運(yùn)行故障的情況下,程序可能脫離預(yù)計(jì)軌道,導(dǎo)致亂飛。為避免該問題,需要通過插入NOP指令的方式,滿足指令冗余設(shè)計(jì)的具體要求。從這一角度上來說,在對(duì)于程序流向控制起決定作用(包括RET、AcAuJ、以及LJMP等多種類型在內(nèi))或?qū)ο到y(tǒng)工作狀態(tài)起重要作用(以sElB為典型代表)的指令后面。插入兩條NOP指令或重復(fù)寫入該指令,也可迅速將亂飛程序納入正軌,確保這些重要指令的正確執(zhí)行。
2.3采用軟件濾波算法
對(duì)于由輸入信號(hào)干擾而引起的輸出控制錯(cuò)誤、數(shù)據(jù)采集錯(cuò)誤等可采用軟件濾波算法,可濾掉大部分錯(cuò)誤。常用的軟件濾波方法有算術(shù)平均值法、比較舍取法、中值法、一階遞推數(shù)字濾波法等。
3結(jié)語(yǔ)
本文在單片機(jī)抗干擾設(shè)計(jì)中引入基于前瞻性的設(shè)計(jì)觀念,分別從單片機(jī)硬件和單片機(jī)軟件抗干擾設(shè)計(jì)這兩個(gè)方面入手,針對(duì)單片機(jī)應(yīng)用的前瞻性抗干擾設(shè)計(jì)要點(diǎn)展開了詳細(xì)分析與探討,希望能夠進(jìn)一步提高單片機(jī)應(yīng)用系統(tǒng)可靠性。
參考文獻(xiàn)
[1]?;張曄,王玉民.單片機(jī)應(yīng)用技術(shù)[M].北京:高等?;教育出版社.
[2]?;曲輝,郝福兵,張海軍,等.測(cè)控系統(tǒng)中單片機(jī)?;抗干擾技術(shù)[J].內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)?;版),2008,29(3):191-193.
[3]?;邱會(huì)貴.PCB板設(shè)計(jì)原則和抗干擾措施[J].科學(xué)與?;財(cái)富,2011,(8):177-178.
[4]?;郭一軍,張遷.基于AT89S52單片機(jī)智能儀器的抗?;干擾技術(shù)研究[J].自動(dòng)化儀表,2009,30:63-65.
[5]?;徐慧君,李亞芬,王普.單片機(jī)的抗干擾技術(shù)[J].?;電子產(chǎn)品世界(嵌入式系統(tǒng)),2004,2:46-51.
[6]?;于彭波.電子式電能表的硬件抗干擾設(shè)計(jì)[J].儀?;表技術(shù),2008,8:60-64.endprint