《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > LabVIEW與PSoC3基于USB的通信方式
LabVIEW與PSoC3基于USB的通信方式
2015年電子技術(shù)應(yīng)用第4期
王程程,王安騰,王阡智,趙洪亮
山東科技大學(xué) 電子通信與物理學(xué)院,山東 青島266590
摘要: 針對(duì)LabVIEW無(wú)法直接支持非NI公司的USB接口數(shù)據(jù)采集卡的問(wèn)題,介紹了上位機(jī)LabVIEW驅(qū)動(dòng)USB設(shè)備的方法。同時(shí)使用PSoC3作為下位機(jī)數(shù)據(jù)采集儀器,研究了將PSoC3構(gòu)建為USB設(shè)備的方式。系統(tǒng)地闡述了上位機(jī)LabVIEW與下位機(jī)PSoC3通過(guò)USB實(shí)現(xiàn)通信的各種方式,并提出了一種新方法:即將PSoC3構(gòu)建為L(zhǎng)abVIEW中已有的驅(qū)動(dòng)類(lèi)型的USB設(shè)備,例如聲卡、串口類(lèi)型等。
中圖分類(lèi)號(hào): TP274.2
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)04-0081-03
Modes of the communication between LabVIEW and PSoC3 based on USB
Wang Chengcheng,Wang Anteng,Wang Qianzhi,Zhao Hongliang
College of Electronic Communication and Physics,Shandong University of Science and Technology,Qingdao 266590,China
Abstract: Some modes are introduced for LabVIEW to drive USB device in view of LabVIEW can’t drive the USB data acquisition devices which are not produced by National Instruments(NI). In this paper,PSoC3 is used as the USB data acquisition device and some modes that PSoC3 is designed as USB device are also studied. The modes of communication between LabVIEW and PSoC3 are introduced systematically, including one new method: Building PSoC3 as USB device, whose driver already exists in the LabVIEW, such as audio card, serial port .etc.
Key words : LabVIEW;PSoC3;USB

  

0 引言

  隨著工業(yè)技術(shù)的急劇發(fā)展,虛擬儀器在機(jī)械控制及測(cè)量分析領(lǐng)域得到了廣泛應(yīng)用。虛擬儀器除了可以完成傳統(tǒng)測(cè)量?jī)x器的功能外,還擁有龐大的數(shù)據(jù)處理能力[1]。LabVIEW便是由美國(guó)國(guó)家儀器(National Instruments,NI)公司發(fā)布的一款虛擬儀器軟件。LabVIEW可以與NI公司的數(shù)據(jù)采集卡實(shí)現(xiàn)無(wú)縫連接,針對(duì)這種數(shù)據(jù)卡,只需要在程序框圖中選擇對(duì)應(yīng)的圖標(biāo)并編程便可實(shí)現(xiàn)USB連接及數(shù)據(jù)采集,這種情況無(wú)需設(shè)置專(zhuān)門(mén)的驅(qū)動(dòng)程序。但對(duì)于非NI公司的USB接口數(shù)據(jù)采集卡,必須使用LabVIEW自行編寫(xiě)驅(qū)動(dòng)程序才能夠驅(qū)動(dòng)USB并完成數(shù)據(jù)采集。

  可編程的片上系統(tǒng)(Programmable System-on-Chip,PSoC)是賽普拉斯公司推出的系列芯片。其中PSoC3的單個(gè)芯片集微控制器、存儲(chǔ)器、模擬和數(shù)字外設(shè)功能為一體,具有USB等通信接口。借助PSoC Creator這一原理圖設(shè)計(jì)及輸入工具,便可以輕松完成片上的模擬數(shù)字系統(tǒng)設(shè)計(jì)。

  為了使LabVIEW能夠更普遍地使用通用USB設(shè)備,本文系統(tǒng)地闡述了LabVIEW與PSoC3通過(guò)USB通信的四種方式,最后列舉了其中兩種方式的LabVIEW設(shè)計(jì)程序和測(cè)試效果。

