當(dāng)前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]摘要:結(jié)合某型信息化彈藥彈上電子器件通信問題研究,以C8051F340單片機(jī)為例,介紹了單片機(jī)與LabVIEW進(jìn)行USB通信的3種方法。針對LabVIEW,實(shí)現(xiàn)USB通信的方式有:利用CIN(代碼接口節(jié)點(diǎn)),調(diào)用DLL(動態(tài)鏈接庫),通過VI

摘要:結(jié)合某型信息化彈藥彈上電子器件通信問題研究,以C8051F340單片機(jī)為例,介紹了單片機(jī)與LabVIEW進(jìn)行USB通信的3種方法。針對LabVIEW,實(shí)現(xiàn)USB通信的方式有:利用CIN(代碼接口節(jié)點(diǎn)),調(diào)用DLL(動態(tài)鏈接庫),通過VISA(虛擬儀器軟件架構(gòu))。對這3種方式進(jìn)行詳細(xì)的介紹和比較,并給出結(jié)論。
關(guān)鍵詞:信息化彈藥;LabVIEW;USB;C8051F340;DLL;VISA

引言
    某型信息化彈藥通過對目標(biāo)的基準(zhǔn)彈道與飛行中的攻擊彈道進(jìn)行比較后,給出有限次不連續(xù)的修正量來修正攻擊彈道,以減少彈著點(diǎn)誤差,提高彈丸對付高速機(jī)動飛行目標(biāo)的命中精度,或提高遠(yuǎn)程打擊精度。該信息化彈藥的基本結(jié)構(gòu)就是在常規(guī)炮彈上加裝彈道修正模塊,彈道修正模塊主要由微控制器根據(jù)基準(zhǔn)彈道修正攻擊彈道參數(shù)來提高命中率。
    在傳感器及信號調(diào)理電路的基礎(chǔ)上,選用高速單片機(jī)、快速的數(shù)據(jù)傳輸總線以及LabVIEW應(yīng)用程序,可快速開發(fā)一個(gè)簡單實(shí)用的信息化彈藥彈道控制通信系統(tǒng)模型。本通信系統(tǒng)模型用USB總線,在PC機(jī)與USB設(shè)備間實(shí)現(xiàn)上下位機(jī)之間的通信,在軟件方面通常要完成以下設(shè)計(jì):USB設(shè)備固件編程、USB設(shè)備驅(qū)動編程和PC機(jī)應(yīng)用程序設(shè)計(jì)。下位機(jī)彈道修正模塊用Silicon Labs公司的全速USB Flash微控制器C8051F340,上位機(jī)PC采用LabVIEW編寫應(yīng)用程序。與C8051F340進(jìn)行USB通信主要有3種方式:利用CIN調(diào)用開發(fā)USB設(shè)備的外部代碼;調(diào)用DLL對USB設(shè)備進(jìn)行操作;通過VISA訪問USB設(shè)備。下面分別進(jìn)行介紹和比較。

