韓金霞 楊景常 杜煥勇 黃亞琴
(西華大學(xué)電氣信息學(xué)院,四川 成都 610039)
隨著計算機技術(shù)和自動測試系統(tǒng)的發(fā)展,人們對程控儀器的測試速度和準(zhǔn)確度的要求也日益提高。同時,由于程控儀器SCPI(standard commands for programmable instrument)具有“橫向兼容性”(不同產(chǎn)品類型之間的兼容性)和“縱向兼容性”(即產(chǎn)品各代之間的兼容性),并且為了便于儀器在不同總線的自動測試系統(tǒng)中的應(yīng)用,本文提出了基于儀器接口平臺的USB接口模塊設(shè)計,提高了程控儀器的通用性。
在自動測試系統(tǒng)中,由控制機向可程控儀器發(fā)出SCPI指令(一連串的ASCII碼),可程控儀器的接口部分經(jīng)過語法分析,將SCPI指令轉(zhuǎn)換為儀器部分可識別的控制代碼。接口部分的語法分析步驟一般分為接收字符串消息、詞法分析、語法分析、中間代碼生成、優(yōu)化和目標(biāo)代碼生成[1]。自動測試系統(tǒng)中的儀器接口正是以這樣的工作原理將控制機和程控儀器相結(jié)合,實現(xiàn)測試工作的自動化。USB接口模塊的設(shè)計也是基于這樣的一種理念,將PC機發(fā)送來的ASCII碼字符串表示的SCPI消息轉(zhuǎn)變?yōu)楹唵蔚亩M制代碼串。利用USB接口模塊不僅可以實現(xiàn)儀器語言標(biāo)準(zhǔn)化,而且還能提高儀器對遠程控制的響應(yīng)速度。
USB接口的具體實現(xiàn)是首先通過上位控制機,將建立在IEEE 488.2(程控儀器消息交換協(xié)議)基礎(chǔ)上的SCPI(一連串的ASCII碼)發(fā)送到USB的接收緩沖區(qū);然后通過USB中央處理單元,將SCPI消息解析為簡單的二進制代碼串;最后將此二進制代碼命令發(fā)送到程控儀器并執(zhí)行相應(yīng)的操作。
整個系統(tǒng)的設(shè)計主要包括接口電路和LCD顯示模塊等部分,硬件電路整體框圖如圖1所示。
圖1 硬件電路整體框圖Fig.1 The entire block diagram of hardware circuit
上位機虛擬儀器將SCPI程控命令發(fā)送到USB接口芯片緩沖區(qū),接口電路中單片機從USB接口芯片緩沖區(qū)讀取數(shù)據(jù),并對數(shù)據(jù)進行解析翻譯,實現(xiàn)對程控儀器的控制。電路中設(shè)計的LCD1602用于調(diào)試過程中對SCPI指令的顯示。
系統(tǒng)采用增強型8051內(nèi)核的單片機STC89C516RD+作為中央處理芯片。STC89C516RD+是一款低功耗芯片,它具有64 kB的Flash程序存儲器和8 kB的片內(nèi)Flash存儲區(qū)(可存放ISP引導(dǎo)程序與用戶數(shù)據(jù))。芯片中1280 B的RAM(256 B的內(nèi)部RAM和1 kB的外部RAM)解決了在編程時遇到的RAM資源缺乏的問題,支持在系統(tǒng)編程(ISP)和在應(yīng)用編程(IAP)兩種方法,實現(xiàn)在線編程。
USB主機控制芯片采用南京沁恒電子公司生產(chǎn)的CH375A[2],它是一個 USB總線通用接口芯片,支持USB-Host主機方式和USB-Device/Slave設(shè)備方式。在本地端,CH375A具有8位數(shù)據(jù)總線和讀/寫、片選控制線及中斷輸出,可以方便地掛接到單片機、DSP、MCU和MPU等控制器的系統(tǒng)總線上。在USB設(shè)備方式下,CH375A是一個全速USB設(shè)備接口,兼容USB2.0且即插即用[3];外圍元器件只需要具備晶體和電容,這樣就降低了設(shè)備的成本,縮小了設(shè)備的體積。同時,CH375A還提供一對主端點和一對輔助端點,支持控制、批量以及中斷傳輸,具有內(nèi)置固件模式和外部固件模式。
USB接口原理如圖2所示。
圖2 USB接口原理圖Fig.2 The principle of USB interface
圖2中:CH375A的數(shù)據(jù)線D0~D7連接到微處理器的數(shù)據(jù)線D0~D7;CH375A的引腳分別連接到單片機的STC89C516RD+寫選通引腳和讀選通引腳線確定了CH375A的地址;A0也作為地址的一部分。
當(dāng)A0為1時,表明寫入CH375的為命令;當(dāng)A0為0時,表明寫入或者從CH375A讀出的為數(shù)據(jù)。由于低8位地址線與CH375的操作地址無關(guān),因此,沒有使用地址鎖存器74LS373。高8位地址線中除了A0和CS,其他的地址線也與操作地址無關(guān)[4]。據(jù)此,CH375A的寫命令地址為0xfe00,讀或者寫數(shù)據(jù)的地址為0xfc00。中斷請求輸出,低電平有效,其直接連接到單片機的中斷輸入引腳當(dāng)CH375A接收到來自USB總線的數(shù)據(jù),需要微處理器進行處理時,則通過引腳向微處理器請求中斷。
本設(shè)計的軟件部分主要分為兩個部分:①上位機軟件設(shè)計,實現(xiàn)程控命令的發(fā)送和數(shù)據(jù)的回顯;②單片機應(yīng)用程序設(shè)計,實現(xiàn)對命令、數(shù)據(jù)的讀寫和SCPI解析技術(shù)的具體實現(xiàn)。
本設(shè)計的上位機程序采用NI-VISA與USB設(shè)備進行通信[5]。
VISA是用來與各種儀器總線進行通信的高級應(yīng)用編程接口(API),它不受平臺、總線和環(huán)境的限制。通用串行總線(USB)是基于信息的通信總線。這表示PC機與USB設(shè)備通過發(fā)送指令和數(shù)據(jù)進行通信。
每個USB設(shè)備有各自的指令集,可以使用NI-VISA的讀寫功能向儀器發(fā)送這些指令。當(dāng)與USB進行通信時,NI-VISA從3.0版開始支持USB通信,它有兩種VISA函數(shù),可以控制USB INSTR與USB RAW這兩類USB設(shè)備。本設(shè)計中的USB設(shè)備屬于USB RAW設(shè)備。
使用NI-VISA控制USB設(shè)備時,需要分以下三個步驟配置USB設(shè)備:① 使用Driver Development Wizar(驅(qū)動程序開發(fā)向?qū)?創(chuàng)建INF文檔;②安裝INF文檔并安裝使用INF文檔的USB設(shè)備;③使用NI-VISA interactive Control(NI-VISA互動控制工具)對設(shè)備進行測試。
配置完成后,打開Measurement&Automation Explore(MAX),點擊USB設(shè)備,屬性窗口顯示設(shè)備制造商ID、型號代碼以及設(shè)備序列號等相關(guān)信息。
USB設(shè)備配置完成后,設(shè)計用NI-VISA與USB設(shè)備進行通信。由于本設(shè)備是USB RAW類,所以要使用具體的CH375A的通信協(xié)議。NI-VISA與USB通信的程序框圖如圖3所示。
圖3 通信程序框圖Fig.3 The block diagram of communication program
圖3中:Bulk Out Buffer和空字符串為從界面上輸入的標(biāo)準(zhǔn)SCPI程控命令。本設(shè)計中的CH375A選用的是內(nèi)置固件模式,且USB RAW設(shè)備通信采用端點2以批量傳輸?shù)姆绞浇邮丈衔粰C操作命令,同時,端點2以批量傳輸?shù)姆绞浇o上位機發(fā)回儀器測試數(shù)據(jù)?!?30”是對應(yīng)十六進制數(shù)“0082”的十進制數(shù),它表示端點2批量輸入;而端點數(shù)“2”對應(yīng)十六進制數(shù)“0010”的十進制數(shù),表示端點2批量發(fā)送。
單片機應(yīng)用程序是在Keil C51開發(fā)環(huán)境下通過C語言編程實現(xiàn)的,它主要包括USB程序設(shè)計和SCPI解析模塊設(shè)計兩部分。
3.2.1 USB 程序設(shè)計
對CH375A的操作主要通過寫命令、寫數(shù)據(jù)和讀出數(shù)據(jù)來完成。每次操作時,首先向CH375A中寫入命令碼,然后寫入輸入數(shù)據(jù),接著讀出輸出數(shù)據(jù)。每次CH375A收到來自主控制器的數(shù)據(jù)或者發(fā)送數(shù)據(jù)完畢時,都會復(fù)位管腳,微處理器可以通過查詢的方式監(jiān)測管腳的電平,然后進行處理。本設(shè)計中,通過軟件程序設(shè)定CH375A為內(nèi)置固件模式,當(dāng)接到上位PC機發(fā)送的SCPI程控命令時,CH375A鎖定當(dāng)前的USB緩沖區(qū),并將腳設(shè)置為低電平[6],向單片機請求中斷,單片機進入中斷服務(wù)程序,獲得中斷狀態(tài);然后單片機根據(jù)獲得的中斷狀態(tài)處理相應(yīng)的程序。
3.2.2 SCPI解析模塊的設(shè)計
SCPI命令主要包括SCPI儀器公用命令和SCPI儀器特定命令。SCPI的語法很多,由于我們的主要目的是提高程控效率,故在解析時只解析程控題頭,而不解析程控數(shù)據(jù)??偨Y(jié)SCPI儀器公用命令和特定命令,并以多維數(shù)組的形式存儲,其中儀器公用命令只有一層,而儀器特定命令總共七層,將每一層存儲在不同的數(shù)組中,將命令所在數(shù)組的行數(shù)通過LCD輸出顯示,然后將翻譯后的二進制命令送入儀器執(zhí)行相應(yīng)的動作。
SCPI的主程序流程圖如圖4所示[7]。
圖4 主程序流程圖Fig.4 Flowchart of the main program
該接口在實驗室設(shè)計的晶振與繼電器精度測試儀上進行的測試結(jié)果如表1所示。根據(jù)設(shè)計,測試儀執(zhí)行了相應(yīng)的操作,證明了此接口的實用性。
表1 不同SCPI命令解析結(jié)果Tab.1 Parsing results of different SCPI commands
本文提出的基于儀器接口平臺的USB接口模塊設(shè)計方案使程控儀器能方便地接入自動測試系統(tǒng),從而實現(xiàn)了接口的通用性,并縮減了開發(fā)周期。同時,本設(shè)計采用的SCPI解析技術(shù)使程控儀器器件數(shù)據(jù)和命令得到了標(biāo)準(zhǔn)化,具有高可靠性和高執(zhí)行效率。
[1]Wheeler H.SCPI:the next step in the evolution of ATE systems,electronics test[M].New York:Industry Publisher,1990:12 -15.
[2]南京沁恒電子有限公司.USB總線接口芯片CH375[DB/OL].[2005 - 05 - 10].http:∥www.Winchiphead.com/product.ch-375detail.html.
[3]張銀海.基于CH375的USB移動存儲接口設(shè)計[J].電子元器件應(yīng)用,2008(10):22 -24.
[4]鐘富昭.8051單片機典型模塊設(shè)計與應(yīng)用[M].北京:人民郵電出版社,2007:24-39.
[5]張凱,周陬,郭棟.LabVIEW虛擬儀器工程設(shè)計與開發(fā)[M].北京:國防工業(yè)出版社,2004:244-252.
[6]黃惟公,鄧成中,王燕.單片機原理與應(yīng)用技術(shù)[M].西安:西安電子科技大學(xué)出版社,2007:163-183.
[7]馬忠梅,籍順心,馬凱,等.單片機的C語言應(yīng)用程序設(shè)計[M].北京:北京航空航天大學(xué)出版社,2007:94-110.