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