1 LabVIEW連接USB的方式

  對(duì)于非NI公司的通用USB接口設(shè)備,必須使用LabVIEW編寫(xiě)對(duì)應(yīng)的驅(qū)動(dòng)程序。一般有四種方法:使用調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)(Call Library Function Node,CLF)方式調(diào)用動(dòng)態(tài)數(shù)據(jù)庫(kù);使用代碼接口節(jié)點(diǎn)(Code Interface Node,CIN)調(diào)用外部代碼;使用虛擬儀器軟件架構(gòu)(NI-Virtual Instrument Software Architecture,NI-VISA)配置USB;將USB接口轉(zhuǎn)換為L(zhǎng)abVIEW已定義的外設(shè)接口類(lèi)型,例如聲卡、串口等類(lèi)型。

  1.1 CLF方式

  CLF方式為在程序框圖中使用庫(kù)函數(shù)節(jié)點(diǎn)調(diào)用動(dòng)態(tài)鏈接庫(kù)(Dynamic Link Library,DLL)。DLL是一種允許多個(gè)程序共享并執(zhí)行某些代碼或者資源的可執(zhí)行文件[3]。LabVIEW沒(méi)有非NI公司USB接口設(shè)備的驅(qū)動(dòng)程序,用戶(hù)需要使用其他開(kāi)發(fā)軟件(VC++、C等)自行開(kāi)發(fā)驅(qū)動(dòng)程序并封裝為DLL,以供LabVIEW調(diào)用[4]。

  LabVIEW調(diào)用動(dòng)態(tài)鏈接庫(kù)的步驟如下:在程序框圖中放置庫(kù)函數(shù)節(jié)點(diǎn),其位置在“互連接口——庫(kù)與可執(zhí)行程序——調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)”,雙擊庫(kù)函數(shù)節(jié)點(diǎn)或者右擊選擇配置菜單選項(xiàng),進(jìn)入配置對(duì)話(huà)框。在“函數(shù)”標(biāo)簽中選擇自己編寫(xiě)并封裝的DLL庫(kù)函數(shù)名稱(chēng)及某個(gè)功能函數(shù)。在“參數(shù)”標(biāo)簽中設(shè)置庫(kù)函數(shù)節(jié)點(diǎn)的輸入輸出參數(shù)及數(shù)據(jù)類(lèi)型。由于只有指針類(lèi)型的輸出參數(shù)能夠正確傳出,所以要注意將輸出參數(shù)的傳遞屬性設(shè)置為指針類(lèi)型。

  1.2 CIN方式

  LabVIEW的CIN圖標(biāo)可以通過(guò)USB接口實(shí)現(xiàn)與其他編程語(yǔ)言的通信。使用CIN圖標(biāo)同樣需要設(shè)置輸入輸出參數(shù)。當(dāng)LabVIEW程序運(yùn)行到CIN節(jié)點(diǎn)時(shí),通過(guò)輸入端口進(jìn)入其他語(yǔ)言源代碼中,運(yùn)行完源代碼之后再通過(guò)輸出端口返回到LabVIEW程序。在其他語(yǔ)言源代碼中要獲取USB設(shè)備句柄并設(shè)置USB接口值等參數(shù)。從LabVIEW 2010升級(jí)版取消了代碼接口節(jié)點(diǎn)后,此方式已較少使用。

  1.3 NI-VISA方式

  VISA是一個(gè)用來(lái)與各種儀器總線(xiàn)進(jìn)行通信的高級(jí)應(yīng)用編程接口。NI-VISA從3.0版本開(kāi)始支持USB通信,它的兩種VISA類(lèi)函數(shù)可以控制兩類(lèi)USB設(shè)備:USB儀器(Instruction,INSTR)設(shè)備與USB 讀寫(xiě)(Read And Write,RAW)設(shè)備,NI-VISA與這兩種USB設(shè)備實(shí)現(xiàn)通信的編程是不同的[5]。

  1.3.1 NI-VISA與USB INSTR設(shè)備的通信

  這種方式不需要配置NI-VISA,直接使用圖1所示程序便可實(shí)現(xiàn)兩者的通信。

