《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于LabVIEW NI-VISA實(shí)現(xiàn)PC與C8051F320的USB數(shù)據(jù)通信
基于LabVIEW NI-VISA實(shí)現(xiàn)PC與C8051F320的USB數(shù)據(jù)通信
來(lái)源:電子技術(shù)應(yīng)用2013年第8期
段晉軍,,位恒曦,,常曉明
太原理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,,山西 太原030024
摘要: 針對(duì)傳統(tǒng)USB系統(tǒng)開(kāi)發(fā)難度較大的問(wèn)題,,介紹了一種基于NI-VISA實(shí)現(xiàn)PC與USB裸設(shè)備——C8051F320單片機(jī)的USB通信系統(tǒng)的實(shí)現(xiàn)方案,。該方案對(duì)開(kāi)發(fā)PC外圍USB設(shè)備以及基于USB的應(yīng)用系統(tǒng)設(shè)計(jì)具有一定參考意義,。
中圖分類號(hào): TN919
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)08-0017-03
Realization of USB communication between PC and C8051F320 based on LabVIEW NI-VISA
Duan Jinjun,,Wei Hengxi,,Chang Xiaoming
College of Computer Science and Technology,,Taiyuan University of Technology,,Taiyuan 030024,China
Abstract: Tradional USB system has much difficulty in development.For this reason,,an USB communication solution between PC and USB RAW device C8051F320 MCU based on LabVIEW NI-VISA is introduced in this paper,,which can be a reference for the development of USB device and the design of USB application system.
Key words : USB;LabVIEW;NI-VISA,;C8051F320

    隨著當(dāng)今電子技術(shù)的發(fā)展,,人們對(duì)數(shù)據(jù)通信速度和操作安裝的簡(jiǎn)易性等方面的要求日益提高,使得數(shù)據(jù)通信技術(shù)不可避免地成為一項(xiàng)關(guān)鍵技術(shù),。USB是一種通用串行總線,,其發(fā)展速度非常迅猛,USB協(xié)議已由傳輸速度為12 Mb/s的USB1.1發(fā)展到傳輸速度支持低速,、全速,、高速和超高速的USB3.0,最大傳輸速度高達(dá)5 Gb/s,。USB總線技術(shù)由于數(shù)據(jù)傳輸速度高,、使用方便和能夠連接多達(dá)127個(gè)外設(shè),因此其在數(shù)據(jù)通信中的應(yīng)用越來(lái)越廣泛,。

    Windows平臺(tái)下傳統(tǒng)的USB應(yīng)用系統(tǒng)的開(kāi)發(fā)步驟是:先用Windows DDK或第三方開(kāi)發(fā)工具開(kāi)發(fā)USB驅(qū)動(dòng)程序,,然后用Visual C++開(kāi)發(fā)應(yīng)用程序。若讓不熟悉Windows編程的開(kāi)發(fā)者用傳統(tǒng)方法開(kāi)發(fā)USB驅(qū)動(dòng)程序和應(yīng)用程序,,將會(huì)非常困難[1],。因此,本文介紹了一種難度較低的USB應(yīng)用系統(tǒng)實(shí)現(xiàn)方案,,即在LabVIEW環(huán)境下基于NI-VISA實(shí)現(xiàn)PC與C8051F320單片機(jī)的USB通信系統(tǒng),。
1 系統(tǒng)總體設(shè)計(jì)
    本系統(tǒng)選用具有USB接口的C8051F320-TBC開(kāi)發(fā)板實(shí)現(xiàn)數(shù)據(jù)的雙向通信。該設(shè)計(jì)完成兩項(xiàng)任務(wù):(1)采集單片機(jī)上溫度傳感器的數(shù)據(jù),,通過(guò)USB上傳至PC,;(2)PC通過(guò)USB發(fā)送指令至單片機(jī),控制單片機(jī)執(zhí)行相應(yīng)的動(dòng)作,。
    本系統(tǒng)的硬件平臺(tái)結(jié)構(gòu)如圖1所示,。

    本系統(tǒng)的軟件平臺(tái)設(shè)計(jì)包括單片機(jī)端的固件(Firmware)程序設(shè)計(jì)、PC端的驅(qū)動(dòng)程序設(shè)計(jì)和PC端的應(yīng)用程序設(shè)計(jì)3方面,。
    單片機(jī)端固件程序的任務(wù)是處理來(lái)自USB主機(jī)端的標(biāo)準(zhǔn)請(qǐng)求和完成與USB主機(jī)的數(shù)據(jù)交換,;PC端的驅(qū)動(dòng)程序作為USB主機(jī)(PC)和USB從機(jī)(單片機(jī))的橋梁,其主要任務(wù)是讓USB主機(jī)可以識(shí)別USB設(shè)備,,并將硬件本身的功能告訴USB主機(jī),;PC端的應(yīng)用程序的任務(wù)是通過(guò)驅(qū)動(dòng)程序與USB設(shè)備進(jìn)行通信并對(duì)USB數(shù)據(jù)進(jìn)行處理。
    本文采用LabVIEW平臺(tái)開(kāi)發(fā)PC端的驅(qū)動(dòng)程序和應(yīng)用程序,,采用Silicon Laboratories IDE集成開(kāi)發(fā)環(huán)境開(kāi)發(fā)固件程序,。本系統(tǒng)軟件平臺(tái)結(jié)構(gòu)如圖2所示。

