摘 要:串行數(shù)據(jù)芯片的調(diào)試檢測常因設(shè)備問題而花費很多時間。這里介紹ADC0832芯片的控制方法、接口電路、控制原理,通過自制印制板調(diào)試ADC0832芯片,闡述一般串行數(shù)據(jù)芯片的編程調(diào)試檢測過程。通過這一過程,敘述串行數(shù)據(jù)芯片中地址無法檢測問題的解決方法,特別是在地址為00時檢測不到轉(zhuǎn)換數(shù)據(jù)時,采用新型MSO-2024示波器采樣,為編程人員提供了準確的判斷依據(jù)。
關(guān)鍵詞:ADC0832芯片;轉(zhuǎn)換數(shù)據(jù);軟件調(diào)試;硬件調(diào)試
中圖分類號:TP368.1文獻標識碼:A
文章編號:1004-373X(2010)02-160-04
Programming Detection Method for Serial Data Chip
LIU Xuexue
(Wuxi Machinery and Electron Higher Professional and Technical School,Wuxi,214028,China)
Abstract:It is time-consuming to debug serial data chips due to the problems of the equipment.The procedure of program debugging for general serial data chips by introducing controlling methods of ADC0832 chip,interface circuit,controlling principle,debugging ADC0832 chip with self_made printed plate.This procedure provides a solution to the address detection problem of serial data chips especially when the address is 00,and the converted data can′t be detected.The new model MSO-2024 oscillograph is needed to get samples to provide programmers with accurate basis for judgement.
Keywords:ADC0832 chip;data conversion;software debugging;hardware debugging
0 引 言
目前自動化檢測技術(shù)出現(xiàn)新的趨勢,在使用微處理器后,制造業(yè)設(shè)備的信息采集已從分立元件改為使用集成芯片。隨著微處理器速度的提高,在低速運行時串行式集成芯片逐步代替并行式集成芯片。文獻\\提出在雙通道模式輸入時,如果IN-的電壓大于IN+的電壓則轉(zhuǎn)換的后的數(shù)據(jù)結(jié)果始終為00H。筆者在對ADC0832芯片調(diào)試時有自己的看法,并有與他們不同的調(diào)試結(jié)果。在此對ADC0832串行數(shù)據(jù)芯片調(diào)試過程介紹如下。
串行數(shù)據(jù)芯片比并行數(shù)據(jù)芯片更難檢測,因為并行數(shù)據(jù)芯片的地址是由地址總線決定的,一旦硬件電路確定,地址也就確定,并且不能更改,了解了引腳的控制要求,測出的電平只要與控制要求相同,所以檢測與維護維修比較簡單。而串行式芯片的地址是通過芯片內(nèi)部結(jié)構(gòu),并由軟件參與控制,才能最后確定。如果芯片控制程序與硬件的時序不匹配,將導(dǎo)致芯片地址無法寫入,即使地址是寫入,也有可能讀不出轉(zhuǎn)換數(shù)據(jù)。如果檢測人員不懂程序,就無法判斷是硬件錯誤,還是軟件錯誤。所以串行式芯片的檢測更難。下面提供實例加以說明。
在此對串行數(shù)據(jù)芯片ADC0832進行了研究,從ADC0832芯片的性能與檢測方法究來展開說明。
1 ADC0832芯片的接口說明及控制方法[2]
ADC0832是美國國家半導(dǎo)體公司生產(chǎn)的一種8 位分辨率、雙通道A/D轉(zhuǎn)換芯片,其最高分辨可達256級,可以適應(yīng)一般的模擬量轉(zhuǎn)換要求。其內(nèi)部電源輸入與參考電壓的復(fù)用,使得芯片的模擬電壓輸入在0~5 V之間。芯片轉(zhuǎn)換時間僅為32 μs,具有雙數(shù)據(jù)輸出可作為數(shù)據(jù)校驗,以減少數(shù)據(jù)誤差,轉(zhuǎn)換速度快且穩(wěn)定性能強。獨立的芯片使能輸入,使多器件掛接和處理器控制變的更加方便。通過DI數(shù)據(jù)輸入端,可以輕易地實現(xiàn)通道功能的選擇。由于它體積小,兼容性強,性價比高深受技術(shù)人員歡迎。
1.1 ADC0832的特點
ADC0832具有以下特點[3]:8位分辨率;雙通道A/D轉(zhuǎn)換;輸入/輸出電平與TTL/CMOS相兼容;5 V電源供電時輸入電壓在0~5 V之間;工作頻率為250 kHz,轉(zhuǎn)換時間為32 μs;一般功耗僅為15 mW; 8P,14P_DIP(雙列直插),PICC 多種封裝;商用級芯片溫寬為0~70 ℃,工業(yè)級芯片溫寬為40~85 ℃。圖1為8腳雙列直插式芯片頂視圖。
圖1 芯片頂視圖
1.2 ADC0832芯片接口說明[2]
ADC0832芯片接口說明[2]:CS片選使能,低電平芯片使能;CH0為模擬輸入通道0,或作為IN±使用;CH1為模擬輸入通道1,或作為IN±使用;GND為芯片參考0電位(地);DI為數(shù)據(jù)信號輸入,選擇通道控制;DO為數(shù)據(jù)信號輸出,轉(zhuǎn)換數(shù)據(jù)輸出;CLK為芯片時鐘輸入;VCC/VREF為電源輸入及參考電壓輸入(復(fù)用)。
1.3 ADC0832 與單片機的接口電路
ADC0832與單片機的接口電路如圖2所示。
圖2 ADC0832 與單片機的接口電路
1.4 單片機對ADC0832 的控制原理
在正常情況下ADC0832 與單片機的接口應(yīng)為4條數(shù)據(jù)線,分別是CS,CLK,DO,DI。但由于DO端與DI端在通信時沒有同時有效并與單片機的接口是雙向的,所以電路設(shè)計時可以將DO和DI并聯(lián)在一根數(shù)據(jù)線上使用。如圖3所示當(dāng)ADC0832未工作時其CS輸入端應(yīng)為高電平,此時芯片禁用,CLK,DO和DI的電平可任意。當(dāng)需要進行A/D轉(zhuǎn)換時,需先將CS使能端置于低電平并且保持低電平直到轉(zhuǎn)換完全結(jié)束。此時芯片開始轉(zhuǎn)換工作,同時由處理器向芯片時鐘輸入端CLK 輸入時鐘脈沖,DO,DI端則使用DI端輸入通道功能選擇的數(shù)據(jù)信號。在第1個時鐘脈沖的下沉之前DI端必須是高電平,表示啟始信號[3]。
圖3 ADC0832時序圖
在第2,3個脈沖下沉之前DI端應(yīng)輸入2位數(shù)據(jù)用于選擇通道功能,如表1所示,當(dāng)此兩位數(shù)據(jù)為“1”,“0”時,只對CH0進行單通道轉(zhuǎn)換。當(dāng)兩位數(shù)據(jù)為“1”,“1”時,只對CH1進行單通道轉(zhuǎn)換。當(dāng)兩位數(shù)據(jù)為“0”,“0”時,將CH0作為正輸入端IN+,CH1作為負輸入端IN-進行輸入。當(dāng)兩位數(shù)據(jù)為“0”,“1”時,將CH0作為負輸入端IN-,CH1 作為正輸入端IN+進行輸入。到第3個脈沖的下沉之后DI端的輸入電平就失去輸入作用,此后DO/DI端則開始利用數(shù)據(jù)輸出DO進行轉(zhuǎn)換數(shù)據(jù)的讀取。從第4個脈沖下沉開始由DO端輸出轉(zhuǎn)換數(shù)據(jù)最高位DATA7,隨后每一個脈沖下沉DO端輸出下一位數(shù)據(jù)。直到第11個脈沖時發(fā)出最低位數(shù)據(jù)DATA0,一個字節(jié)的數(shù)據(jù)輸出完成。在從此位開始可以輸出下一個字節(jié)的數(shù)據(jù),或數(shù)據(jù)輸出完成,標志一次A/D轉(zhuǎn)換的結(jié)束。最后將CS置高電平禁用芯片,直接將轉(zhuǎn)換后的數(shù)據(jù)進行處理就可以。更詳細的時序說明如圖3所示\\。
表1 通道地址設(shè)置表
通道模式
地址通道號
SGL/DIF0DD/SIGN01
單通道
10+
11+
雙通道
00+-
01-+
作為單通道模擬信號輸入時ADC0832的輸入電壓是0~5 V且8位分辨率時的電壓精度為19.53 mV。如果作為由IN+與IN-輸入的輸入時,可是將電壓值設(shè)定在某一個較大范圍之內(nèi),從而提高轉(zhuǎn)換的寬度。
2 自制單片機控制ADC0832 芯片印制板
自制單片機控制ADC0832 芯片印制板如圖4所示。
圖4 單片機控制ADC0832芯片的印制板
3 編寫ADC0832 芯片接口程序
為了高速有效地實現(xiàn)通信,這里采用匯編語言編寫接口程序。由于ADC0832 的數(shù)據(jù)轉(zhuǎn)換時間僅為32 μs,所以A/D轉(zhuǎn)換的數(shù)據(jù)采樣頻率可以很快,從而也保證在某些場合對A/D轉(zhuǎn)換數(shù)據(jù)實時性的要求。數(shù)據(jù)讀取程序以子程序調(diào)用的形式出現(xiàn),方便了程序的移植。
由于ADC0832芯片的工作頻率為250 kHz,所以控制芯片的時序為4 μs,編寫程序時應(yīng)以這一頻率為基準編寫程序。編寫了以下程序[5]:
;CS BIT P3.5
;CLK BIT P3.6
;I/O BIT P3.7
MAIN:CLR P3.5;CS
SETB P3.6;拉高CLK端
ACALL OUT
ACALL IN
SETB P3.5;CS
MOV P2,A
LJMP MAIN
OUT: SETB P3.7;啟動位
NOP;地址后一定要有1 μs的空操作否則芯片寫不穩(wěn)定
CLR P3.5;第一個下降沿,拉低/CS端
NOP
SETB P3.6;拉高CLK端,兩個拉高之間時間為4 μs,因
為器件的頻率為250 MHz
CLR P3.7;地址0
NOP
CLR P3.6;拉低CLK端.形成下降沿2
NOP
NOP
SETB P3.6;拉高CLK端
SETB P3.7;地址0
NOP
CLR P3.6;拉低CLK端.形成下降沿 3
RET
IN: MOV R7,#08
SETB P3.6 ;CLK
CLR P3.6 ; CLK
IN1: SETB P3.6 ; CLK
CLR P3.6;CLK
MOV C,P3.7 ;I/O
RLC A
DJNZ R7,IN1
RET
END
將上述ADC0832接口程序進行調(diào)試:
先用Proteus仿真軟件對程序進行調(diào)整[6,7],開始時芯片不能正常工作,輸入的模擬量不能轉(zhuǎn)換成數(shù)字量,這時就改變程序中的時序,使CLK的頻率保持在250 kHz,即CLK兩次低電平或高電平之間保持4 μs,經(jīng)過調(diào)整,再次仿真此時芯片能正常轉(zhuǎn)換,如圖5所示。可見ADC0832的正常運行的關(guān)鍵在于控制時序,要正確控制時序,還必須確切知道程序中每句語句的執(zhí)行時間。上述程序只是地址參數(shù)為01時的調(diào)試結(jié)果。
改變地址參數(shù),發(fā)現(xiàn)地址參數(shù)為01,10,11時都能正常轉(zhuǎn)換,惟有地址參數(shù)為00不能正常轉(zhuǎn)換。暫時無法查明原因。
僅用軟件調(diào)試不足以證明程序的正確性,所以著手用硬件來調(diào)試。
硬件調(diào)試時一般可采用邏輯分析儀或頻率達100 MHz以上的示波器來幫助調(diào)試。在此利用邦達儀器公司的泰克MSO-2024示波器[8],對程序進行進一步調(diào)試。
將MSO-2024示波器1~3通道的主要參數(shù)調(diào)到:觸發(fā)類型為邊沿、DC、50 V/格、10 μs/格、采樣頻率13.157 7 kHz,使儀器進入工作狀態(tài)。
圖5 用protuse仿真的ADC0832的時序
把1通道接在CS信號上,把2通道接在CLK信號上,3通道接在DI/DO信號上,讓單片機系統(tǒng)進入運行狀態(tài)[9]。
觀察示波器中CS,CLK,DI/DO信號的時序波形,特別是DI/DO信號的地址、數(shù)據(jù)是否完整,第一個時序是起始位,第2、3個時序是地址,些時示波器地址段顯示01,后面是A/D轉(zhuǎn)換后的數(shù)字數(shù)據(jù),調(diào)節(jié)可變電阻R,觀察到數(shù)據(jù)段的數(shù)據(jù)隨之在變化,同時P2口的發(fā)光二極管也有明暗變化,分析判斷AD0832是正常轉(zhuǎn)換的。從這一過程確準所使用的硬件是可用的。
用此硬件,修改程序的地址參數(shù),檢測ADC0832程序,結(jié)果仿真軟件通過,硬件上同樣通過,還是地址參數(shù)為00時不能通過,軟件調(diào)試、硬件調(diào)試都通不過。提示為芯片設(shè)計的預(yù)期效果與實際使用操作沒有溝通。所以對地址參數(shù)為00的程序進一步調(diào)試。
首先對比通道參數(shù)01的時序與通道參數(shù)00的時序,如圖6所示。前3個時序都顯示單片機按控制要求控制著ADC0832,而到第4個時序時應(yīng)顯示轉(zhuǎn)換的數(shù)據(jù),地址參數(shù)為01時ADC0832正常轉(zhuǎn)換,所以數(shù)據(jù)正常顯示;而地址參數(shù)為00時ADC0832沒能正常轉(zhuǎn)換,數(shù)據(jù)為全0。
考慮可能是因為地址為00,而地址段與數(shù)據(jù)段之間DI/DO沒有變化,芯片不能識別是地址還是數(shù)據(jù),所以在地址段后加上一個高電平,即在程序中加上SETB P3.7,結(jié)果ADC0832能正常轉(zhuǎn)換,如圖7所示。由此可見問題出在地址段與數(shù)據(jù)段的有效連接,也就是地址過后,DO信號需要處在高電平狀態(tài)下A/D才能正常轉(zhuǎn)換。
圖6 地址參數(shù)為01、00時的時序?qū)Ρ?/p>
將前面的主程序修改為:
MAIN:CLR P3.5;cs
SETB P3.6;拉高CLK端
ACALL OUT
ACALL IN
SETB P3.5;CS
MOV P2,A
LJMP MAIN
圖7 正常轉(zhuǎn)換后的通道參數(shù)為00的時序
4 結(jié) 語
串行芯片調(diào)試的關(guān)鍵在于點:
(1) 對芯片的性能要有深刻體會,特別是芯片工作頻率為250 kHz,轉(zhuǎn)換時間為32 μs;要在編寫程序時特別注意,需要編寫程者了解每句指令的執(zhí)行時間,嚴格控制CLK的時序,即控制CLK的時序為4 μs,整個轉(zhuǎn)換時間控制在32 μs。
(2) DI/DO信號輸入/輸出時,數(shù)據(jù)是串行輸入/輸出的,先是輸入地址參數(shù),后面輸出的才是轉(zhuǎn)換數(shù)據(jù)。而地址參數(shù)是01,10,11時芯片都能正常輸出數(shù)據(jù),當(dāng)?shù)刂穮?shù)為00無法判斷是地址還是數(shù)據(jù)時,就應(yīng)考慮將輸出信號置于高電平狀態(tài)下,芯片才不會鉗位在低電平而不能正常轉(zhuǎn)換。
(3) 測量高速串行數(shù)據(jù),需要高頻率或能測試串行數(shù)據(jù)的示波器,如果示波器頻率不高也是無法調(diào)試的。
(4) 在雙通道模式輸入時,如果IN-的電壓大于IN+的電壓則轉(zhuǎn)換后的數(shù)據(jù)結(jié)果也不為00H。
由于目前維修人員對串行數(shù)據(jù)芯片調(diào)試知識與技能的饋乏,往往將可以使用的設(shè)備作為廢品,造成巨大的浪費,故在職技教學(xué)中必須重視此項內(nèi)容的教學(xué)。
參考文獻
[1]莊建清,徐瑋.51單片機綜合學(xué)習(xí)系統(tǒng)\\.電子制作雜志,2008(8):21-23.
[2]杜洋.A/D轉(zhuǎn)換芯片ADC0832的應(yīng)用\\.http://hi.baidu.com/doyoungnet/blog/item/f23400cacc039d81c917689a.html,2008.
[3]百渡百科.ADC0832\\.http://baike.baidu.com/view/2412671.html,2009.
[4]ADC0832簡單應(yīng)用\\.http://hi.baidu.com/37772166/blog/item/cfff3834cef83a3e5ab5f55a.html,2008.
[5]劉雪雪,趙良法.單片機原理及實踐\\.北京:高等教育出版社,2006.
[6]EDN實驗板之ADC0832轉(zhuǎn)換數(shù)碼管顯示+Proteus同步仿真\\.http://blog.ednchina.com/bawgijfd/52883/post.aspx,2007/10/23.
[7]周潤景.Proteus在MCS-51ARM7系統(tǒng)中的應(yīng)用百例\\.北京:電子工業(yè)出版社,2006.
[8]深圳市金凱博電子有限公司.MSO2024 數(shù)字信號示波器200 MHz帶寬\\.http://www.chem17.com/st19476/product-656136.html,2008.
[9]泰克科技有限公司.泰克示波器說明書\\.2004.
[10]徐媛媛,吳援明.基于AD9858的寬帶正交信號產(chǎn)生技術(shù)的研究\\.現(xiàn)代電子技術(shù),2007,30(7):12-14.