001.jpg

  1.3.2 NI-VISA與USB RAW設(shè)備的通信

  這種方式需要配置NI-VISA,配置步驟如下:

  (1)對(duì)下位機(jī)PSoC3供電并將USB總線(xiàn)接入個(gè)人電腦。

  (2)打開(kāi)NI-VISA Driver Wizard,將USB作為缺省驅(qū)動(dòng)程序。

  (3)進(jìn)入基本信息設(shè)置窗口,設(shè)置USB的基本信息。在Device List中可以選擇Other選項(xiàng),點(diǎn)擊Next進(jìn)入U(xiǎn)SB的基本信息填寫(xiě)對(duì)話(huà)框。但因?yàn)橐呀?jīng)連接了USB設(shè)備,所以此處可以直接單擊連接的USB設(shè)備,在下方自動(dòng)填寫(xiě)USB設(shè)備對(duì)應(yīng)的供應(yīng)商ID、產(chǎn)品ID、制造商名稱(chēng)和型號(hào)名稱(chēng)。

  (4)指定INF文檔的存放文件夾。

  (5)安裝INF文檔。

  設(shè)置完畢,運(yùn)行上位機(jī)時(shí),便可以在“VISA資源名”顯示框中搜索到連接的USB設(shè)備。如圖2,此時(shí)表示PSoC3可與LabVIEW實(shí)現(xiàn)通信。

002.jpg

  1.4 使用LabVIEW已有的驅(qū)動(dòng)類(lèi)型

  因?yàn)長(zhǎng)abVIEW本身具有一些設(shè)備驅(qū)動(dòng)程序,例如聲卡、串口等,LabVIEW可直接利用這些已有的圖標(biāo)完成編程。此時(shí)需要將下位機(jī)PSoC3構(gòu)建為這些設(shè)備。

