国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于STM32的USBTMC協(xié)議的研究與實現(xiàn)

2014-06-27 00:28陳一鳴陳雪艷
關(guān)鍵詞:描述符外設(shè)端點

陳一鳴 高 云 鄧 攀 尚 倫 陳雪艷

(武漢(鋼鐵)集團(tuán)公司研究院 湖北 武漢:430080)

0 引言

USB(Universal Serial Bus,通用串行總線)是一種新型通信接口技術(shù),最早是由Compaq、Intel、Microsoft等多家公司于1994年11月共同提出的,具有高傳輸速率、即插即用和易于擴(kuò)展等優(yōu)點。USB從最初的0.7版,發(fā)展到目前普遍使用的2.0版,以及最新的3.1版,其傳輸速率最高能達(dá)到10Gbps,越來越多的測試測量設(shè)備具有USB通信接口。

為簡化USB設(shè)備的開發(fā)過程,USB-IF(USB Implementers Forum)對一些具有相似特點并提供相似功能的USB設(shè)備進(jìn)行抽象,定義它們所特有的屬性和使用方法,這些被稱為設(shè)備類。對于測試測量設(shè)備USB-IF在USB 2.0協(xié)議的基礎(chǔ)上定義了USBTMC協(xié)議(Universal Serial Bus Test and Measurement Class Specification),方便用戶開發(fā)和使用測試測量設(shè)備的USB通信接口。

STM32是意法半導(dǎo)體公司開發(fā)的基于Cortex-M3內(nèi)核的新型32位微控制器系列,芯片內(nèi)部集成了全速USB 2.0外設(shè)接口和A/D轉(zhuǎn)換器,適用于開發(fā)具有USB通信接口的測試測量設(shè)備[1]。本文解析了USBTMC協(xié)議,研究了其基于STM32的實現(xiàn),并詳述了測試過程。

1 USBTMC協(xié)議解析

USBTMC協(xié)議是USB-IF針對測試測量設(shè)備提出的一個符合USB 2.0協(xié)議的子類協(xié)議。2001年6月USB-IF發(fā)布了USBTMC協(xié)議的第一個版本USBTMC 0.7版,目前應(yīng)用廣泛的是2003年4月發(fā)布的USBTMC 1.0版。USBTMC協(xié)議為USB通信接口技術(shù)在測試測量設(shè)備中的應(yīng)用建立了一個統(tǒng)一且唯一的標(biāo)準(zhǔn),符合USBTCM協(xié)議的測試測量設(shè)備,可以通過VISA(Virtual Instrument Software Architecture)直接控制,與其通信的USB主機(jī)可以保持現(xiàn)有的VISA驅(qū)動和應(yīng)用程序不變[2]。

1.1 USBTMC協(xié)議通信模型

USBTMC協(xié)議通信模型如圖1所示,USB設(shè)備固件程序必須支持圖1所示的端點類型,Control端點、Bulk-OUT端點、Bulk-IN端點是必需的,Interrupt-IN端點根據(jù)設(shè)備要求可選[3]。

圖1 USBTMC協(xié)議通信模型

1.2 USBTMC協(xié)議接口端點特性

1.2.1 Control端點

Control端點是所有USB設(shè)備必須具備的默認(rèn)端點,在USBTMC協(xié)議中對Control端點沒有附加規(guī)定,只要求其符合USB 2.0協(xié)議。Control端點用于主機(jī)對設(shè)備發(fā)送標(biāo)準(zhǔn)、類定義和用戶定義的請求,默認(rèn)Control端點的端點號必須是0。

1.2.2 Bulk-OUT端點和Bulk-IN端點

Bulk-OUT端點用于主機(jī)對設(shè)備發(fā)送USBTMC命令消息。對于所有的Bulk-OUT USBTMC命令消息,在其傳輸過程中必須以Bulk-OUT Header開頭,Bulk-OUT Header中包含了該命令消息的相關(guān)信息。

Bulk-IN端點用于主機(jī)讀取設(shè)備的USBTMC響應(yīng)消息。對于所有的Bulk-IN USBTMC響應(yīng)消息,在其傳輸過程中必須以Bulk-IN Header開頭,Bulk-IN Header中包含了該響應(yīng)消息的相關(guān)信息。