2 模塊設(shè)計(jì)
2.1 固件程序設(shè)計(jì)

    單片機(jī)端固件程序設(shè)計(jì)的目的是使USB主機(jī)能夠識(shí)別USB設(shè)備(本系統(tǒng)為C8051F320設(shè)備),,并正確與USB設(shè)備進(jìn)行雙向通信,。
    固件程序完成的任務(wù)有三項(xiàng):(1)使得USB主機(jī)可識(shí)別USB設(shè)備,,并建立二者之間的通信;(2)接收由USB主機(jī)發(fā)送來(lái)的控制指令,,在本設(shè)計(jì)中為點(diǎn)亮單片機(jī)的LED燈,;(3)將采集的溫度數(shù)據(jù)傳送給USB主機(jī)。
    本設(shè)計(jì)將固件程序劃分為USB描述符聲明程序(usb_desc.c),、中斷服務(wù)程序(usb_isr.c),、標(biāo)準(zhǔn)設(shè)備請(qǐng)求程序(usb_stdreq.c)、主程序(main.c)4個(gè)子模塊,。
    USB描述符聲明程序(usb_desc.c)用來(lái)描述設(shè)備的USB信息,。該文件包含有USB協(xié)議中規(guī)定的5種標(biāo)準(zhǔn)描述符信息:設(shè)備描述符信息、配置描述符信息,、接口描述符信息,、端點(diǎn)描述符信息和字符串描述符信息。USB主機(jī)通過(guò)訪問(wèn)這些描述符即可實(shí)現(xiàn)對(duì)設(shè)備類型的識(shí)別和配置,。
    中斷服務(wù)程序(usb_isr.c)用來(lái)處理所有與USB相關(guān)的中斷事件,,當(dāng)有任何類型的USB中斷事件發(fā)生時(shí),,固件程序都會(huì)調(diào)用這個(gè)中斷服務(wù)程序,。
    標(biāo)準(zhǔn)設(shè)備請(qǐng)求程序(usb_stdreq.c)包括所有標(biāo)準(zhǔn)設(shè)備請(qǐng)求的處理例程,這些處理例程都是通過(guò)控制端點(diǎn)的處理來(lái)調(diào)用,,該文件主要用來(lái)處理USB主機(jī)發(fā)送的標(biāo)準(zhǔn)請(qǐng)求,。
    主程序(main.c)的功能是響應(yīng)USB主機(jī)發(fā)送的控制指令并將采集的溫度數(shù)據(jù)傳送給USB主機(jī)。
    固件程序流程圖如圖3所示,。

    由圖3可知,,該固件程序首先進(jìn)行設(shè)備列舉[2],其目的是使USB主機(jī)能夠識(shí)別USB設(shè)備,。USB主機(jī)根據(jù)設(shè)備的描述符信息對(duì)USB設(shè)備進(jìn)行配置并分配資源,,待通信建立后,USB設(shè)備可接收由USB主機(jī)發(fā)來(lái)的控制指令,,并將采集的溫度數(shù)據(jù)通過(guò)USB傳給USB主機(jī),。
2.2 驅(qū)動(dòng)程序設(shè)計(jì)
    驅(qū)動(dòng)程序的設(shè)計(jì)采用虛擬儀器軟件架構(gòu)NI-VISA實(shí)現(xiàn),NI-VISA(Virtual Instrument Software Architecture)是由美國(guó)NI公司開(kāi)發(fā)的一種用來(lái)與各種儀器總線進(jìn)行通信的高級(jí)應(yīng)用編程接口,。VISA是一個(gè)綜合軟件包,,可在任何平臺(tái)、總線和環(huán)境下對(duì)USB,、串口,、GPIB、VXI,、PXI及以太網(wǎng)等進(jìn)行配置,、編程和調(diào)試,。
    USB設(shè)備有USB INSTR設(shè)備與USB RAW設(shè)備兩類。符合USB測(cè)試和測(cè)量類(USBTMC)協(xié)議的設(shè)備稱為USB INSTR設(shè)備,;不符合USBTMC協(xié)議的設(shè)備稱為USB RAW設(shè)備,。
    NI-VISA有USB INSTR類函數(shù)與USB RAW類函數(shù)兩種VISA類函數(shù),它們可分別控制USB INSTR與USB RAW兩種設(shè)備,。USB INSTR設(shè)備可通過(guò)LabVIEW直接調(diào)用USB INSTR類函數(shù)實(shí)現(xiàn)對(duì)其控制,;而USB RAW設(shè)備則需先使用NI-VISA來(lái)創(chuàng)建USB設(shè)備的驅(qū)動(dòng)程序[3],創(chuàng)建正確后才能利用LabVIEW調(diào)用USB RAW類函數(shù)實(shí)現(xiàn)對(duì)其控制,。
    使用NI-VISA軟件包中的VISA Interactive Control測(cè)試可知,,本設(shè)計(jì)中的USB設(shè)備屬于USB RAW類設(shè)備,因此需要通過(guò)NI-VISA來(lái)創(chuàng)建驅(qū)動(dòng)程序,。驅(qū)動(dòng)程序設(shè)計(jì)的任務(wù)是制作INF文件,、配置USB設(shè)備及安裝驅(qū)動(dòng)程序并驗(yàn)證其正確安裝,可分為以下3個(gè)步驟[4]:(1)使用VISA驅(qū)動(dòng)開(kāi)發(fā)向?qū)В―river Development Wizard)創(chuàng)建INF文件,;(2)使用INF文件安裝驅(qū)動(dòng)程序和USB設(shè)備,;(3)使用NI-VISA交互式控制測(cè)試設(shè)備。