2 將PSoC3構(gòu)建為USB設(shè)備的方式

  PSoC3集成開(kāi)發(fā)環(huán)境(PSoC Creator)中的全速USB組件USBFS(Full Speed USB)為控制端點(diǎn)提供了低層驅(qū)動(dòng)程序。此組件提供了USBFS自定義程序,從而可以方便實(shí)現(xiàn)描述符的構(gòu)建[6]。根據(jù)傳輸數(shù)據(jù)的不同,開(kāi)發(fā)者可以構(gòu)建普通的USB設(shè)備,也可以構(gòu)建基于USB類(lèi)的設(shè)備。構(gòu)建為基于USB類(lèi)的設(shè)備的最大優(yōu)勢(shì)是操作系統(tǒng)中集成了這些類(lèi)設(shè)備的驅(qū)動(dòng)程序,免去了開(kāi)發(fā)者編寫(xiě)驅(qū)動(dòng)的過(guò)程。例如需要中斷傳輸,可以構(gòu)建基于人機(jī)接口類(lèi)的設(shè)備(USB_DEVICE_CLASS_HUMAN INTERFACE,HID);需要批量傳輸,可以構(gòu)建為基于通信類(lèi)的設(shè)備(USB_DECICE_CLASS_COMMUNICATIONS,CDC);需要等時(shí)傳輸可以構(gòu)建為基于音頻類(lèi)的設(shè)備(USB_DEVICE_ CLASS_AUDIO,Audio)。

  2.1 將PSoC3構(gòu)建為普通的USB設(shè)備

  此方式為PSoC3端最簡(jiǎn)單的方式。雖然各種描述符的構(gòu)建相對(duì)簡(jiǎn)單,可以根據(jù)需要使用中斷傳輸、等時(shí)傳輸、批量傳輸?shù)葌鬏敺绞?,但代價(jià)是USB主機(jī)端(如PC)設(shè)計(jì)的復(fù)雜度大大提高。開(kāi)發(fā)者必須針對(duì)此設(shè)備編寫(xiě)相應(yīng)的驅(qū)動(dòng)程序,否則該設(shè)備將無(wú)法運(yùn)行。NI-VISA雖然可以簡(jiǎn)化驅(qū)動(dòng)程序的編寫(xiě)過(guò)程,但是簡(jiǎn)單的接口描述符和端點(diǎn)描述符決定了此種方式很難完成大量復(fù)雜的數(shù)據(jù)傳輸。因此,這種方式只適合普通、少量的數(shù)據(jù)傳輸。

  2.2 將PSoC3構(gòu)建為基于HID類(lèi)、CDC類(lèi)的設(shè)備

  HID類(lèi)是應(yīng)用最為廣泛的標(biāo)準(zhǔn)USB類(lèi),操作系統(tǒng)的支持使HID類(lèi)的開(kāi)發(fā)變得較為容易。USB主機(jī)通過(guò)HID報(bào)表描述符獲取主機(jī)所接收到的數(shù)據(jù)的意義,以及應(yīng)該發(fā)送什么數(shù)據(jù)給USB設(shè)備。對(duì)于PSoC3來(lái)說(shuō),HID類(lèi)只適合傳輸一些低傳輸速率的數(shù)據(jù),這是因?yàn)镠ID類(lèi)在實(shí)際應(yīng)用方面有一些限制:(1)所有的數(shù)據(jù)傳輸類(lèi)型必須為控制傳輸和中斷傳輸;(2)一次最多傳輸64字節(jié),1 ms傳輸一次,所以速率限制為64 kb/s;(3)僅支持一個(gè)輸入端點(diǎn)和一個(gè)輸出端點(diǎn);(4)只能由USB主機(jī)周期性輪詢(xún)請(qǐng)求數(shù)據(jù)傳輸[7]。

  基于CDC類(lèi)的器件可以彌補(bǔ)HID類(lèi)在以上方面的限制。開(kāi)發(fā)者可以根據(jù)PSoC Creator中的USBUART組件將PSoC3構(gòu)建為基于CDC類(lèi)的器件,而操作系統(tǒng)通常都自帶CDC類(lèi)的設(shè)備驅(qū)動(dòng)程序。PSoC3通過(guò)USB口連接到PC后,PC端識(shí)別為普通串口設(shè)備。這樣USB接口在LabVIEW與PSoC3之間相當(dāng)于透明的,LabVIEW端完全可以忽略USB的存在,只當(dāng)PC端連接到了一個(gè)普通的串口設(shè)備,使用串口的一系列圖標(biāo)便可實(shí)現(xiàn)數(shù)據(jù)的傳輸。相對(duì)于HID類(lèi)設(shè)備,既提高了傳輸速度,又簡(jiǎn)化了程序設(shè)計(jì)的復(fù)雜程度。

  2.3 將PSoC3構(gòu)建為基于Audio類(lèi)的設(shè)備

  以上兩種方式在實(shí)際應(yīng)用上并不能應(yīng)對(duì)所有的PSoC3和LabVIEW之間的通信問(wèn)題。例如USB連接的多路信號(hào)采集顯示及分析設(shè)備,需要將多路信號(hào)數(shù)據(jù)通過(guò)USB實(shí)時(shí)地上傳到LabVIEW端。將PSoC3配置為基于Audio類(lèi)的設(shè)備有助于處理好系統(tǒng)所需的實(shí)時(shí)性和上位機(jī)下位機(jī)之間采樣率同步等問(wèn)題。和HID類(lèi)與CDC類(lèi)相同的是,一般的計(jì)算機(jī)操作系統(tǒng)中都集成了Audio類(lèi)的驅(qū)動(dòng)程序,將配置好的PSoC3連接到PC后,PC端識(shí)別為USB音頻設(shè)備,USB接口在LabVIEW與PSoC3之間也相當(dāng)于透明的。LabVIEW與PSoC3之間借用音頻的左右聲道傳輸數(shù)據(jù),并且可以利用Audio類(lèi)對(duì)數(shù)據(jù)格式、同步和采樣率的協(xié)議進(jìn)行數(shù)據(jù)的傳輸和同步處理,從而大大簡(jiǎn)化了LabVIEW和PSoC3之間此類(lèi)數(shù)據(jù)的傳輸復(fù)雜程度。

