一、單片機(jī)開發(fā)過程中硬件調(diào)試技巧
在單片機(jī)開發(fā)過程中,從硬件設(shè)計(jì)到軟件設(shè)計(jì)幾乎是開發(fā)者針對本系統(tǒng)特點(diǎn)親自完成的。這樣雖然可以降低系統(tǒng)成本,提高系統(tǒng)的適應(yīng)性,但是每個(gè)系統(tǒng)的調(diào)試占去了總開發(fā)時(shí)間的2/3,可見調(diào)試的工作量比較大。單片機(jī)系統(tǒng)的硬件調(diào)試和軟件調(diào)試是不能分開的,許多硬件錯(cuò)誤是在軟件調(diào)試中被發(fā)現(xiàn)和糾正的。但通常是先排除明顯的硬件故障以后,再和軟件結(jié)合起來調(diào)試以進(jìn)一步排除故障??梢娪布恼{(diào)試是基礎(chǔ),如果硬件調(diào)試不通過,軟件設(shè)計(jì)則是無從做起。本文結(jié)合作者在單片機(jī)開發(fā)過程中體會,討論硬件調(diào)試的技巧。
當(dāng)硬件設(shè)計(jì)從布線到焊接安裝完成之后,就開始進(jìn)入硬件調(diào)試階段,調(diào)試大體分為以下幾步。
1 硬件靜態(tài)的調(diào)試
1.1排除邏輯故障
這類故障往往由于設(shè)計(jì)和加工制板過程中工藝性錯(cuò)誤所造成的。主要包括錯(cuò)線、開路、短路。排除的方法是首先將加工的印制板認(rèn)真對照原理圖,看兩者是否一致。應(yīng)特別注意電源系統(tǒng)檢查,以防止電源短路和極性錯(cuò)誤,并重點(diǎn)檢查系統(tǒng)總線(地址總線、數(shù)據(jù)總線和控制總線)是否存在相互之間短路或與其它信號線路短路。必要時(shí)利用數(shù)字萬用表的短路測試功能,可以縮短排錯(cuò)時(shí)間。
1.2排除元器件失效
造成這類錯(cuò)誤的原因有兩個(gè):一個(gè)是元器件買來時(shí)就已壞了;另一個(gè)是由于安裝錯(cuò)誤,造成器件燒壞??梢圆扇z查元器件與設(shè)計(jì)要求的型號、規(guī)格和安裝是否一致。在保證安裝無誤后,用替換方法排除錯(cuò)誤。
1.3排除電源故障
在通電前,一定要檢查電源電壓的幅值和極性,否則很容易造成集成塊損壞。加電后檢查各插件上引腳的電位,一般先檢查VCC與GND之間電位,若在5V~4.8V之間屬正常。若有高壓,聯(lián)機(jī)仿真器調(diào)試時(shí),將會損壞仿真器等,有時(shí)會使應(yīng)用系統(tǒng)中的集成塊發(fā)熱損壞。
2 聯(lián)機(jī)仿真調(diào)試
聯(lián)機(jī)仿真必須借助仿真開發(fā)裝置、示波器、萬用表等工具。這些工具是單片機(jī)開發(fā)的最基本工具。
信號線是聯(lián)絡(luò)8031和外部器件的紐帶,如果信號線連結(jié)錯(cuò)誤或時(shí)序不對,那么都會造成對外圍電路讀寫錯(cuò)誤。51系列單片機(jī)的信號線大體分為讀、寫信號線、片選信號線、時(shí)鐘信號線、外部程序存貯器讀選通信號(PSEN)、地址鎖存信號(ALE)、復(fù)位信號等幾大類。這些信號大多屬于脈沖信號,對于脈沖信號借助示波器(這里指通用示波器)用常規(guī)方法很難觀測到,必須采取一定措施才能觀測到。應(yīng)該利用軟件編程的方法來實(shí)現(xiàn)。例如對片選信號,運(yùn)行下面的小程序就可以檢測出譯碼片選信號是否正常。
MAIN:MOVDPTR,#DPTR
;將地址送入DPTR
MOVXA,@DPTR
;將譯碼地址外RAM中的內(nèi)容送入ACC
NOP;適當(dāng)延時(shí)
SJMPMAIN;循環(huán)
執(zhí)行程序后,就可以利用示波器觀察芯片的片選信號引出腳(用示波器掃描時(shí)間為1μs/每格檔),這時(shí)應(yīng)看到周期為數(shù)微秒的負(fù)脈沖波形,若看不到則說明譯碼信號有錯(cuò)誤。
對于電平類信號,觀測起來就比較容易。例如對復(fù)位信號觀測就可以直接利用示波器,當(dāng)按下復(fù)位鍵時(shí),可以看到8031的復(fù)位引腳將變?yōu)楦唠娖?一旦松開,電平將變低。
總而言之,對于脈沖觸發(fā)類的信號我們要用軟件來配合,并要把程序編為死循環(huán),再利用示波器觀察;對于電平類觸發(fā)信號,可以直接用示波器觀察。
下面結(jié)合在自動(dòng)配料控制系統(tǒng)中鍵盤、顯示部分的調(diào)試過程來加以說明。本系統(tǒng)中的鍵盤、顯示部分都是由并行口芯片8155擴(kuò)展而成的。8155屬于可編程器件,因而很難劃分硬件和軟件,往往在調(diào)試中即使電路安裝正確沒有一定的指令去指揮它工作,也是無法發(fā)現(xiàn)硬件的故障。因此要使用一些簡單的調(diào)試程序來確定硬件的組裝是否正確、功能是否完整。在本系統(tǒng)中采取了先對顯示器調(diào)試,再對鍵盤調(diào)試。
(1)顯示器部分調(diào)試為了使調(diào)試順利進(jìn)行,首先將8155與LED顯示分離,這樣就可以用靜態(tài)方法先測試LED顯示,分別用規(guī)定的電平加至控制數(shù)碼管段和位顯示的引腳,看數(shù)碼管顯示是否與理論上一致。不一致,一般為LED顯示器接觸不良所致,必須找出故障,排除后再檢測8155電路工作是否正常。對8155應(yīng)進(jìn)行編程調(diào)試時(shí),分為兩個(gè)步驟:第一,對其進(jìn)行初始化(即寫入命令控制字,最好定義為輸出方式)后,分別向PA、PB、PC三個(gè)口送入#0FFH,這時(shí)可以利用萬用表測試各口的位電壓為3.8 V左右,若送入#00H,這時(shí)各口的位電壓應(yīng)為0.03 V;第二,將8155與LED結(jié)合起來,借助開發(fā)機(jī),通過編制程序(最好采用“8”字循環(huán)程序)進(jìn)行調(diào)試。若調(diào)試通過后,就可以編制應(yīng)用程序了。
(2)鍵盤調(diào)試一般顯示器調(diào)試通過后,鍵盤調(diào)試就比較簡單,完全可以借助于顯示器,利用程序進(jìn)行調(diào)試。利用開發(fā)裝置對程序進(jìn)行設(shè)置斷點(diǎn),通過斷點(diǎn)可以檢查程序在斷點(diǎn)前后的鍵值變化,這樣可知鍵盤工作是否正常。
以上討論了借助簡單工具對單片機(jī)硬件調(diào)試的方法,這些方法如果利用得好,就
可以大大縮短單片機(jī)的開發(fā)周期。
二、單片機(jī)破解的常用方法及應(yīng)對策略
?。薄∫?/p>
單片機(jī)(Microcontroller)一般都有內(nèi)部ROM/EEPROM/FLASH供用戶存放程序。為了防止未經(jīng)授權(quán)訪問或拷貝單片機(jī)的機(jī)內(nèi)程序,大部分單片機(jī)都帶有加密鎖定位或者加密字節(jié),以保護(hù)片內(nèi)程序。如果在編程時(shí)加密鎖定位被使能(鎖定),就無法用普通編程器直接讀取單片機(jī)內(nèi)的程序,這就是所謂拷貝保護(hù)或者說鎖定功能。事實(shí)上,這樣的保護(hù)措施很脆弱,很容易被破解。單片機(jī)攻擊者借助專用設(shè)備或者自制設(shè)備,利用單片機(jī)芯片設(shè)計(jì)上的漏洞或軟件缺陷,通過多種技術(shù)手段,就可以從芯片中提取關(guān)鍵信息,獲取單片機(jī)內(nèi)程序。因此,作為電子產(chǎn)品的設(shè)計(jì)工程師非常有必要了解當(dāng)前單片機(jī)攻擊的最新技術(shù),做到知己知彼,心中有數(shù),才能有效防止自己花費(fèi)大量金錢和時(shí)間辛辛苦苦設(shè)計(jì)出來的產(chǎn)品被人家一夜之間仿冒的事情發(fā)生。
2 單片機(jī)攻擊技術(shù)
目前,攻擊單片機(jī)主要有四種技術(shù),分別是:
(1)軟件攻擊
該技術(shù)通常使用處理器通信接口并利用協(xié)議、加密算法或這些算法中的安全漏洞來進(jìn)行攻擊。軟件攻擊取得成功的一個(gè)典型事例是對早期ATMEL AT89C 系列單片機(jī)的攻擊。攻擊者利用了該系列單片機(jī)擦除操作時(shí)序設(shè)計(jì)上的漏洞,使用自編程序在擦除加密鎖定位后,停止下一步擦除片內(nèi)程序存儲器數(shù)據(jù)的操作,從而使加過密的單片機(jī)變成沒加密的單片機(jī),然后利用編程器讀出片內(nèi)程序。
?。ǎ玻?電子探測攻擊
該技術(shù)通常以高時(shí)間分辨率來監(jiān)控處理器在正常操作時(shí)所有電源和接口連接的模擬特性,并通過監(jiān)控它的電磁輻射特性來實(shí)施攻擊。因?yàn)閱纹瑱C(jī)是一個(gè)活動(dòng)的電子器件,當(dāng)它執(zhí)行不同的指令時(shí),對應(yīng)的電源功率消耗也相應(yīng)變化。這樣通過使用特殊的電子測量儀器和數(shù)學(xué)統(tǒng)計(jì)方法分析和檢測這些變化,即可獲取單片機(jī)中的特定關(guān)鍵信息。
?。ǎ常┻^錯(cuò)產(chǎn)生技術(shù)
該技術(shù)使用異常工作條件來使處理器出錯(cuò),然后提供額外的訪問來進(jìn)行攻擊。使用最廣泛的過錯(cuò)產(chǎn)生攻擊手段包括電壓沖擊和時(shí)鐘沖擊。低電壓和高電壓攻擊可用來禁止保護(hù)電路工作或強(qiáng)制處理器執(zhí)行錯(cuò)誤操作。時(shí)鐘瞬態(tài)跳變也許會復(fù)位保護(hù)電路而不會破壞受保護(hù)信息。電源和時(shí)鐘瞬態(tài)跳變可以在某些處理器中影響單條指令的解碼和執(zhí)行。
?。ǎ矗┨结樇夹g(shù)
該技術(shù)是直接暴露芯片內(nèi)部連線,然后觀察、操控、干擾單片機(jī)以達(dá)到攻擊目的。
為了方便起見,人們將以上四種攻擊技術(shù)分成兩類,一類是侵入型攻擊(物理攻擊),這類攻擊需要破壞封裝,然后借助半導(dǎo)體測試設(shè)備、顯微鏡和微定位器,在專門的實(shí)驗(yàn)室花上幾小時(shí)甚至幾周時(shí)間才能完成。所有的微探針技術(shù)都屬于侵入型攻擊。另外三種方法屬于非侵入型攻擊,被攻擊的單片機(jī)不會被物理損壞。在某些場合非侵入型攻擊是特別危險(xiǎn)的,這是因?yàn)榉乔秩胄凸羲柙O(shè)備通常可以自制和升級,因此非常廉價(jià)。
大部分非侵入型攻擊需要攻擊者具備良好的處理器知識和軟件知識。與之相反,侵入型的探針攻擊則不需要太多的初始知識,而且通??捎靡徽紫嗨频募夹g(shù)對付寬范圍的產(chǎn)品。因此,對單片機(jī)的攻擊往往從侵入型的反向工程開始,積累的經(jīng)驗(yàn)有助于開發(fā)更加廉價(jià)和快速的非侵入型攻擊技術(shù)。
?。场∏秩胄凸舻囊话氵^程
侵入型攻擊的第一步是揭去芯片封裝。有兩種方法可以達(dá)到這一目的:第一種是完全溶解掉芯片封裝,暴露金屬連線。第二種是只移掉硅核上面的塑料封裝。第一種方法需要將芯片綁定到測試夾具上,借助綁定臺來操作。第二種方法除了需要具備攻擊者一定的知識和必要的技能外,還需要個(gè)人的智慧和耐心,但操作起來相對比較方便。
芯片上面的塑料可以用小刀揭開,芯片周圍的環(huán)氧樹脂可以用濃硝酸腐蝕掉。熱的濃硝酸會溶解掉芯片封裝而不會影響芯片及連線。該過程一般在非常干燥的條件下進(jìn)行,因?yàn)樗拇?/p>
在可能會侵蝕已暴露的鋁線連接。
接著在超聲池里先用丙酮清洗該芯片以除去殘余硝酸,然后用清水清洗以除去鹽分并干燥。沒有超聲池,一般就跳過這一步。這種情況下,芯片表面會有點(diǎn)臟,但是不太影響紫外光對芯片的操作效果。
最后一步是尋找保護(hù)熔絲的位置并將保護(hù)熔絲暴露在紫外光下。一般用一臺放大倍數(shù)至少100倍的顯微鏡,從編程電壓輸入腳的連線跟蹤進(jìn)去,來尋找保護(hù)熔絲。若沒有顯微鏡,則采用將芯片的不同部分暴露到紫外光下并觀察結(jié)果的方式進(jìn)行簡單的搜索。操作時(shí)應(yīng)用不透明的紙片覆蓋芯片以保護(hù)程序存儲器不被紫外光擦除。將保護(hù)熔絲暴露在紫外光下5~10分鐘就能破壞掉保護(hù)位的保護(hù)作用,之后,使用簡單的編程器就可直接讀出程序存儲器的內(nèi)容。
對于使用了防護(hù)層來保護(hù)EEPROM單元的單片機(jī)來說,使用紫外光復(fù)位保護(hù)電路是不可行的。對于這種類型的單片機(jī),一般使用微探針技術(shù)來讀取存儲器內(nèi)容。在芯片封裝打開后,將芯片置于顯微鏡下就能夠很容易的找到從存儲器連到電路其它部分的數(shù)據(jù)總線。由于某種原因,芯片鎖定位在編程模式下并不鎖定對存儲器的訪問。利用這一缺陷將探針放在數(shù)據(jù)線的上面就能讀到所有想要的數(shù)據(jù)。在編程模式下,重啟讀過程并連接探針到另外的數(shù)據(jù)線上就可以讀出程序和數(shù)據(jù)存儲器中的所有信息。
還有一種可能的攻擊手段是借助顯微鏡和激光切割機(jī)等設(shè)備來尋找保護(hù)熔絲,從而尋查和這部分電路相聯(lián)系的所有信號線。由于設(shè)計(jì)有缺陷,因此,只要切斷從保護(hù)熔絲到其它電路的某一根信號線,就能禁止整個(gè)保護(hù)功能。由于某種原因,這根線離其它的線非常遠(yuǎn),所以使用激光切割機(jī)完全可以切斷這根線而不影響臨近線。這樣,使用簡單的編程器就能直接讀出程序存儲器的內(nèi)容。
雖然大多數(shù)普通單片機(jī)都具有熔絲燒斷保護(hù)單片機(jī)內(nèi)代碼的功能,但由于通用低檔的單片機(jī)并非定位于制作安全類產(chǎn)品,因此,它們往往沒有提供有針對性的防范措施且安全級別較低。加上單片機(jī)應(yīng)用場合廣泛,銷售量大,廠商間委托加工與技術(shù)轉(zhuǎn)讓頻繁,大量技術(shù)資料外瀉,使得利用該類芯片的設(shè)計(jì)漏洞和廠商的測試接口,并通過修改熔絲保護(hù)位等侵入型攻擊或非侵入型攻擊手段來讀取單片機(jī)的內(nèi)部程序變得比較容易。
4 應(yīng)對單片機(jī)破解的幾點(diǎn)建議
任何一款單片機(jī)?從理論上講,攻擊者均可利用足夠的投資和時(shí)間使用以上方法來攻破。所以,在用單片機(jī)做加密認(rèn)證或設(shè)計(jì)系統(tǒng)時(shí),應(yīng)盡量加大攻擊者的攻擊成本和所耗費(fèi)的時(shí)間。這是系統(tǒng)設(shè)計(jì)者應(yīng)該始終牢記的基本原則。除此之外,還應(yīng)注意以下幾點(diǎn):
?。ǎ保┰谶x定加密芯片前,要充分調(diào)研,了解單片機(jī)破解技術(shù)的新進(jìn)展,包括哪些單片機(jī)是已經(jīng)確認(rèn)可以破解的。盡量不選用已可破解或同系列、同型號的芯片。
?。ǎ玻┍M量不要選用MCS51系列單片機(jī),因?yàn)樵搯纹瑱C(jī)在國內(nèi)的普及程度最高,被研究得也最透。
(3)產(chǎn)品的原創(chuàng)者,一般具有產(chǎn)量大的特點(diǎn),所以可選用比較生僻、偏冷門的單片機(jī)來加大仿冒者采購的難度。
?。ǎ矗┻x擇采用新工藝、新結(jié)構(gòu)、上市時(shí)間較短的單片機(jī),如ATMEL AVR系列單片機(jī)等。
?。ǎ担┰谠O(shè)計(jì)成本許可的條件下,應(yīng)選用具有硬件自毀功能的智能卡芯片,以有效對付物理攻擊。
?。ǎ叮┤绻麠l件許可,可采用兩片不同型號單片機(jī)互為備份,相互驗(yàn)證,從而增加破解成本。
?。ǎ罚┐蚰サ粜酒吞柕刃畔⒒蛘咧匦掠∩掀渌男吞?,以假亂真。
當(dāng)然,要想從根本上防止單片機(jī)被解密,程序被盜版等侵權(quán)行為發(fā)生,只能依靠法律手段來保障。
三、MCS-51單片機(jī)定時(shí)中斷不同應(yīng)用情況
根據(jù)定時(shí)中斷的不同應(yīng)用情況,應(yīng)選擇不同的精確定時(shí)編程方法。MCS-51單片機(jī)的中斷響應(yīng)延遲時(shí)間,取決于其它中斷服務(wù)程序是否在進(jìn)行,或取決于正在執(zhí)行的是什么樣的指令。單中斷系統(tǒng)中的中斷響應(yīng)時(shí)間為3~8個(gè)機(jī)器周期.文中以定時(shí)器T1工作在定時(shí)方式1為例,晶振頻率為12MHz 。
1 方法1
在定時(shí)器溢出中斷得到響應(yīng)時(shí),停止定時(shí)器計(jì)數(shù),讀出計(jì)數(shù)值(反映了中斷響應(yīng)的延遲時(shí)間),根據(jù)此計(jì)數(shù)值算出到下一次中斷時(shí),需多長時(shí)間,由此來重裝載和啟動(dòng)定時(shí)器。例如定時(shí)周期為1ms,則通常定時(shí)器重裝載值為-1000(0FC18H)。下面的程序在計(jì)算每個(gè)定時(shí)周期的精確重裝載值時(shí),考慮了由停止計(jì)數(shù)(CLR TR1)到重新啟動(dòng)計(jì)數(shù)(SETB TR1)之間的7個(gè)機(jī)器周期時(shí)間。程序中#LOW(-1000+7)和#HIGH(-1000+7)是匯編符號,分別表示-1000+7=0FC1FH這個(gè)立即數(shù)的低位字節(jié)(1FH)和高位字節(jié)(0FCH)。
……
CLR EA ;禁止所有中斷
CLR TR1 ;停止定時(shí)器T1
MOV A,#LOW(-1000+7) ;期望數(shù)的低位字節(jié)
ADD A,TL1 ;進(jìn)行修正
MOV TL1,A ;重裝載低位字節(jié)
MOV A,#HIGH(-1000+7) ;對高位字節(jié)處理
ADDC A,TH1
MOV TH1,A
SETB TR1 ;重啟動(dòng)定時(shí)器
SETB EA ;重開中斷
……
此方法適用于各種原因造成的定時(shí)誤差的情況,為通用方法。
2 方法2
假如定時(shí)周期為10ms,通常定時(shí)器重裝載值為0D8F0H,中斷子程序如下[2]:
ORL TL1,#0F0H
MOV TH1,#0D8H
……
這里用ORL TL1,#0F0H代替MOV TL1,#0F0H 可提高定時(shí)精度。此方法只適用于重裝載值低位字節(jié)的低4位為零,且中斷響應(yīng)的延遲時(shí)間小于16個(gè)機(jī)器周期的情況。類似的定時(shí)器重裝載值有0FFF0H,0FFE0H等。
3 方法3
假如定時(shí)周期為1ms,通常定時(shí)器重裝載值為0FC18H,中斷子程序如下:
MOV A,#LOW(-1000+4) ;期望數(shù)的低位字節(jié)
ADD A,TL1
MOV TL1,A
MOV A,#HIGH(-1000+4) ;對高位字節(jié)處理
ADDC A,TH1
MOV TH1,A
DEC TL1 ;恢復(fù)提前了的2個(gè)機(jī)器周期
……
方法4
假如定時(shí)周期不確定,只知道定時(shí)器重裝載值存放在寄存器R3、R2中,中斷子程序如下:
MOV A,#05H ;3個(gè)機(jī)器周期裝載TL1,2個(gè)周期提前
ADD A,TL1
ADD A,R2
MOV TL1,A
MOV A,R3 ;處理高位字節(jié)
ADDC A,TH1
MOV TH1,A
DEC TL1 ;恢復(fù)提前了的2個(gè)機(jī)器周期
……
此法適用于定時(shí)周期不確定的情況,其它同方法3。
5 方法5
當(dāng)定時(shí)中斷發(fā)生的位置可預(yù)知時(shí),通常出現(xiàn)在主程序的AJMP $ (或SJMP $)等待指令處,中斷延遲時(shí)間為3個(gè)或4個(gè)機(jī)器周期。取固定值4可簡化補(bǔ)償程序。以定時(shí)周期1ms為例,中斷子程序如下:
ORG 001BH
MOV TL1,#LOW(-1000+4)
MOV TH1,#HIGH(-1000+4)
……
此方法適用于定時(shí)中斷總發(fā)生在同一條指令位置,且無其它中斷源的情況。
四、單片機(jī)低功耗控制與設(shè)計(jì)的幾個(gè)要點(diǎn)
降低功耗不光能夠大大的節(jié)約電能還能簡化電源部分的設(shè)計(jì),甚至可以用于手持設(shè)備上面使用,這些都已經(jīng)越來越成為未來產(chǎn)品的設(shè)計(jì)方向了。
1 降低功耗從MCU選型開始。一開始選型的時(shí)候就應(yīng)該考慮選擇低功耗的MCU比如MSP430一類的為低功耗設(shè)計(jì)的CPU。
強(qiáng)烈不建議使用51一方面是因?yàn)?1速度慢,另外一方面是因?yàn)?1的IO是有上拉電阻的,雖然當(dāng)IO為高電平是上拉電阻不費(fèi)電,但是下拉電流的時(shí)候卻也有不小的功耗產(chǎn)生。還有一點(diǎn)就是51的運(yùn)算速度實(shí)在是太慢了~~~~~很多運(yùn)算用51都需要很高的主頻而主頻高了就意味著高的功耗。
2 選擇器件用電電壓。很明顯降低器件的用電電壓能夠明顯的降低器件的耗電比如說ATmega8和ATmega88雖然芯片大致內(nèi)部結(jié)構(gòu)一致但是后者可以工作在1.8V的超低電壓下而前者就不行,綜合考慮下當(dāng)然還是選擇后者。
3 盡量降低器件的工作頻率。大家都知道CMOS電路的工作電流主要來此于開關(guān)轉(zhuǎn)換時(shí)對后一級輸入端的電容充放電,如果能夠降低MCU的工作頻率自然耗電也就下來了,要知道當(dāng)AVR工作在32.768Hz時(shí)和工作在20Mhz時(shí)的工作電流差異可不是一般的小啊。
4 盡量使用中斷讓處理器進(jìn)入更深的睡眠。眾所周知睡眠模式和掉電模式能夠大大的降低MCU的工作電流,聰明的單片機(jī)設(shè)計(jì)師能夠充分的利用MCU的中斷功能讓MCU周期性的工作和睡眠從而大大的降低MCU的工作電流。
5 盡量關(guān)閉MCU內(nèi)部不用的資源。這個(gè)嗎地球人都知道的好處,我說這個(gè)有點(diǎn)像廢話一樣,不用的東西你干嗎開著呢?比如ATmega8內(nèi)部的模擬比較器,默認(rèn)是開著的還有ATmega88內(nèi)部的大多數(shù)資源都可以在不用的時(shí)候用軟件關(guān)閉。
6 盡量使用VMOS做為外部功率擴(kuò)展器件。道理很簡單VMOS驅(qū)動(dòng)的時(shí)候是電壓行器件驅(qū)動(dòng)是幾乎不產(chǎn)生功耗,要比普通的晶體管省電多了,而且由于VMOS的導(dǎo)通內(nèi)阻低通常只有幾十個(gè)毫歐,在小電流的時(shí)候器件自身發(fā)熱也小,尤其是小電流是效率遠(yuǎn)比傳統(tǒng)晶體管要高的多的多。這里還是建議使用高速VMOS,因?yàn)楦咚賄MOS在開關(guān)速度相當(dāng)高的PWM時(shí)效率會更高。
7 片外IC的電源最好都能由MCU的IO控制比如說我們常用的24C02。由于它是掉電記憶的,所以我們完全可以在它不工作的時(shí)候?qū)λP(guān)電源,以節(jié)約電流。還有比如說我們常用的6116的SRAM,我們完全可以用單片機(jī)來控制它的片選端口來控制它的工作與休眠從而節(jié)約電流。
8 這招也是最毒辣的一招。通常我們驅(qū)動(dòng)一些LED器件,完全可以通過PWM來控制從而省略限流電阻,要知道當(dāng)器件選定后它的內(nèi)阻也就已經(jīng)確定,而當(dāng)電源電壓也確定的時(shí)候,就可以通過占空比來確定器件上的電壓,從而節(jié)約了限流電阻同時(shí)也就節(jié)約了限流電阻上面的功耗,如果用戶使用的是電池,我們完全還可以不定期的對電池電壓進(jìn)行檢測然后改變占空比,從而恒定負(fù)載上面的電壓,達(dá)到電源的最大利用率。
五、提高單片機(jī)設(shè)計(jì)硬件可靠性的一般方法
1、電路設(shè)計(jì)
影響單片機(jī)測控系統(tǒng)可靠性的因素,有45%來自系統(tǒng)設(shè)計(jì)。為了保證測控系統(tǒng)的可靠性,在對電路設(shè)計(jì)時(shí),應(yīng)進(jìn)行最壞情況的設(shè)計(jì)。
各種電子元件的特性不可能是一個(gè)恒定值,總是在其標(biāo)注值的上下有一個(gè)變化的范圍。同時(shí),電源電壓也有一個(gè)波動(dòng)范圍,最壞的設(shè)計(jì)(指工作環(huán)境最壞情況下)方法是考慮所有元件的公差,并取其最不利的數(shù)值。核算電路的每一個(gè)規(guī)定的特性。如果這一組參數(shù)值都能保證正常工作,那么在公差范圍內(nèi)的其它所有元件值都能使電路可靠地工作。在設(shè)計(jì)應(yīng)用系統(tǒng)電路時(shí),還要根據(jù)元件的失效率特征及其使用場所采取相應(yīng)措施:
在元件級,對那些容易產(chǎn)生短路的部件,以串聯(lián)方式復(fù)制;對那些容易產(chǎn)生斷路的部件,以并聯(lián)方式復(fù)制,并在這些部分設(shè)置報(bào)警和保護(hù)裝置。
2、元器件選擇
(1)型號與公差 在確定元件參數(shù)之后,還要確定元器件的型號,這主要取決于電路所允許的公差范圍。對于電容器,如果用于常溫環(huán)境中,一般的電解電容就可以滿足要求,對于電容公差要求較高的電路系統(tǒng),則電解電容就不宜選用。
(2)降額使用 元件的失效率隨工作電壓成倍的增加。因此,系統(tǒng)供電電源的容量就大于負(fù)載的最大值,元器件的額定工作條件是多方面的,如電流電壓頻率、功率、機(jī)械強(qiáng)度以及環(huán)境溫度等。所說的降額使用,就是要降低以上這些參數(shù),在電路設(shè)計(jì)中,首先考慮的是降低它的功效。選用電容器時(shí)要降低它的工作電壓,使用電壓一般小于額定電壓的60%。選用二級管以及可控硅時(shí),應(yīng)使其工作電流低于額定電流,對于晶體管、穩(wěn)壓管等應(yīng)考慮工作時(shí)的耗散功率。
集成電路的降額使用同樣是從電氣參數(shù)及環(huán)境因素上來考慮。在電氣上要降低功耗,對CMOS芯片和線性集成電路在滿足輸出要求的前提下,應(yīng)降低電源電壓或減少下級負(fù)載。而TTL電路對電源電壓要求比較嚴(yán),這時(shí)應(yīng)注意它們的帶負(fù)載能力,民用元器件的溫度使用范圍較窄,如果用于工業(yè)控制中,在整體設(shè)計(jì)時(shí)應(yīng)降額使用。
3、結(jié)構(gòu)設(shè)計(jì)
結(jié)構(gòu)可靠性設(shè)計(jì)是硬件可靠性設(shè)計(jì)的最后階段,結(jié)構(gòu)設(shè)計(jì)時(shí)首先應(yīng)注意元器件及設(shè)備的安裝方式;其次是控制系統(tǒng)工作的環(huán)境條件,如通風(fēng)、除濕、防塵等。
4、噪聲抑制
噪聲對模擬電路會影響系統(tǒng)的精度,對數(shù)字電路會造成誤動(dòng)作,因此在工程設(shè)計(jì)中,必須采用抑制措施。干擾信號可分為串模干擾和共模干擾兩大類。針對這兩類干擾成熟的電路以及專題著作也不少,下面將常用的方法介紹如下:
4.1 抗串模干擾的措施
(1)光電隔離,在輸入和輸出通道上采用光耦合器件來進(jìn)行信息傳輸,以免上一級干擾竄到下一級。
(2)硬件濾波電路,常用RC低通道濾波器接在一些低頻信號傳送電路中(如熱電偶輸入線路等),它可大大削弱各類高頻干擾信號(如各類“毛刺”干擾)。
(3)過壓保護(hù)電路,在輸入輸出通道上應(yīng)采用一定的過壓保護(hù)電路,以防止引入高電壓傷害單片機(jī)系統(tǒng)。
(4)采用抗干擾穩(wěn)壓電源,微機(jī)系統(tǒng)的供電線路是干擾的主要入侵途徑。通常采用以下幾種措施:
?、賳纹瑱C(jī)系統(tǒng)的供電線路和產(chǎn)生干擾的用電設(shè)備分開供電;
②通過低通濾波器和隔離變壓器接入電網(wǎng);
?、壅髟喜⒔訛V波電容,如圖1所示,選用高質(zhì)量的穩(wěn)壓電路。
4.2 抗共模干擾措施
共模干擾通常是針對平衡輸入信號而言的,抗共模干擾的方法有以下幾種:
(1)平衡對稱輸入,在設(shè)計(jì)信號源時(shí),通常是各類信號盡可能做到平衡對稱。
(2)選用高質(zhì)量的差動(dòng)放大器。
(3)要有良好的接地系統(tǒng)。
(4)系統(tǒng)接地點(diǎn)要正確連接;系統(tǒng)中的大功率的元件地線與小功率的信號地線也要分開布線或加粗地線,數(shù)字地與模擬地必須分開,最后只在一點(diǎn)相連。如果系統(tǒng)中的數(shù)字地與模擬地不分,則數(shù)字信號電流在模擬系統(tǒng)的地線中形成干擾(地電位改變),使模擬信號失真,這一點(diǎn)請初學(xué)者特別注意。
(5)屏蔽,用金屬外殼或金屬匣將整機(jī)或部分元器件包圍起來,再將金屬外殼或金屬匣接地,就能起到屏蔽作用。對于各種通過電磁感應(yīng)引起的干擾,特別注意的是屏蔽外殼的接地點(diǎn),一定與信號的參考點(diǎn)相接。
以上介紹的幾項(xiàng)是十分必要的硬件抗干擾措施。