Bulk-OUT傳輸和Bulk-IN傳輸是USBTMC協(xié)議的核心,協(xié)議中對上述內(nèi)容做了詳細(xì)的規(guī)定,具體內(nèi)容參考USBTMC協(xié)議1.0版。

2 USBTMC協(xié)議在STM32中的實現(xiàn)

本文中微控制器采用STM32F103RBT6,STM32標(biāo)準(zhǔn)外設(shè)庫采用STM32F10x Standard Peripherals Library3.5.0版,USBTMC協(xié)議采用USBTMC1.0版,開發(fā)平臺采用IAR Embedded Workbench for ARM5.41。

2.1 STM32 USB外設(shè)接口介紹

STM32系列中的增強(qiáng)型STM32F103XX擁有一個USB全速設(shè)備接口外設(shè),符合USB 2.0全速設(shè)備的技術(shù)協(xié)議。意法半導(dǎo)體公司為STM32系列微控制器提供了USB驅(qū)動程序固件,大大簡化了USB外設(shè)接口的應(yīng)用開發(fā)。

USB驅(qū)動程序固件由內(nèi)核層和應(yīng)用接口層組成,內(nèi)核層負(fù)責(zé)管理使用USB外設(shè)接口與USB協(xié)議間的直接通信,其嚴(yán)格遵守USB 2.0協(xié)議,并且獨(dú)立于STM32標(biāo)準(zhǔn)外設(shè)庫,接口層為用戶提供了內(nèi)核層和最終用戶應(yīng)用間的完整接口[4]。

2.2 USBTMC協(xié)議的實現(xiàn)流程

USBTMC協(xié)議是基于USB 2.0協(xié)議的,所以實現(xiàn)USBTMC協(xié)議首先要實現(xiàn)USB 2.0協(xié)議,進(jìn)一步實現(xiàn)USBTMC協(xié)議。實現(xiàn)USB 2.0協(xié)議包括標(biāo)準(zhǔn)描述符的配置和標(biāo)準(zhǔn)請求的響應(yīng)。實現(xiàn)USBTMC協(xié)議包括類定義請求的響應(yīng)和消息傳輸?shù)膶崿F(xiàn)。具體實現(xiàn)流程如圖2所示。

圖2USBTMC協(xié)議實現(xiàn)流程

2.3 配置描述符

USB 2.0協(xié)議采用設(shè)備構(gòu)架的概念來描述一個USB設(shè)備,它把USB設(shè)備看成是一個配置、接口和端點的集合,并采用標(biāo)準(zhǔn)的USB描述符來說明它們,其中包括設(shè)備描述符、配置描述符、接口描述符、端點描述符和字符串描述符。對于高速設(shè)備,還可包含設(shè)備限定描述符和其速率配置描述符。描述符反映了USB設(shè)備的各類屬性,有固定格式的數(shù)據(jù)結(jié)構(gòu),每個描述符的開頭是本描述符的長度,緊跟其后的是描述符的類型信息。在USB設(shè)備枚舉過程中,USB主機(jī)首先會發(fā)出一系列標(biāo)準(zhǔn)請求來讀取USB設(shè)備的各類描述符,進(jìn)而確定該USB設(shè)備的屬性。

USBTMC協(xié)議中對測試測量設(shè)備的描述符進(jìn)行了規(guī)定,設(shè)備描述符的iSerialNumber必須是非零值,USB主機(jī)將16位idVendor值、16位idProduct值和iSerialNumber所指引的字符串值組合成一個標(biāo)識,作為該USB設(shè)備全球唯一的身份標(biāo)識。

接口描述符中USBTMC協(xié)議規(guī)定bInterfaceClass設(shè)置為0xFE,bInterfaceSubClass設(shè)置為0x03,bInterfaceProtocol可以設(shè)置為0x00或0x01。bInterfaceProtocol設(shè)置為0x00代表接口符合USBTMC協(xié)議,設(shè)置為0x01代表接口符合USBTMC USB488協(xié)議,本文中設(shè)置為0x00。

其它描述符的設(shè)置USBTMC協(xié)議中沒有特別規(guī)定,遵守USB 2.0協(xié)議,其中端點描述符必須包含圖1 USBTMC協(xié)議通信模型中規(guī)定的端點類型。

