《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于LabVIEW NI-VISA實現PC與C8051F320的USB數據通信
基于LabVIEW NI-VISA實現PC與C8051F320的USB數據通信
來源:電子技術應用2013年第8期
段晉軍,位恒曦,常曉明
太原理工大學 計算機科學與技術學院,山西 太原030024
摘要: 針對傳統USB系統開發難度較大的問題,介紹了一種基于NI-VISA實現PC與USB裸設備——C8051F320單片機的USB通信系統的實現方案。該方案對開發PC外圍USB設備以及基于USB的應用系統設計具有一定參考意義。
中圖分類號: TN919
文獻標識碼: A
文章編號: 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

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

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

    本系統的軟件平臺設計包括單片機端的固件(Firmware)程序設計、PC端的驅動程序設計和PC端的應用程序設計3方面。
    單片機端固件程序的任務是處理來自USB主機端的標準請求和完成與USB主機的數據交換;PC端的驅動程序作為USB主機(PC)和USB從機(單片機)的橋梁,其主要任務是讓USB主機可以識別USB設備,并將硬件本身的功能告訴USB主機;PC端的應用程序的任務是通過驅動程序與USB設備進行通信并對USB數據進行處理。
    本文采用LabVIEW平臺開發PC端的驅動程序和應用程序,采用Silicon Laboratories IDE集成開發環境開發固件程序。本系統軟件平臺結構如圖2所示。

2 模塊設計
2.1 固件程序設計

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

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

 

 


3 系統功能測試
    在完成各個模塊的設計后,需進行系統集成。結合硬件框圖進行實物連接,依次完成固件程序下載、驅動程序安裝和應用程序整合。
    (1)單片機將所采集的溫度信息通過USB將數據傳送給PC,其LabVIEW前面板及測試結果如圖8所示。

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

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 91视频站 | 波多野一区二区 | 亚洲欧洲精品国产区 | 麻豆传煤一区免费入 | 亚洲成a人在线播放www | 老师影院| 中文字幕永久免费 | 欧美劲爆第一页 | 日本婷婷 | 免费高清特黄a 大片 | 亚洲成人福利网站 | 免费高清毛片天天看 | 一级一级一片免费高清 | 欧美色图888 | www在线观看视频 | 亚洲va | 国产日韩视频在线观看 | 国产精品亚洲一区二区三区久久 | 日韩欧美高清在线观看 | 欧美在线免费播放 | 天天综合天天干 | 丝袜第一页 | 国产亚洲欧美日韩在线一区 | 亚洲欧美色图 | 亚洲已满18点击进入在线观看 | 国产日本欧美在线观看乱码 | 国产高清在线a视频大全 | cao美女视频网站在线观看 | 国内精品免费 | 免费在线一级毛片 | 在线看片成人免费视频 | 久久天天 | 成在线人视频免费视频 | 天天色综合图片 | 操久久| 欧美日韩操 | 久久午夜夜伦鲁鲁影院 | 日批在线观看视频 | 91精品免费视频 | 中文字幕日本在线mv视频精品 | 国产在线欧美精品中文一区 |