<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)系統(tǒng)等的硬件調(diào)試方法

          單片機(jī)系統(tǒng)等的硬件調(diào)試方法

          作者: 時(shí)間:2016-11-22 來(lái)源:網(wǎng)絡(luò) 收藏
          1、首先是焊接的順序問(wèn)題。當(dāng)初板子做好以后,我一口氣就把所有的元件焊上去了,這樣對(duì)于沒(méi)有調(diào)試過(guò)的板子,就很難找到原因。所以焊接的順序很重要,應(yīng)該是應(yīng)該按功能劃分的器件進(jìn)行焊接,順序是功能部件的焊接--調(diào)試(OK)--另一功能部件的焊接,這樣容易找到問(wèn)題的所在。

          2、如果在調(diào)試按功能劃分的器件上出現(xiàn)問(wèn)題,可以按以下步驟進(jìn)行:
          1)檢查原理圖連接是否正確
          2)檢查原理圖與PCB圖是否一致
          3)檢查原理圖與器件的DATASHEET上引腳是否一致
          4)用萬(wàn)用表檢查是否有虛焊,引腳短路現(xiàn)象
          5)查詢(xún)器件的DATASHEET,分析一下時(shí)序是否一致,同時(shí)分析一下命令字是否正確(注意,命令字的順序很重要,前些日子調(diào)試INTEL e28F640這款flash是的時(shí)候,在對(duì)其擦除和寫(xiě)操作的時(shí)候,就碰到了這樣的問(wèn)題)
          6)有條件的可以用示波器。如我就是通過(guò)示波器對(duì)SRAM各個(gè)引腳進(jìn)行檢查,發(fā)現(xiàn)地址線都是有信號(hào)的,而數(shù)據(jù)線無(wú)信號(hào)出現(xiàn),才找到問(wèn)題所在。
          7)飛線。用別的的口線進(jìn)行控制,看看能不能對(duì)其進(jìn)行正常操作,多試驗(yàn),才能找到問(wèn)題出現(xiàn)在什么地方。

          本文引用地址:http://www.ex-cimer.com/article/201611/319680.htm

          3、多觀察,多思考。如我前些日子在調(diào)試320240點(diǎn)陣LCD的時(shí)候,發(fā)現(xiàn)怎么也不能出現(xiàn)圖像,后來(lái)在偶然的機(jī)會(huì)下,發(fā)現(xiàn)LCD在MPU的CS2口線下,出現(xiàn)閃動(dòng)的情況,猜測(cè)這時(shí)候有數(shù)據(jù)寫(xiě)入到LCD中,仔細(xì)研究才發(fā)現(xiàn),MPU的DATA0-7線與74LVC245的A0-7連接在一起,MPU的通過(guò)一個(gè)GAL16V8或是與非門(mén)等芯片進(jìn)行邏輯組合后與74LVC245的OE引腳相連,這樣MPU只有在某一地址范圍內(nèi)才可以進(jìn)行數(shù)據(jù)讀寫(xiě)操作。所以在調(diào)試過(guò)程中,對(duì)于出現(xiàn)的任何現(xiàn)象都不要放過(guò),問(wèn)題的解決就是從一些小的現(xiàn)象入手的。山重水復(fù)疑無(wú)路,柳暗花明又一村。

          4、有可能的情況下,最好焊兩塊板子以上,這樣才好有個(gè)比較,硬件上很小的問(wèn)題有很多時(shí)候是很難發(fā)現(xiàn)的。

          5、軟件的調(diào)試要和硬件配合進(jìn)行,往往問(wèn)題可能不是硬件上的。

          ---------------------------------------------------------------------------------------------------------------------------------------------

          單片機(jī)應(yīng)用系統(tǒng)硬件調(diào)試技巧

          在單片機(jī)開(kāi)發(fā)過(guò)程中,從硬件設(shè)計(jì)到軟件設(shè)計(jì)幾乎是開(kāi)發(fā)者針對(duì)本系統(tǒng)特點(diǎn)親自完成的。這樣雖然可以降低系統(tǒng)成本,提高系統(tǒng)的適應(yīng)性,但是每個(gè)系統(tǒng)的調(diào)試占去了總開(kāi)發(fā)時(shí)間的2/3,可見(jiàn)調(diào)試的工作量比較大。單片機(jī)系統(tǒng)的硬件調(diào)試和軟件調(diào)試是不能分開(kāi)的,許多硬件錯(cuò)誤是在軟件調(diào)試中被發(fā)現(xiàn)和糾正的。但通常是先排除明顯的硬件故障以后,再和軟件結(jié)合起來(lái)調(diào)試以進(jìn)一步排除故障。可見(jiàn)硬件的調(diào)試是基礎(chǔ),如果硬件調(diào)試不通過(guò),軟件設(shè)計(jì)則是無(wú)從做起。本文結(jié)合作者在單片機(jī)開(kāi)發(fā)過(guò)程中體會(huì),討論硬件調(diào)試的技巧。

          當(dāng)硬件設(shè)計(jì)從布線到焊接安裝完成之后,就開(kāi)始進(jìn)入硬件調(diào)試階段,調(diào)試大體分為以下幾步。

          1 硬件靜態(tài)的調(diào)試

          1.1 排除邏輯故障

          這類(lèi)故障往往由于設(shè)計(jì)和加工制板過(guò)程中工藝性錯(cuò)誤所造成的。主要包括錯(cuò)線、開(kāi)路、短路。排除的方法是首先將加工的印制板認(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 排除元器件失效

          造成這類(lèi)錯(cuò)誤的原因有兩個(gè):一個(gè)是元器件買(mǎi)來(lái)時(shí)就已壞了;另一個(gè)是由于安裝錯(cuò)誤,造成器件燒壞??梢圆扇z查元器件與設(shè)計(jì)要求的型號(hào)、規(guī)格和安裝是否一致。在保證安裝無(wú)誤后,用替換方法排除錯(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ī)仿真必須借助仿真開(kāi)發(fā)裝置、示波器、萬(wàn)用表等工具。這些工具是單片機(jī)開(kāi)發(fā)的最基本工具。

          信號(hào)線是聯(lián)絡(luò)8031和外部器件的紐帶,如果信號(hào)線連結(jié)錯(cuò)誤或時(shí)序不對(duì),那么都會(huì)造成對(duì)外圍電路讀寫(xiě)錯(cuò)誤。51系列單片機(jī)的信號(hào)線大體分為讀、寫(xiě)信號(hào)線、片選信號(hào)線、時(shí)鐘信號(hào)線、外部程序存貯器讀選通信號(hào)(PSEN)、地址鎖存信號(hào)(ALE)、復(fù)位信號(hào)等幾大類(lèi)。這些信號(hào)大多屬于脈沖信號(hào),對(duì)于脈沖信號(hào)借助示波器(這里指通用示波器)用常規(guī)方法很難觀測(cè)到,必須采取一定措施才能觀測(cè)到。應(yīng)該利用軟件編程的方法來(lái)實(shí)現(xiàn)。例如對(duì)片選信號(hào),運(yùn)行下面的小程序就可以檢測(cè)出譯碼片選信號(hào)是否正常。

          MAIN:MOV DPTR,#DPTR ;將地址送入DPTR

          MOVX A,@DPTR ;將譯碼地址外RAM中的內(nèi)容送入ACC

          NOP ;適當(dāng)延時(shí)

          SJMP MAIN ;循環(huán)

          執(zhí)行程序后,就可以利用示波器觀察芯片的片選信號(hào)引出腳(用示波器掃描時(shí)間為1μs/每格檔),這時(shí)應(yīng)看到周期為數(shù)微秒的負(fù)脈沖波形,若看不到則說(shuō)明譯碼信號(hào)有錯(cuò)誤。

          對(duì)于電平類(lèi)信號(hào),觀測(cè)起來(lái)就比較容易。例如對(duì)復(fù)位信號(hào)觀測(cè)就可以直接利用示波器,當(dāng)按下復(fù)位鍵時(shí),可以看到8031的復(fù)位引腳將變?yōu)楦唠娖剑灰坏┧砷_(kāi),電平將變低。

          總而言之,對(duì)于脈沖觸發(fā)類(lèi)的信號(hào)我們要用軟件來(lái)配合,并要把程序編為死循環(huán),再利用示波器觀察;對(duì)于電平類(lèi)觸發(fā)信號(hào),可以直接用示波器觀察。

          下面結(jié)合在自動(dòng)配料控制系統(tǒng)中鍵盤(pán)、顯示部分的調(diào)試過(guò)程來(lái)加以說(shuō)明。本系統(tǒng)中的鍵盤(pán)、顯示部分都是由并行口芯片8155擴(kuò)展而成的。8155屬于可編程器件,因而很難劃分硬件和軟件,往往在調(diào)試中即使電路安裝正確沒(méi)有一定的指令去指揮它工作,也是無(wú)法發(fā)現(xiàn)硬件的故障。因此要使用一些簡(jiǎn)單的調(diào)試程序來(lái)確定硬件的組裝是否正確、功能是否完整。在本系統(tǒng)中采取了先對(duì)顯示器調(diào)試,再對(duì)鍵盤(pán)調(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)行初始化(即寫(xiě)入命令控制字,最好定義為輸出方式)后,分別向PA、PB、PC三個(gè)口送入#0FFH,這時(shí)可以利用萬(wàn)用表測(cè)試各口的位電壓為3.8 V左右,若送入#00H,這時(shí)各口的位電壓應(yīng)為0.03 V;第二,將8155與LED結(jié)合起來(lái),借助開(kāi)發(fā)機(jī),通過(guò)編制程序(最好采用“8”字循環(huán)程序)進(jìn)行調(diào)試。若調(diào)試通過(guò)后,就可以編制應(yīng)用程序了。

          (2)鍵盤(pán)調(diào)試一般顯示器調(diào)試通過(guò)后,鍵盤(pán)調(diào)試就比較簡(jiǎn)單,完全可以借助于顯示器,利用程序進(jìn)行調(diào)試。利用開(kāi)發(fā)裝置對(duì)程序進(jìn)行設(shè)置斷點(diǎn),通過(guò)斷點(diǎn)可以檢查程序在斷點(diǎn)前后的鍵值變化,這樣可知鍵盤(pán)工作是否正常。

          以上討論了借助簡(jiǎn)單工具對(duì)單片機(jī)硬件調(diào)試的方法,這些方法如果利用得好,就可以大大縮短單片機(jī)的開(kāi)發(fā)周期。




          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();