通過上述描述符配置后,當(dāng)USB設(shè)備與USB主機(jī)連接上時,如果USB主機(jī)已經(jīng)裝好VISA驅(qū)動,USB主機(jī)會將USB設(shè)備識別為USBTMC設(shè)備,并自動加載VISA驅(qū)動[5]。

2.4 實現(xiàn)標(biāo)準(zhǔn)請求和類定義請求

2.4.1 實現(xiàn)標(biāo)準(zhǔn)請求

標(biāo)準(zhǔn)請求是USB 2.0協(xié)議中定義的USB設(shè)備請求,其主要功能是完成USB設(shè)備的配置操作,例如讀取USB設(shè)備的描述符。STM32 USB驅(qū)動程序固件實現(xiàn)了USB 2.0協(xié)議規(guī)定的大多數(shù)標(biāo)準(zhǔn)請求,開發(fā)人員只需添加USBTMC協(xié)議中額外規(guī)定即可。USBTMC協(xié)議中只對標(biāo)準(zhǔn)請求CLEAR_FEATURE做出了額外規(guī)定,request wValue = ENDPOINT_HALT,其實現(xiàn)流程如圖3所示。

圖3 標(biāo)準(zhǔn)請求CLEAR_FEATURE實現(xiàn)流程

2.4.2 實現(xiàn)類定義請求

除了標(biāo)準(zhǔn)請求外,USBTMC協(xié)議還定義了8個類定義請求,用以實現(xiàn)測試測量設(shè)備特定的功能。類定義請求的數(shù)據(jù)結(jié)構(gòu)和標(biāo)準(zhǔn)請求的數(shù)據(jù)結(jié)構(gòu)一樣,其中bmRequestType中的類型標(biāo)識位置為1,代表該請求是類定義請求。

在USB設(shè)備枚舉過程,當(dāng)USB主機(jī)將USB設(shè)備識別為測試測量設(shè)備后,USB主機(jī)會發(fā)送類定義請求GET_CAPABILITIES,獲取測試測量設(shè)備的屬性,其它類定義請求會在枚舉過程結(jié)束后根據(jù)實際需要發(fā)送,其實現(xiàn)流程如圖4所示。

圖4 類定義請求實現(xiàn)流程

2.5 實現(xiàn)消息通信

消息通信是USBTMC協(xié)議的核心,測試測量設(shè)備的功能通過消息通信來實現(xiàn)。消息分為命令消息和響應(yīng)消息兩大類,USBTMC協(xié)議規(guī)定每一條消息有一個12位的消息包頭和多個消息數(shù)據(jù)字節(jié)組成,其中消息包頭包含了該消息的屬性信息,消息數(shù)據(jù)是消息的具體內(nèi)容。USBTMC協(xié)議規(guī)定在發(fā)送消息時首先發(fā)送消息包頭,緊接著發(fā)送消息數(shù)據(jù)。USB主機(jī)通過Bulk-OUT端點向測試測量設(shè)備發(fā)送命令消息,通過Bulk-IN端點接收測試測量設(shè)備發(fā)送的響應(yīng)消息,具體實現(xiàn)流程如圖5所示。

圖5 消息通信實現(xiàn)流程

3 USBTMC類USB設(shè)備的測試及應(yīng)用

測試及應(yīng)用USBTMC類USB設(shè)備,需要一臺安裝有VISA驅(qū)動和應(yīng)用軟件的USB主機(jī),本文中用一臺安裝有VISA驅(qū)動和labVIEW軟件的計算機(jī)作為USB主機(jī)。

3.1 USB設(shè)備的測試

labVIEW軟件自帶的MAX(Measurement & Automation Explorer)工具可以非常方便的測試USB設(shè)備。labVIEW軟件中將USB設(shè)備分為兩類:RAW類和INSTR類,其中INSTR類代表符合USBTMC協(xié)議的USB設(shè)備,RAW類代表不符合USBTMC協(xié)議的USB設(shè)備。