1 利用CIN調(diào)用開發(fā)USB設(shè)備外部代碼
    CIN(Code Interface Node,代碼接口節(jié)點(diǎn))是LabVIEW中通過參數(shù)傳遞來調(diào)用C/C++代碼的節(jié)點(diǎn),可以利用USB設(shè)備生產(chǎn)廠家提供的C/  C++代碼,將代碼集成并作為一個(gè)單獨(dú)的VI發(fā)布,實(shí)現(xiàn)數(shù)據(jù)的高效處理。這種實(shí)現(xiàn)方法相當(dāng)于在LabVIEW下利用CIN對USB設(shè)備編寫驅(qū)動程序。以C8051F340端口1IN批量傳輸為例。規(guī)定使用端口1IN批量傳輸且最大包長度為128字節(jié),假設(shè)端點(diǎn)1IN的緩沖區(qū)地址為0x7E00~0x7E8F。主機(jī)通過不斷發(fā)送IN令牌請求USB執(zhí)行IN傳輸,C8051F340會通過將端點(diǎn)字節(jié)計(jì)數(shù)寄存器(N1CNT)加載,以示數(shù)據(jù)準(zhǔn)備完畢,同時(shí)將一個(gè)IN數(shù)據(jù)包裝入端點(diǎn)的IN FIFO并將INPRDY位(EINCSR L.O)位置1。利用CIN調(diào)用USB設(shè)備的外部代碼的一般步驟如下:
    ①創(chuàng)建CIN節(jié)點(diǎn)。CIN節(jié)點(diǎn)位于“函數(shù)選板”一“互連接口”一“庫與可執(zhí)行庫文件”子選板下。根據(jù)設(shè)備的參數(shù)需要增加外部代碼的輸入/輸出端口。
    ②創(chuàng)建C源文件。右擊CIN并選擇創(chuàng)建C8051F340UsbInl.c文件選項(xiàng),對打開的程序修改如下:

    ③編譯C8051F340UsbInl.c文件,生成可被LabVIEW執(zhí)行的C8051F340UsbInl.1sb。以VC++為例編譯CIN節(jié)點(diǎn)源文件。在VC++下創(chuàng)建C8051F340UsbInl.mak文件,內(nèi)容如下:

    在VC++下點(diǎn)擊new\project\make file,輸入文件名C8051F340UsbInl后點(diǎn)擊為OK和Finish按鈕。將C8051F340UsbInl.c和C8051F340U-sbInl.mak一起復(fù)制到C8051F340UsbInl文件夾下,重新打開C8051F340UsbInl工作臺,按F7可生成C8051F340UsbInl.1sb文件。
    ④右擊選用的CIN圖標(biāo),選擇“加載代碼資源”并選擇C8051F340UsbInl.1sb文件。至此,一個(gè)基于CIN的讀USB端口1的VI創(chuàng)建完畢。
   上面是一個(gè)利用CIN創(chuàng)建開發(fā)USB驅(qū)動的VI的步驟,實(shí)際開發(fā)過程要麻煩很多,需要對設(shè)備及通信協(xié)議相當(dāng)熟悉。因此,利用CIN實(shí)現(xiàn)USB通信受到一些限制。