3 LabVIEW與PSoC3基于USB通信的測(cè)試

  3.1 通過(guò)配置NI-VISA實(shí)現(xiàn)通信的測(cè)試

006.jpg

  通過(guò)NI-VISA配置USB設(shè)備的前面板與程序框圖如圖3、圖4所示,此方法中上位機(jī)LabVIEW使用配置NI-VISA方式,下位機(jī)將PSoC3構(gòu)建為普通的USB設(shè)備。點(diǎn)擊圖3中實(shí)時(shí)采集按鈕,實(shí)時(shí)顯示采集的數(shù)據(jù)。圖4的程序框圖中使用的是USB RAW設(shè)備配置方法。

  3.2 將PSoC3構(gòu)建為基于Audio類(lèi)設(shè)備的測(cè)試


  此方法的前面板與程序框圖如圖5、圖6所示。此方法中上位機(jī)LabVIEW直接使用聲卡驅(qū)動(dòng)完成數(shù)據(jù)采集與實(shí)時(shí)顯示,下位機(jī)將PSoC3構(gòu)建為基于Audio類(lèi)的設(shè)備。圖5中上位機(jī)將接收到的數(shù)據(jù)解包后實(shí)時(shí)顯示,采集到的是四個(gè)具有相位差的正弦信號(hào),圖6是通過(guò)聲卡驅(qū)動(dòng)編寫(xiě)的程序。

4 總結(jié)

  本文系統(tǒng)地介紹了LabVIEW與PSoC3基于USB的幾種通信方式,各種方式都有各自的適用場(chǎng)合。LabVIEW的四種方式中,CLF可以調(diào)用設(shè)備的驅(qū)動(dòng)程序,但驅(qū)動(dòng)程序的編寫(xiě)對(duì)開(kāi)發(fā)者來(lái)說(shuō)相對(duì)困難。CIN方式雖可以與其他編程語(yǔ)言實(shí)現(xiàn)鏈接,但目前LabVIEW已取消了這個(gè)節(jié)點(diǎn)函數(shù)。NI-VISA使用更方便,應(yīng)用更廣泛。將PSoC3構(gòu)建為基于USB類(lèi)設(shè)備的方式可以避免對(duì)驅(qū)動(dòng)程序的編寫(xiě)及VISA的配置,可直接使用LabVIEW已有驅(qū)動(dòng)程序,更簡(jiǎn)化了程序的實(shí)現(xiàn)。根據(jù)傳輸數(shù)據(jù)類(lèi)型的不同,可以將PSoC3配置為基于HID類(lèi)、CDC類(lèi)和Audio類(lèi)的設(shè)備。

  參考文獻(xiàn)

  [1] 伍星華,王旭.國(guó)內(nèi)虛擬儀器技術(shù)的應(yīng)用研究現(xiàn)狀及展望[J].現(xiàn)代科學(xué)儀器,2011(4):112-116.

  [2] 劉宇芳,李秀娟.Labview平臺(tái)下基于DLL的USB通信技術(shù)應(yīng)用[J].安徽工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),2008(2):168-170,189.

  [3] 王平,蘇濤,方浩俊.基于USB2.0的高速實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2007(1):81-84.

  [4] 周青云,王建勛.基于USB接口與LabVIEW的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索,2011(8):238-240.

  [5] Cypress.Full Speed USB(USBFS)[EB/OL].[2014-02-25].http://www.cypress.com/?rID=48924.

  [6] Cypress.USB General Data Transfer with Standard HID Drivers[EB/OL].[2014-09-22].http://www.cypress.com/rID=70131.

  [7] 方尚俠.基于LabVIEW和USB接口的虛擬晶體管特性圖示儀[D].成都:電子科技大學(xué),2006.


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