將上文中實現(xiàn)USBTMC協(xié)議的 USB設(shè)備插入USB主機(jī),打開MAX工具,MAX工具將自動識別USB設(shè)備如圖6所示。MAX工具會顯示出USB設(shè)備的設(shè)備信息,這些信息都是在配置描述符時設(shè)置的。圖中該USB設(shè)備顯示為USB0::0x0483::0x5710::8D85516F5050::INSTR,0x0483代表USB設(shè)備的制造商ID,0x5710代表型號代碼,8D85516F5050代表序列號,INSTR代表該USB設(shè)備屬于INSTR類,即USBTMC類USB設(shè)備。

圖6 在MAX中顯示的USB設(shè)備

打開MAX工具的測試面板如圖7所示,測試面板中有四個選項卡:viSetAttribute,viWrite,viRead和viClear,可分別測試USB設(shè)備的屬性設(shè)置、寫操作、讀操作和清除操作等功能,通過這些功能測試即可說明該USB設(shè)備完全實現(xiàn)了USBTMC協(xié)議。

圖7 測試面板

3.2 USB設(shè)備的應(yīng)用

labVIEW軟件中對USBTMC類USB設(shè)備操作非常方便,采用與操作串口設(shè)備相同的方式進(jìn)行,即可以使用VISA打開、VISA關(guān)閉、VISA讀取和VISA寫函數(shù)操作USBTMC類USB設(shè)備。如圖8所示是一個操作USBTMC類USB設(shè)備采集數(shù)據(jù)的應(yīng)用程序,圖中顯示其程序結(jié)構(gòu)和操作串口設(shè)備相同,但實際的設(shè)備連接是通過USB接口,數(shù)據(jù)采集速度大大提高。

圖8 采集數(shù)據(jù)應(yīng)用程序

4 結(jié)束語

USB設(shè)備開發(fā)的難點在于驅(qū)動的開發(fā),實現(xiàn)了USBTMC協(xié)議的設(shè)備可以使用同一個驅(qū)動(如本文中的VISA驅(qū)動),這極大的縮短了開發(fā)周期,節(jié)省了人力成本。目前國外一些公司的測試測量設(shè)備已經(jīng)大多支持USBTMC協(xié)議,而國內(nèi)公司對協(xié)議支持較少,研究和實現(xiàn)USBTMC協(xié)議有重要意義。

[1] 王永虹,徐煒,等.ARM Cortex-M3微控制器原理與實踐[M].北京:北京航空航天大學(xué)出版社,2008.

[2] 姜成航.基于USBTMC協(xié)議的USB接口虛擬儀器的研究[D].大連:大連理工大學(xué),2005:3-8.

[3] USB Implementers Forum, Inc. Universal Serial Bus Test and Measurement Class Specification [R]. Revision 1.0, April 14, 2003.

[4] 王鐵流,李宗方,陳東升等.基于STM32的USB數(shù)據(jù)采集模塊的設(shè)計與實現(xiàn)[J].測控技術(shù),2009,28(8):38.

[5] 宮會杰.基于Wince6.0 USBTMC協(xié)議的研究與實現(xiàn)[J].科技視界,2013,(8):40.

猜你喜歡
描述符外設(shè)端點
非特征端點條件下PM函數(shù)的迭代根
基于結(jié)構(gòu)信息的異源遙感圖像局部特征描述符研究
基于AKAZE的BOLD掩碼描述符的匹配算法的研究
不等式求解過程中端點的確定
基于深度學(xué)習(xí)的局部描述符
特征聯(lián)合和旋轉(zhuǎn)不變空間分割聯(lián)合的局部圖像描述符
基丁能雖匹配延拓法LMD端點效應(yīng)處理
外設(shè)天地行情
外設(shè)天地行情
外設(shè)天地行情
朝阳县| 竹溪县| 孝昌县| 高密市| 平潭县| 阿坝| 蓬溪县| 晋城| 汨罗市| 湟中县| 青浦区| 博爱县| 酒泉市| 察雅县| 藁城市| 新沂市| 徐州市| 丰镇市| 大同县| 古浪县| 荣昌县| 温州市| 页游| 府谷县| 高州市| 颍上县| 尼勒克县| 开阳县| 鲁山县| 张家川| 安福县| 安多县| 西丰县| 定南县| 庆阳市| 新竹县| 离岛区| 绥江县| 瑞丽市| 吴川市| 汤原县|