文獻標識碼: A
文章編號: 0258-7998(2013)08-0017-03
隨著當今電子技術的發(fā)展,,人們對數(shù)據(jù)通信速度和操作安裝的簡易性等方面的要求日益提高,使得數(shù)據(jù)通信技術不可避免地成為一項關鍵技術,。USB是一種通用串行總線,,其發(fā)展速度非常迅猛,USB協(xié)議已由傳輸速度為12 Mb/s的USB1.1發(fā)展到傳輸速度支持低速,、全速,、高速和超高速的USB3.0,最大傳輸速度高達5 Gb/s,。USB總線技術由于數(shù)據(jù)傳輸速度高,、使用方便和能夠連接多達127個外設,因此其在數(shù)據(jù)通信中的應用越來越廣泛,。
Windows平臺下傳統(tǒng)的USB應用系統(tǒng)的開發(fā)步驟是:先用Windows DDK或第三方開發(fā)工具開發(fā)USB驅動程序,,然后用Visual C++開發(fā)應用程序。若讓不熟悉Windows編程的開發(fā)者用傳統(tǒng)方法開發(fā)USB驅動程序和應用程序,,將會非常困難[1],。因此,本文介紹了一種難度較低的USB應用系統(tǒng)實現(xiàn)方案,,即在LabVIEW環(huán)境下基于NI-VISA實現(xiàn)PC與C8051F320單片機的USB通信系統(tǒng),。
1 系統(tǒng)總體設計
本系統(tǒng)選用具有USB接口的C8051F320-TBC開發(fā)板實現(xiàn)數(shù)據(jù)的雙向通信。該設計完成兩項任務:(1)采集單片機上溫度傳感器的數(shù)據(jù),,通過USB上傳至PC,;(2)PC通過USB發(fā)送指令至單片機,控制單片機執(zhí)行相應的動作,。
本系統(tǒng)的硬件平臺結構如圖1所示,。
本系統(tǒng)的軟件平臺設計包括單片機端的固件(Firmware)程序設計、PC端的驅動程序設計和PC端的應用程序設計3方面,。
單片機端固件程序的任務是處理來自USB主機端的標準請求和完成與USB主機的數(shù)據(jù)交換,;PC端的驅動程序作為USB主機(PC)和USB從機(單片機)的橋梁,其主要任務是讓USB主機可以識別USB設備,,并將硬件本身的功能告訴USB主機,;PC端的應用程序的任務是通過驅動程序與USB設備進行通信并對USB數(shù)據(jù)進行處理。
本文采用LabVIEW平臺開發(fā)PC端的驅動程序和應用程序,,采用Silicon Laboratories IDE集成開發(fā)環(huán)境開發(fā)固件程序,。本系統(tǒng)軟件平臺結構如圖2所示。
2 模塊設計
2.1 固件程序設計
單片機端固件程序設計的目的是使USB主機能夠識別USB設備(本系統(tǒng)為C8051F320設備),,并正確與USB設備進行雙向通信,。
固件程序完成的任務有三項:(1)使得USB主機可識別USB設備,,并建立二者之間的通信;(2)接收由USB主機發(fā)送來的控制指令,,在本設計中為點亮單片機的LED燈,;(3)將采集的溫度數(shù)據(jù)傳送給USB主機。
本設計將固件程序劃分為USB描述符聲明程序(usb_desc.c),、中斷服務程序(usb_isr.c),、標準設備請求程序(usb_stdreq.c)、主程序(main.c)4個子模塊,。
USB描述符聲明程序(usb_desc.c)用來描述設備的USB信息,。該文件包含有USB協(xié)議中規(guī)定的5種標準描述符信息:設備描述符信息、配置描述符信息,、接口描述符信息,、端點描述符信息和字符串描述符信息。USB主機通過訪問這些描述符即可實現(xiàn)對設備類型的識別和配置,。
中斷服務程序(usb_isr.c)用來處理所有與USB相關的中斷事件,,當有任何類型的USB中斷事件發(fā)生時,固件程序都會調用這個中斷服務程序,。
標準設備請求程序(usb_stdreq.c)包括所有標準設備請求的處理例程,,這些處理例程都是通過控制端點的處理來調用,該文件主要用來處理USB主機發(fā)送的標準請求,。
主程序(main.c)的功能是響應USB主機發(fā)送的控制指令并將采集的溫度數(shù)據(jù)傳送給USB主機,。
固件程序流程圖如圖3所示。
由圖3可知,,該固件程序首先進行設備列舉[2],,其目的是使USB主機能夠識別USB設備。USB主機根據(jù)設備的描述符信息對USB設備進行配置并分配資源,,待通信建立后,,USB設備可接收由USB主機發(fā)來的控制指令,并將采集的溫度數(shù)據(jù)通過USB傳給USB主機,。
2.2 驅動程序設計
驅動程序的設計采用虛擬儀器軟件架構NI-VISA實現(xiàn),,NI-VISA(Virtual Instrument Software Architecture)是由美國NI公司開發(fā)的一種用來與各種儀器總線進行通信的高級應用編程接口。VISA是一個綜合軟件包,,可在任何平臺,、總線和環(huán)境下對USB、串口,、GPIB,、VXI、PXI及以太網(wǎng)等進行配置,、編程和調試,。
USB設備有USB INSTR設備與USB RAW設備兩類。符合USB測試和測量類(USBTMC)協(xié)議的設備稱為USB INSTR設備,;不符合USBTMC協(xié)議的設備稱為USB RAW設備,。
NI-VISA有USB INSTR類函數(shù)與USB RAW類函數(shù)兩種VISA類函數(shù),它們可分別控制USB INSTR與USB RAW兩種設備,。USB INSTR設備可通過LabVIEW直接調用USB INSTR類函數(shù)實現(xiàn)對其控制,;而USB RAW設備則需先使用NI-VISA來創(chuàng)建USB設備的驅動程序[3],創(chuàng)建正確后才能利用LabVIEW調用USB RAW類函數(shù)實現(xiàn)對其控制,。
使用NI-VISA軟件包中的VISA Interactive Control測試可知,,本設計中的USB設備屬于USB RAW類設備,因此需要通過NI-VISA來創(chuàng)建驅動程序,。驅動程序設計的任務是制作INF文件,、配置USB設備及安裝驅動程序并驗證其正確安裝,可分為以下3個步驟[4]:(1)使用VISA驅動開發(fā)向導(Driver Development Wizard)創(chuàng)建INF文件,;(2)使用INF文件安裝驅動程序和USB設備,;(3)使用NI-VISA交互式控制測試設備。
2.3 應用程序設計
當正確安裝VISA驅動程序之后,,便可通過LabVIEW程序調用USB RAW類函數(shù)來完成與USB設備的通信[5],。本應用程序設計的主要任務有兩個:(1)PC接收由單片機采集的溫度數(shù)據(jù),并通過LabVIEW顯示,;(2)PC通過LabVIEW軟件發(fā)送指定的指令點亮單片機的LED燈,。
由于本設計中的RAW設備編程較為復雜,不像INSTR設備那樣可以使用USBTMC協(xié)議直接調用VISA常用函數(shù),,故需重新編寫程序,。編寫本設計主要用到的控件為:VISA打開、VISA啟用事件,、VISA等待事件,、VISA獲取USB中斷數(shù)據(jù)、VISA寫和VISA關閉,。
PC通過USB向單片機發(fā)送指令的流程圖如圖4所示,,PC接收單片機通過USB傳送來的數(shù)據(jù)的流程圖如圖5所示。
根據(jù)圖4和圖5的流程圖進行LabVIEW編程,,其后面板的核心代碼分別如圖6和7所示,。
3 系統(tǒng)功能測試
在完成各個模塊的設計后,需進行系統(tǒng)集成,。結合硬件框圖進行實物連接,,依次完成固件程序下載、驅動程序安裝和應用程序整合,。
(1)單片機將所采集的溫度信息通過USB將數(shù)據(jù)傳送給PC,,其LabVIEW前面板及測試結果如圖8所示,。
單片機的核心代碼如下:
In_Packet[0] = Switch1State;
In_Packet[1] = Switch2State;
In_Packet[2] = (P0 & 0x0F);
In_Packet[3] = Potentiometer;
In_Packet[4] = Temperature;
通過與單片機發(fā)送數(shù)據(jù)的格式對比可知,所傳送數(shù)據(jù)的格式正確,,使用“Bus Hound”軟件驗證了所傳送的數(shù)據(jù)正確無誤,。
(2)PC機通過USB將指定的數(shù)據(jù)傳送給單片機,可觀察到正常點亮單片機的LED燈,。
本文介紹了如何在LabVIEW環(huán)境下基于NI-VISA實現(xiàn)PC與單片機C8051F320的USB通信,,并給出系統(tǒng)實現(xiàn)方案。實驗測試表明,,該方案能夠實現(xiàn)USB通信,,且方案實現(xiàn)難度較低。本系統(tǒng)可為USB應用系統(tǒng)的設計提供參考,。
參考文獻
[1] 佘志榮,,楊莉.基于NI-VISA與LabVIEW的USB接口應用設計[J].單片機與嵌入式系統(tǒng)應用,2007(1):66-68.
[2] 趙宏斌,,全厚德.基于C8051F320的數(shù)據(jù)采集系統(tǒng)USB接口設計[J].單片機開發(fā)與應用,,2009,25(9):92-94.
[3] 蔡共宣.基于LabVIEW的單片機USB數(shù)據(jù)采集系統(tǒng)設計[J].實驗科學與技術,,2009,,8(1):58-59.
[4] National Instruments.USB儀器控制教程[Z],2009.
[5] 張桐,,陳國順.精通LabVIEW程序設計[M].北京:電子工業(yè)出版社,,2008.