2 調(diào)用DLL實(shí)現(xiàn)USB通信
    開發(fā)USB設(shè)備時(shí),不僅要面向USB控制器編程還要面向Windows編程(如果上位機(jī)用Windows操作系統(tǒng)),對不熟悉USB協(xié)議的用戶而言是個(gè)難題。為了縮短用戶開發(fā)USB設(shè)備時(shí)間,生產(chǎn)廠家往往會把對USB設(shè)備進(jìn)行操作的函數(shù)封裝成DLL(Dynamic Link Library,動態(tài)鏈接庫)提供給用戶。dll文件是一種可執(zhí)行文件,允許程序共享執(zhí)行特殊任務(wù)必需的代碼和其他資源,與語言無關(guān),可以被任何支持DLL的語言編寫的應(yīng)用程序訪問。
    Silicon Labs公司針對USB系列單片機(jī)為USB驅(qū)動程序開發(fā)提供了USBXpress開發(fā)套件,其中的SiUSBXp.dll包含了23個(gè)函數(shù)。一個(gè)簡單的USB通信程序,通常要用到SiUSBXp.dll中的SI_GetNumDevices、SI_SetTimeouts、SI_Open、SI_Read、SI_Write和SI_Close等幾個(gè)函數(shù)。在LabVIEW中調(diào)用dll文件有兩種方法,下面將分別介紹。
    首先是利用CLF(調(diào)用庫函數(shù)節(jié)點(diǎn))節(jié)點(diǎn)調(diào)用SiUSBXp.dll,一般步驟如下:
    ①放置CLF節(jié)點(diǎn)并通過路徑加載dll文件。CLF節(jié)點(diǎn)位于“函數(shù)選板”一“互連接口”一“庫與可執(zhí)行庫文件”子選板下。
    ②在加載的dll文件里選擇要用到的函數(shù)并進(jìn)行參數(shù)配置。根據(jù)USBXpress開發(fā)手冊,對每一個(gè)被調(diào)用的函數(shù)配置合適的參數(shù)。
    ③配置參數(shù)完成之后,每一個(gè)函數(shù)就是一個(gè)VI,可在LabVIEW程序中調(diào)用。
    其次是通過導(dǎo)入共享庫的方法調(diào)用SiUSBXp.dll。
    導(dǎo)入共享庫的實(shí)質(zhì)是將dll文件中的函數(shù)自動生成對應(yīng)的VI。函數(shù)的每個(gè)參數(shù)可在頭文件包含以及預(yù)處理定義條件下在生成的VI中顯示出來,與利用CLF相比較,省去了手動配置參數(shù)的步驟。使用方法如下:新建一個(gè)VI,點(diǎn)擊“工具”一“導(dǎo)入共享庫”,選擇為用戶創(chuàng)建共享庫;點(diǎn)擊下一步,在“選擇共享庫及頭文件”頁面加載.dll文件和.h文件的路徑;點(diǎn)擊下一步,在預(yù)處理定義中添加預(yù)處理說明(如果需要添加);點(diǎn)擊下一步,等待解析頭文件并選擇待轉(zhuǎn)換函數(shù);點(diǎn)擊下一步,進(jìn)行項(xiàng)目庫設(shè)置配置,連續(xù)點(diǎn)擊下一步,直至所有選中的函數(shù)生成VI存放用戶庫里(默認(rèn)狀態(tài))。調(diào)用時(shí),在“函數(shù)選板”一“用戶庫”一“SiUSBXp”,選擇在LabVIEW程序設(shè)計(jì)中用到的VI。
    以上兩種調(diào)用DLL實(shí)現(xiàn)USB通信的方法具體操作不一樣,但本質(zhì)都是利用USB廠家提供的dll文件訪問USB設(shè)備。圖1為LabVIEW調(diào)用DLL實(shí)現(xiàn)一個(gè)簡單USB通信的流程。


    LabVIEW通過調(diào)用dll文件大大縮減了實(shí)現(xiàn)USB通信開發(fā)工作量,但最關(guān)鍵也是最難的一步在于給函數(shù)配置參數(shù)。通常來講,DLL主要用C/C++等文本語言開發(fā),有些參數(shù)類型和LabVIEW不匹配,直接調(diào)用無法正常使用。為了解決這個(gè)問題,需要用戶對參數(shù)進(jìn)行修改或者對原有的dll文件進(jìn)行二次開發(fā),加大了工作量。
    值得一提的是,USBXpress開發(fā)套件除了包含面向主機(jī)的dll文件,還包括面向USB器件的驅(qū)動文件和USBX_F34X LIB及USB_API.h文件,封裝了USB協(xié)議的細(xì)節(jié),大大簡化了USB固件編程。一個(gè)典型的利用API函數(shù)實(shí)現(xiàn)USB通信的程序流程如圖2所示。程序是在SiliconLabs集成開發(fā)環(huán)境下編譯調(diào)試的。


    不管利用CIN,還是調(diào)用DLL,都可以實(shí)現(xiàn)LabVIEW訪問USB設(shè)備,但并不能很好地體現(xiàn)LabVIEW的優(yōu)勢。因?yàn)橥ㄟ^CIN和DLL,不用LabVIEW也可以實(shí)現(xiàn)上位機(jī)編程。實(shí)際上,LabVIEW還有獨(dú)特的訪問USB設(shè)備的方法,即通過VISA訪問USB設(shè)備。

