一,、單片機(jī)開發(fā)過程中硬件調(diào)試技巧
在單片機(jī)開發(fā)過程中,,從硬件設(shè)計(jì)到軟件設(shè)計(jì)幾乎是開發(fā)者針對(duì)本系統(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ā)過程中體會(huì),討論硬件調(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)真對(duì)照原理圖,看兩者是否一致,。應(yīng)特別注意電源系統(tǒng)檢查,,以防止電源短路和極性錯(cuò)誤,并重點(diǎn)檢查系統(tǒng)總線(地址總線,、數(shù)據(jù)總線和控制總線)是否存在相互之間短路或與其它信號(hào)線路短路,。必要時(shí)利用數(shù)字萬(wàn)用表的短路測(cè)試功能,可以縮短排錯(cuò)時(shí)間,。
1.2排除元器件失效
造成這類錯(cuò)誤的原因有兩個(gè):一個(gè)是元器件買來時(shí)就已壞了;另一個(gè)是由于安裝錯(cuò)誤,,造成器件燒壞??梢圆扇z查元器件與設(shè)計(jì)要求的型號(hào)、規(guī)格和安裝是否一致,。在保證安裝無誤后,,用替換方法排除錯(cuò)誤。
1.3排除電源故障
在通電前,,一定要檢查電源電壓的幅值和極性,,否則很容易造成集成塊損壞。加電后檢查各插件上引腳的電位,,一般先檢查VCC與GND之間電位,,若在5V~4.8V之間屬正常,。若有高壓,聯(lián)機(jī)仿真器調(diào)試時(shí),,將會(huì)損壞仿真器等,,有時(shí)會(huì)使應(yīng)用系統(tǒng)中的集成塊發(fā)熱損壞。
2 聯(lián)機(jī)仿真調(diào)試
聯(lián)機(jī)仿真必須借助仿真開發(fā)裝置,、示波器,、萬(wàn)用表等工具。這些工具是單片機(jī)開發(fā)的最基本工具,。
信號(hào)線是聯(lián)絡(luò)8031和外部器件的紐帶,,如果信號(hào)線連結(jié)錯(cuò)誤或時(shí)序不對(duì),那么都會(huì)造成對(duì)外圍電路讀寫錯(cuò)誤,。51系列單片機(jī)的信號(hào)線大體分為讀,、寫信號(hào)線、片選信號(hào)線,、時(shí)鐘信號(hào)線,、外部程序存貯器讀選通信號(hào)(PSEN)、地址鎖存信號(hào)(ALE),、復(fù)位信號(hào)等幾大類,。這些信號(hào)大多屬于脈沖信號(hào),對(duì)于脈沖信號(hào)借助示波器(這里指通用示波器)用常規(guī)方法很難觀測(cè)到,,必須采取一定措施才能觀測(cè)到,。應(yīng)該利用軟件編程的方法來實(shí)現(xiàn)。例如對(duì)片選信號(hào),,運(yùn)行下面的小程序就可以檢測(cè)出譯碼片選信號(hào)是否正常,。
MAIN:MOVDPTR,#DPTR
;將地址送入DPTR
MOVXA,,@DPTR
;將譯碼地址外RAM中的內(nèi)容送入ACC
NOP;適當(dāng)延時(shí)
SJMPMAIN;循環(huán)
執(zhí)行程序后,,就可以利用示波器觀察芯片的片選信號(hào)引出腳(用示波器掃描時(shí)間為1μs/每格檔),這時(shí)應(yīng)看到周期為數(shù)微秒的負(fù)脈沖波形,,若看不到則說明譯碼信號(hào)有錯(cuò)誤,。
對(duì)于電平類信號(hào),觀測(cè)起來就比較容易,。例如對(duì)復(fù)位信號(hào)觀測(cè)就可以直接利用示波器,,當(dāng)按下復(fù)位鍵時(shí),可以看到8031的復(fù)位引腳將變?yōu)楦唠娖?一旦松開,,電平將變低,。
總而言之,對(duì)于脈沖觸發(fā)類的信號(hào)我們要用軟件來配合,并要把程序編為死循環(huán),,再利用示波器觀察;對(duì)于電平類觸發(fā)信號(hào),,可以直接用示波器觀察。
下面結(jié)合在自動(dòng)配料控制系統(tǒng)中鍵盤,、顯示部分的調(diào)試過程來加以說明,。本系統(tǒng)中的鍵盤、顯示部分都是由并行口芯片8155擴(kuò)展而成的,。8155屬于可編程器件,,因而很難劃分硬件和軟件,往往在調(diào)試中即使電路安裝正確沒有一定的指令去指揮它工作,,也是無法發(fā)現(xiàn)硬件的故障,。因此要使用一些簡(jiǎn)單的調(diào)試程序來確定硬件的組裝是否正確、功能是否完整,。在本系統(tǒng)中采取了先對(duì)顯示器調(diào)試,,再對(duì)鍵盤調(diào)試。
(1)顯示器部分調(diào)試為了使調(diào)試順利進(jìn)行,,首先將8155與LED顯示分離,,這樣就可以用靜態(tài)方法先測(cè)試LED顯示,分別用規(guī)定的電平加至控制數(shù)碼管段和位顯示的引腳,,看數(shù)碼管顯示是否與理論上一致,。不一致,一般為L(zhǎng)ED顯示器接觸不良所致,,必須找出故障,,排除后再檢測(cè)8155電路工作是否正常。對(duì)8155應(yīng)進(jìn)行編程調(diào)試時(shí),,分為兩個(gè)步驟:第一,,對(duì)其進(jìn)行初始化(即寫入命令控制字,最好定義為輸出方式)后,,分別向PA,、PB、PC三個(gè)口送入#0FFH,,這時(shí)可以利用萬(wàn)用表測(cè)試各口的位電壓為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)試就比較簡(jiǎn)單,,完全可以借助于顯示器,利用程序進(jìn)行調(diào)試,。利用開發(fā)裝置對(duì)程序進(jìn)行設(shè)置斷點(diǎn),,通過斷點(diǎn)可以檢查程序在斷點(diǎn)前后的鍵值變化,這樣可知鍵盤工作是否正常,。
以上討論了借助簡(jiǎn)單工具對(duì)單片機(jī)硬件調(diào)試的方法,,這些方法如果利用得好,就
可以大大縮短單片機(jī)的開發(fā)周期,。
二,、單片機(jī)破解的常用方法及應(yīng)對(duì)策略
1 引言
單片機(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è)典型事例是對(duì)早期ATMEL AT89C 系列單片機(jī)的攻擊,。攻擊者利用了該系列單片機(jī)擦除操作時(shí)序設(shè)計(jì)上的漏洞,使用自編程序在擦除加密鎖定位后,,停止下一步擦除片內(nèi)程序存儲(chǔ)器數(shù)據(jù)的操作,,從而使加過密的單片機(jī)變成沒加密的單片機(jī),然后利用編程器讀出片內(nèi)程序,。
?。ǎ玻?電子探測(cè)攻擊
該技術(shù)通常以高時(shí)間分辨率來監(jiān)控處理器在正常操作時(shí)所有電源和接口連接的模擬特性,并通過監(jiān)控它的電磁輻射特性來實(shí)施攻擊,。因?yàn)閱纹瑱C(jī)是一個(gè)活動(dòng)的電子器件,,當(dāng)它執(zhí)行不同的指令時(shí),對(duì)應(yīng)的電源功率消耗也相應(yīng)變化,。這樣通過使用特殊的電子測(cè)量?jī)x器和數(shù)學(xué)統(tǒng)計(jì)方法分析和檢測(cè)這些變化,,即可獲取單片機(jī)中的特定關(guān)鍵信息。
?。ǎ常┻^錯(cuò)產(chǎn)生技術(shù)
該技術(shù)使用異常工作條件來使處理器出錯(cuò),,然后提供額外的訪問來進(jìn)行攻擊。使用最廣泛的過錯(cuò)產(chǎn)生攻擊手段包括電壓沖擊和時(shí)鐘沖擊,。低電壓和高電壓攻擊可用來禁止保護(hù)電路工作或強(qiáng)制處理器執(zhí)行錯(cuò)誤操作,。時(shí)鐘瞬態(tài)跳變也許會(huì)復(fù)位保護(hù)電路而不會(huì)破壞受保護(hù)信息。電源和時(shí)鐘瞬態(tài)跳變可以在某些處理器中影響單條指令的解碼和執(zhí)行,。
?。ǎ矗┨结樇夹g(shù)
該技術(shù)是直接暴露芯片內(nèi)部連線,然后觀察,、操控,、干擾單片機(jī)以達(dá)到攻擊目的。
為了方便起見,,人們將以上四種攻擊技術(shù)分成兩類,,一類是侵入型攻擊(物理攻擊),這類攻擊需要破壞封裝,,然后借助半導(dǎo)體測(cè)試設(shè)備,、顯微鏡和微定位器,在專門的實(shí)驗(yàn)室花上幾小時(shí)甚至幾周時(shí)間才能完成,。所有的微探針技術(shù)都屬于侵入型攻擊,。另外三種方法屬于非侵入型攻擊,被攻擊的單片機(jī)不會(huì)被物理?yè)p壞,。在某些場(chǎng)合非侵入型攻擊是特別危險(xiǎn)的,,這是因?yàn)榉乔秩胄凸羲柙O(shè)備通常可以自制和升級(jí),,因此非常廉價(jià),。
大部分非侵入型攻擊需要攻擊者具備良好的處理器知識(shí)和軟件知識(shí),。與之相反,侵入型的探針攻擊則不需要太多的初始知識(shí),,而且通??捎靡徽紫嗨频募夹g(shù)對(duì)付寬范圍的產(chǎn)品。因此,,對(duì)單片機(jī)的攻擊往往從侵入型的反向工程開始,積累的經(jīng)驗(yàn)有助于開發(fā)更加廉價(jià)和快速的非侵入型攻擊技術(shù),。
?。场∏秩胄凸舻囊话氵^程
侵入型攻擊的第一步是揭去芯片封裝。有兩種方法可以達(dá)到這一目的:第一種是完全溶解掉芯片封裝,,暴露金屬連線,。第二種是只移掉硅核上面的塑料封裝。第一種方法需要將芯片綁定到測(cè)試夾具上,,借助綁定臺(tái)來操作,。第二種方法除了需要具備攻擊者一定的知識(shí)和必要的技能外,還需要個(gè)人的智慧和耐心,,但操作起來相對(duì)比較方便,。
芯片上面的塑料可以用小刀揭開,芯片周圍的環(huán)氧樹脂可以用濃硝酸腐蝕掉,。熱的濃硝酸會(huì)溶解掉芯片封裝而不會(huì)影響芯片及連線,。該過程一般在非常干燥的條件下進(jìn)行,因?yàn)樗拇?/p>
在可能會(huì)侵蝕已暴露的鋁線連接,。
接著在超聲池里先用丙酮清洗該芯片以除去殘余硝酸,,然后用清水清洗以除去鹽分并干燥。沒有超聲池,,一般就跳過這一步,。這種情況下,芯片表面會(huì)有點(diǎn)臟,,但是不太影響紫外光對(duì)芯片的操作效果,。
最后一步是尋找保護(hù)熔絲的位置并將保護(hù)熔絲暴露在紫外光下。一般用一臺(tái)放大倍數(shù)至少100倍的顯微鏡,,從編程電壓輸入腳的連線跟蹤進(jìn)去,,來尋找保護(hù)熔絲。若沒有顯微鏡,,則采用將芯片的不同部分暴露到紫外光下并觀察結(jié)果的方式進(jìn)行簡(jiǎn)單的搜索,。操作時(shí)應(yīng)用不透明的紙片覆蓋芯片以保護(hù)程序存儲(chǔ)器不被紫外光擦除。將保護(hù)熔絲暴露在紫外光下5~10分鐘就能破壞掉保護(hù)位的保護(hù)作用,,之后,,使用簡(jiǎn)單的編程器就可直接讀出程序存儲(chǔ)器的內(nèi)容,。
對(duì)于使用了防護(hù)層來保護(hù)EEPROM單元的單片機(jī)來說,使用紫外光復(fù)位保護(hù)電路是不可行的,。對(duì)于這種類型的單片機(jī),,一般使用微探針技術(shù)來讀取存儲(chǔ)器內(nèi)容。在芯片封裝打開后,,將芯片置于顯微鏡下就能夠很容易的找到從存儲(chǔ)器連到電路其它部分的數(shù)據(jù)總線,。由于某種原因,芯片鎖定位在編程模式下并不鎖定對(duì)存儲(chǔ)器的訪問,。利用這一缺陷將探針放在數(shù)據(jù)線的上面就能讀到所有想要的數(shù)據(jù),。在編程模式下,重啟讀過程并連接探針到另外的數(shù)據(jù)線上就可以讀出程序和數(shù)據(jù)存儲(chǔ)器中的所有信息,。
還有一種可能的攻擊手段是借助顯微鏡和激光切割機(jī)等設(shè)備來尋找保護(hù)熔絲,,從而尋查和這部分電路相聯(lián)系的所有信號(hào)線。由于設(shè)計(jì)有缺陷,,因此,,只要切斷從保護(hù)熔絲到其它電路的某一根信號(hào)線,就能禁止整個(gè)保護(hù)功能,。由于某種原因,,這根線離其它的線非常遠(yuǎn),所以使用激光切割機(jī)完全可以切斷這根線而不影響臨近線,。這樣,,使用簡(jiǎn)單的編程器就能直接讀出程序存儲(chǔ)器的內(nèi)容。
雖然大多數(shù)普通單片機(jī)都具有熔絲燒斷保護(hù)單片機(jī)內(nèi)代碼的功能,,但由于通用低檔的單片機(jī)并非定位于制作安全類產(chǎn)品,,因此,它們往往沒有提供有針對(duì)性的防范措施且安全級(jí)別較低,。加上單片機(jī)應(yīng)用場(chǎng)合廣泛,,銷售量大,廠商間委托加工與技術(shù)轉(zhuǎn)讓頻繁,,大量技術(shù)資料外瀉,,使得利用該類芯片的設(shè)計(jì)漏洞和廠商的測(cè)試接口,并通過修改熔絲保護(hù)位等侵入型攻擊或非侵入型攻擊手段來讀取單片機(jī)的內(nèi)部程序變得比較容易,。
?。?應(yīng)對(duì)單片機(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):
(1)在選定加密芯片前,,要充分調(diào)研,,了解單片機(jī)破解技術(shù)的新進(jìn)展,包括哪些單片機(jī)是已經(jīng)確認(rèn)可以破解的,。盡量不選用已可破解或同系列,、同型號(hào)的芯片。
?。ǎ玻┍M量不要選用MCS51系列單片機(jī),,因?yàn)樵搯纹瑱C(jī)在國(guó)內(nèi)的普及程度最高,被研究得也最透,。
(3)產(chǎn)品的原創(chuàng)者,,一般具有產(chǎn)量大的特點(diǎn),,所以可選用比較生僻、偏冷門的單片機(jī)來加大仿冒者采購(gòu)的難度,。
?。ǎ矗┻x擇采用新工藝、新結(jié)構(gòu),、上市時(shí)間較短的單片機(jī),,如ATMEL AVR系列單片機(jī)等。
?。ǎ担┰谠O(shè)計(jì)成本許可的條件下,,應(yīng)選用具有硬件自毀功能的智能卡芯片,以有效對(duì)付物理攻擊,。
?。ǎ叮┤绻麠l件許可,可采用兩片不同型號(hào)單片機(jī)互為備份,,相互驗(yàn)證,,從而增加破解成本。
?。ǎ罚┐蚰サ粜酒吞?hào)等信息或者重新印上其它的型號(hào),,以假亂真。
當(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í),需多長(zhǎng)時(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)是匯編符號(hào),,分別表示-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) ;對(duì)高位字節(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) ;對(duì)高位字節(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可簡(jiǎn)化補(bǔ)償程序,。以定時(shí)周期1ms為例,,中斷子程序如下:
ORG 001BH
MOV TL1,#LOW(-1000+4)
MOV TH1,,#HIGH(-1000+4)
……
此方法適用于定時(shí)中斷總發(fā)生在同一條指令位置,,且無其它中斷源的情況。
四,、單片機(jī)低功耗控制與設(shè)計(jì)的幾個(gè)要點(diǎn)
降低功耗不光能夠大大的節(jié)約電能還能簡(jiǎn)化電源部分的設(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í)對(duì)后一級(jí)輸入端的電容充放電,如果能夠降低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ò)展器件。道理很簡(jiǎn)單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í)效率會(huì)更高,。
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é)約了限流電阻上面的功耗,,如果用戶使用的是電池,我們完全還可以不定期的對(duì)電池電壓進(jìn)行檢測(cè)然后改變占空比,從而恒定負(fù)載上面的電壓,,達(dá)到電源的最大利用率,。
五、提高單片機(jī)設(shè)計(jì)硬件可靠性的一般方法
1,、電路設(shè)計(jì)
影響單片機(jī)測(cè)控系統(tǒng)可靠性的因素,,有45%來自系統(tǒng)設(shè)計(jì)。為了保證測(cè)控系統(tǒng)的可靠性,,在對(duì)電路設(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ù)元件的失效率特征及其使用場(chǎng)所采取相應(yīng)措施:
在元件級(jí),,對(duì)那些容易產(chǎn)生短路的部件,以串聯(lián)方式復(fù)制;對(duì)那些容易產(chǎn)生斷路的部件,,以并聯(lián)方式復(fù)制,,并在這些部分設(shè)置報(bào)警和保護(hù)裝置。
2,、元器件選擇
(1)型號(hào)與公差 在確定元件參數(shù)之后,,還要確定元器件的型號(hào),,這主要取決于電路所允許的公差范圍,。對(duì)于電容器,如果用于常溫環(huán)境中,,一般的電解電容就可以滿足要求,,對(duì)于電容公差要求較高的電路系統(tǒng),則電解電容就不宜選用,。
(2)降額使用 元件的失效率隨工作電壓成倍的增加,。因此,系統(tǒng)供電電源的容量就大于負(fù)載的最大值,,元器件的額定工作條件是多方面的,,如電流電壓頻率、功率、機(jī)械強(qiáng)度以及環(huán)境溫度等,。所說的降額使用,,就是要降低以上這些參數(shù),在電路設(shè)計(jì)中,,首先考慮的是降低它的功效,。選用電容器時(shí)要降低它的工作電壓,使用電壓一般小于額定電壓的60%,。選用二級(jí)管以及可控硅時(shí),,應(yīng)使其工作電流低于額定電流,對(duì)于晶體管,、穩(wěn)壓管等應(yīng)考慮工作時(shí)的耗散功率,。
集成電路的降額使用同樣是從電氣參數(shù)及環(huán)境因素上來考慮。在電氣上要降低功耗,,對(duì)CMOS芯片和線性集成電路在滿足輸出要求的前提下,,應(yīng)降低電源電壓或減少下級(jí)負(fù)載。而TTL電路對(duì)電源電壓要求比較嚴(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、噪聲抑制
噪聲對(duì)模擬電路會(huì)影響系統(tǒng)的精度,,對(duì)數(shù)字電路會(huì)造成誤動(dòng)作,,因此在工程設(shè)計(jì)中,必須采用抑制措施,。干擾信號(hào)可分為串模干擾和共模干擾兩大類,。針對(duì)這兩類干擾成熟的電路以及專題著作也不少,下面將常用的方法介紹如下:
4.1 抗串模干擾的措施
(1)光電隔離,,在輸入和輸出通道上采用光耦合器件來進(jìn)行信息傳輸,,以免上一級(jí)干擾竄到下一級(jí)。
(2)硬件濾波電路,,常用RC低通道濾波器接在一些低頻信號(hào)傳送電路中(如熱電偶輸入線路等),,它可大大削弱各類高頻干擾信號(hào)(如各類“毛刺”干擾),。
(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 抗共模干擾措施
共模干擾通常是針對(duì)平衡輸入信號(hào)而言的,,抗共模干擾的方法有以下幾種:
(1)平衡對(duì)稱輸入,在設(shè)計(jì)信號(hào)源時(shí),,通常是各類信號(hào)盡可能做到平衡對(duì)稱,。
(2)選用高質(zhì)量的差動(dòng)放大器。
(3)要有良好的接地系統(tǒng),。
(4)系統(tǒng)接地點(diǎn)要正確連接;系統(tǒng)中的大功率的元件地線與小功率的信號(hào)地線也要分開布線或加粗地線,,數(shù)字地與模擬地必須分開,最后只在一點(diǎn)相連,。如果系統(tǒng)中的數(shù)字地與模擬地不分,,則數(shù)字信號(hào)電流在模擬系統(tǒng)的地線中形成干擾(地電位改變),使模擬信號(hào)失真,,這一點(diǎn)請(qǐng)初學(xué)者特別注意,。
(5)屏蔽,用金屬外殼或金屬匣將整機(jī)或部分元器件包圍起來,,再將金屬外殼或金屬匣接地,,就能起到屏蔽作用。對(duì)于各種通過電磁感應(yīng)引起的干擾,,特別注意的是屏蔽外殼的接地點(diǎn),,一定與信號(hào)的參考點(diǎn)相接。
以上介紹的幾項(xiàng)是十分必要的硬件抗干擾措施,。