2.3 應(yīng)用程序設(shè)計(jì)
    當(dāng)正確安裝VISA驅(qū)動(dòng)程序之后,,便可通過(guò)LabVIEW程序調(diào)用USB RAW類函數(shù)來(lái)完成與USB設(shè)備的通信[5],。本應(yīng)用程序設(shè)計(jì)的主要任務(wù)有兩個(gè):(1)PC接收由單片機(jī)采集的溫度數(shù)據(jù),并通過(guò)LabVIEW顯示,;(2)PC通過(guò)LabVIEW軟件發(fā)送指定的指令點(diǎn)亮單片機(jī)的LED燈,。
    由于本設(shè)計(jì)中的RAW設(shè)備編程較為復(fù)雜,不像INSTR設(shè)備那樣可以使用USBTMC協(xié)議直接調(diào)用VISA常用函數(shù),,故需重新編寫(xiě)程序,。編寫(xiě)本設(shè)計(jì)主要用到的控件為:VISA打開(kāi)、VISA啟用事件,、VISA等待事件,、VISA獲取USB中斷數(shù)據(jù)、VISA寫(xiě)和VISA關(guān)閉,。
    PC通過(guò)USB向單片機(jī)發(fā)送指令的流程圖如圖4所示,,PC接收單片機(jī)通過(guò)USB傳送來(lái)的數(shù)據(jù)的流程圖如圖5所示。
    根據(jù)圖4和圖5的流程圖進(jìn)行LabVIEW編程,,其后面板的核心代碼分別如圖6和7所示,。

 

 


3 系統(tǒng)功能測(cè)試
    在完成各個(gè)模塊的設(shè)計(jì)后,需進(jìn)行系統(tǒng)集成,。結(jié)合硬件框圖進(jìn)行實(shí)物連接,,依次完成固件程序下載、驅(qū)動(dòng)程序安裝和應(yīng)用程序整合,。
    (1)單片機(jī)將所采集的溫度信息通過(guò)USB將數(shù)據(jù)傳送給PC,,其LabVIEW前面板及測(cè)試結(jié)果如圖8所示,。

    單片機(jī)的核心代碼如下:
    In_Packet[0] = Switch1State;
    In_Packet[1] = Switch2State;
    In_Packet[2] = (P0 & 0x0F);
    In_Packet[3] = Potentiometer;
    In_Packet[4] = Temperature;
    通過(guò)與單片機(jī)發(fā)送數(shù)據(jù)的格式對(duì)比可知,所傳送數(shù)據(jù)的格式正確,,使用“Bus Hound”軟件驗(yàn)證了所傳送的數(shù)據(jù)正確無(wú)誤,。
    (2)PC機(jī)通過(guò)USB將指定的數(shù)據(jù)傳送給單片機(jī),可觀察到正常點(diǎn)亮單片機(jī)的LED燈,。
    本文介紹了如何在LabVIEW環(huán)境下基于NI-VISA實(shí)現(xiàn)PC與單片機(jī)C8051F320的USB通信,,并給出系統(tǒng)實(shí)現(xiàn)方案。實(shí)驗(yàn)測(cè)試表明,,該方案能夠?qū)崿F(xiàn)USB通信,,且方案實(shí)現(xiàn)難度較低。本系統(tǒng)可為USB應(yīng)用系統(tǒng)的設(shè)計(jì)提供參考,。
參考文獻(xiàn)
[1] 佘志榮,,楊莉.基于NI-VISA與LabVIEW的USB接口應(yīng)用設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2007(1):66-68.
[2] 趙宏斌,,全厚德.基于C8051F320的數(shù)據(jù)采集系統(tǒng)USB接口設(shè)計(jì)[J].單片機(jī)開(kāi)發(fā)與應(yīng)用,,2009,25(9):92-94.
[3] 蔡共宣.基于LabVIEW的單片機(jī)USB數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].實(shí)驗(yàn)科學(xué)與技術(shù),,2009,,8(1):58-59.
[4] National Instruments.USB儀器控制教程[Z],2009.
[5] 張桐,,陳國(guó)順.精通LabVIEW程序設(shè)計(jì)[M].北京:電子工業(yè)出版社,,2008.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。