3 通過VISA訪問USB設(shè)備
    VISA(Virtual Instrument Software Architecture,虛擬儀器軟件架構(gòu))是一種用來與各種儀器總線進(jìn)行通信的高級應(yīng)用編程接口(API),包括GPIB、USB、串口、PXI/PCI、VXI、火線和以太網(wǎng)。它是計(jì)算機(jī)與儀器的軟件連接層,本身不具備編寫儀器驅(qū)動的能力,通過調(diào)用特定儀器驅(qū)動與儀器的通信。
    NI-VISA從3.0版開始支持USB通信,它有兩種VISA類函數(shù)(Resource Class),可以控制兩類USB設(shè)備:USB INSTR設(shè)備與USB RAW設(shè)備。U-SB INSTR設(shè)備是符合USBTMC協(xié)議的USB設(shè)備,可以通過使用USB INSTR類函數(shù)控制,通信時(shí)無需配置NI-VISA;而USB RAw設(shè)備是指除了明確符合USBTMC規(guī)格的儀器之外的任何USB設(shè)備,通信時(shí)要配置NI-VISA。C8051F340是USB RAW設(shè)備,故欲實(shí)現(xiàn)與LabVIEW進(jìn)行USB通信,可通過NI公司提供的VISA Driver Wizard進(jìn)行配置。步驟如下:
    ①按照“程序”一“National Instruments”一“VISA”一“Driver Wizard”選擇USB并點(diǎn)擊Next,進(jìn)入U(xiǎn)SB-DeviceInformation界面。
    ②在USB Vendor ID欄和USB Product ID欄分別填寫USB設(shè)備的PID號和VID號。另外兩欄分別是Manufacturer Name和Mode Name欄,選填。每一個(gè)USB設(shè)備都有唯一的PID號和VID號,它們是主機(jī)識別不同USB設(shè)備的根據(jù)。
    ③生成并安裝inf文件,為USB設(shè)備創(chuàng)建PNF文檔。持續(xù)點(diǎn)擊Next,并為文件命名。高版本的VISA可發(fā)自動創(chuàng)建PNF文檔。
    ④連接USB設(shè)備。USB具有熱拔插功能,所以Windows能夠探測到USB設(shè)備,并立即會打開“添加新硬件向?qū)?rdquo;,很快完成USB設(shè)備驅(qū)動程序的安裝。
    至此,主機(jī)已將NI-VISA作為訪問USB設(shè)備的底層驅(qū)動,在LabVIEW程序中即可利用VISA選板的VI設(shè)計(jì)通信程序。
    圖3是一個(gè)基于NI-VISA編寫的LabVIEW與C8051F340進(jìn)行USB通信的程序框圖。設(shè)備的PID和VID分別是0x10C4和0x0005,單片機(jī)使用端點(diǎn)2IN,采用中斷傳輸方式;LabVIEW程序中用VISA事件處理和獲取USB中斷等VI。


    通過NI-VISA實(shí)現(xiàn)LabVIEW與單片機(jī)進(jìn)行USB通信,大大減小了工作量,同時(shí)很好地發(fā)揮了LabVIEW的特點(diǎn)。

結(jié)語
    對實(shí)現(xiàn)LabVIEW與C8051F340單片機(jī)USB通信的3種方式進(jìn)行比較,結(jié)論如下:
    ①通過CIN節(jié)點(diǎn)訪問USB可以充分利用設(shè)備生產(chǎn)廠家提供的C語言編寫的驅(qū)動程序及源程序,發(fā)揮C語言的優(yōu)勢;但要求用戶非常熟悉USB協(xié)議,這種實(shí)現(xiàn)方法相當(dāng)于在LabVIEW下用CIN對USB設(shè)備編寫驅(qū)動程序,使用較為麻煩。
    ②通過調(diào)用DLL實(shí)現(xiàn)USB通信,可以利用生產(chǎn)廠家提供的dll文件,發(fā)揮dll文件的優(yōu)勢;但由于dll文件的數(shù)據(jù)格式通常和LabVIEW不完全匹配,往往需要修改參數(shù)或者對dll文件進(jìn)行二次開發(fā),需要具備開發(fā)dll文件的能力,也比較麻煩。
    ③通過NI-VISA可以充分發(fā)揮LabVIEW的優(yōu)勢,無需熟悉傳統(tǒng)文本語言編程,極大方便上位機(jī)的編程。
    ④就單片機(jī)在USB設(shè)備固件編程的工作量而言,通過NI-VISA方式與通過CIN方式相當(dāng),比通過USBXpress開發(fā)套件的工作量大。
    結(jié)合實(shí)現(xiàn)LabVIEW與C8051F340USB通信總體軟件編程任務(wù),從工程應(yīng)用角度進(jìn)行比較,如表1所列。


    對于一般情況下基于LabVIEW的上下位機(jī)USB通信,建議通過調(diào)用DLL或者使用VISA實(shí)現(xiàn)USB通信,具體采用哪種方式,還要結(jié)合系統(tǒng)具體要求而定。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