APP下载

基于STM32的USBTMC协议的研究与实现

2014-06-27陈一鸣陈雪艳

武汉工程职业技术学院学报 2014年2期
关键词:描述符外设端点

陈一鸣 高 云 邓 攀 尚 伦 陈雪艳

(武汉(钢铁)集团公司研究院 湖北 武汉:430080)

0 引言

USB(Universal Serial Bus,通用串行总线)是一种新型通信接口技术,最早是由Compaq、Intel、Microsoft等多家公司于1994年11月共同提出的,具有高传输速率、即插即用和易于扩展等优点。USB从最初的0.7版,发展到目前普遍使用的2.0版,以及最新的3.1版,其传输速率最高能达到10Gbps,越来越多的测试测量设备具有USB通信接口。

为简化USB设备的开发过程,USB-IF(USB Implementers Forum)对一些具有相似特点并提供相似功能的USB设备进行抽象,定义它们所特有的属性和使用方法,这些被称为设备类。对于测试测量设备USB-IF在USB 2.0协议的基础上定义了USBTMC协议(Universal Serial Bus Test and Measurement Class Specification),方便用户开发和使用测试测量设备的USB通信接口。

STM32是意法半导体公司开发的基于Cortex-M3内核的新型32位微控制器系列,芯片内部集成了全速USB 2.0外设接口和A/D转换器,适用于开发具有USB通信接口的测试测量设备[1]。本文解析了USBTMC协议,研究了其基于STM32的实现,并详述了测试过程。

1 USBTMC协议解析

USBTMC协议是USB-IF针对测试测量设备提出的一个符合USB 2.0协议的子类协议。2001年6月USB-IF发布了USBTMC协议的第一个版本USBTMC 0.7版,目前应用广泛的是2003年4月发布的USBTMC 1.0版。USBTMC协议为USB通信接口技术在测试测量设备中的应用建立了一个统一且唯一的标准,符合USBTCM协议的测试测量设备,可以通过VISA(Virtual Instrument Software Architecture)直接控制,与其通信的USB主机可以保持现有的VISA驱动和应用程序不变[2]。

1.1 USBTMC协议通信模型

USBTMC协议通信模型如图1所示,USB设备固件程序必须支持图1所示的端点类型,Control端点、Bulk-OUT端点、Bulk-IN端点是必需的,Interrupt-IN端点根据设备要求可选[3]。

图1 USBTMC协议通信模型

1.2 USBTMC协议接口端点特性

1.2.1 Control端点

Control端点是所有USB设备必须具备的默认端点,在USBTMC协议中对Control端点没有附加规定,只要求其符合USB 2.0协议。Control端点用于主机对设备发送标准、类定义和用户定义的请求,默认Control端点的端点号必须是0。

1.2.2 Bulk-OUT端点和Bulk-IN端点

Bulk-OUT端点用于主机对设备发送USBTMC命令消息。对于所有的Bulk-OUT USBTMC命令消息,在其传输过程中必须以Bulk-OUT Header开头,Bulk-OUT Header中包含了该命令消息的相关信息。

Bulk-IN端点用于主机读取设备的USBTMC响应消息。对于所有的Bulk-IN USBTMC响应消息,在其传输过程中必须以Bulk-IN Header开头,Bulk-IN Header中包含了该响应消息的相关信息。

Bulk-OUT传输和Bulk-IN传输是USBTMC协议的核心,协议中对上述内容做了详细的规定,具体内容参考USBTMC协议1.0版。

2 USBTMC协议在STM32中的实现

本文中微控制器采用STM32F103RBT6,STM32标准外设库采用STM32F10x Standard Peripherals Library3.5.0版,USBTMC协议采用USBTMC1.0版,开发平台采用IAR Embedded Workbench for ARM5.41。

2.1 STM32 USB外设接口介绍

STM32系列中的增强型STM32F103XX拥有一个USB全速设备接口外设,符合USB 2.0全速设备的技术协议。意法半导体公司为STM32系列微控制器提供了USB驱动程序固件,大大简化了USB外设接口的应用开发。

USB驱动程序固件由内核层和应用接口层组成,内核层负责管理使用USB外设接口与USB协议间的直接通信,其严格遵守USB 2.0协议,并且独立于STM32标准外设库,接口层为用户提供了内核层和最终用户应用间的完整接口[4]。

2.2 USBTMC协议的实现流程

USBTMC协议是基于USB 2.0协议的,所以实现USBTMC协议首先要实现USB 2.0协议,进一步实现USBTMC协议。实现USB 2.0协议包括标准描述符的配置和标准请求的响应。实现USBTMC协议包括类定义请求的响应和消息传输的实现。具体实现流程如图2所示。

图2USBTMC协议实现流程

2.3 配置描述符

USB 2.0协议采用设备构架的概念来描述一个USB设备,它把USB设备看成是一个配置、接口和端点的集合,并采用标准的USB描述符来说明它们,其中包括设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。对于高速设备,还可包含设备限定描述符和其速率配置描述符。描述符反映了USB设备的各类属性,有固定格式的数据结构,每个描述符的开头是本描述符的长度,紧跟其后的是描述符的类型信息。在USB设备枚举过程中,USB主机首先会发出一系列标准请求来读取USB设备的各类描述符,进而确定该USB设备的属性。

USBTMC协议中对测试测量设备的描述符进行了规定,设备描述符的iSerialNumber必须是非零值,USB主机将16位idVendor值、16位idProduct值和iSerialNumber所指引的字符串值组合成一个标识,作为该USB设备全球唯一的身份标识。

接口描述符中USBTMC协议规定bInterfaceClass设置为0xFE,bInterfaceSubClass设置为0x03,bInterfaceProtocol可以设置为0x00或0x01。bInterfaceProtocol设置为0x00代表接口符合USBTMC协议,设置为0x01代表接口符合USBTMC USB488协议,本文中设置为0x00。

其它描述符的设置USBTMC协议中没有特别规定,遵守USB 2.0协议,其中端点描述符必须包含图1 USBTMC协议通信模型中规定的端点类型。

通过上述描述符配置后,当USB设备与USB主机连接上时,如果USB主机已经装好VISA驱动,USB主机会将USB设备识别为USBTMC设备,并自动加载VISA驱动[5]。

2.4 实现标准请求和类定义请求

2.4.1 实现标准请求

标准请求是USB 2.0协议中定义的USB设备请求,其主要功能是完成USB设备的配置操作,例如读取USB设备的描述符。STM32 USB驱动程序固件实现了USB 2.0协议规定的大多数标准请求,开发人员只需添加USBTMC协议中额外规定即可。USBTMC协议中只对标准请求CLEAR_FEATURE做出了额外规定,request wValue = ENDPOINT_HALT,其实现流程如图3所示。

图3 标准请求CLEAR_FEATURE实现流程

2.4.2 实现类定义请求

除了标准请求外,USBTMC协议还定义了8个类定义请求,用以实现测试测量设备特定的功能。类定义请求的数据结构和标准请求的数据结构一样,其中bmRequestType中的类型标识位置为1,代表该请求是类定义请求。

在USB设备枚举过程,当USB主机将USB设备识别为测试测量设备后,USB主机会发送类定义请求GET_CAPABILITIES,获取测试测量设备的属性,其它类定义请求会在枚举过程结束后根据实际需要发送,其实现流程如图4所示。

图4 类定义请求实现流程

2.5 实现消息通信

消息通信是USBTMC协议的核心,测试测量设备的功能通过消息通信来实现。消息分为命令消息和响应消息两大类,USBTMC协议规定每一条消息有一个12位的消息包头和多个消息数据字节组成,其中消息包头包含了该消息的属性信息,消息数据是消息的具体内容。USBTMC协议规定在发送消息时首先发送消息包头,紧接着发送消息数据。USB主机通过Bulk-OUT端点向测试测量设备发送命令消息,通过Bulk-IN端点接收测试测量设备发送的响应消息,具体实现流程如图5所示。

图5 消息通信实现流程

3 USBTMC类USB设备的测试及应用

测试及应用USBTMC类USB设备,需要一台安装有VISA驱动和应用软件的USB主机,本文中用一台安装有VISA驱动和labVIEW软件的计算机作为USB主机。

3.1 USB设备的测试

labVIEW软件自带的MAX(Measurement & Automation Explorer)工具可以非常方便的测试USB设备。labVIEW软件中将USB设备分为两类:RAW类和INSTR类,其中INSTR类代表符合USBTMC协议的USB设备,RAW类代表不符合USBTMC协议的USB设备。

将上文中实现USBTMC协议的 USB设备插入USB主机,打开MAX工具,MAX工具将自动识别USB设备如图6所示。MAX工具会显示出USB设备的设备信息,这些信息都是在配置描述符时设置的。图中该USB设备显示为USB0::0x0483::0x5710::8D85516F5050::INSTR,0x0483代表USB设备的制造商ID,0x5710代表型号代码,8D85516F5050代表序列号,INSTR代表该USB设备属于INSTR类,即USBTMC类USB设备。

图6 在MAX中显示的USB设备

打开MAX工具的测试面板如图7所示,测试面板中有四个选项卡:viSetAttribute,viWrite,viRead和viClear,可分别测试USB设备的属性设置、写操作、读操作和清除操作等功能,通过这些功能测试即可说明该USB设备完全实现了USBTMC协议。

图7 测试面板

3.2 USB设备的应用

labVIEW软件中对USBTMC类USB设备操作非常方便,采用与操作串口设备相同的方式进行,即可以使用VISA打开、VISA关闭、VISA读取和VISA写函数操作USBTMC类USB设备。如图8所示是一个操作USBTMC类USB设备采集数据的应用程序,图中显示其程序结构和操作串口设备相同,但实际的设备连接是通过USB接口,数据采集速度大大提高。

图8 采集数据应用程序

4 结束语

USB设备开发的难点在于驱动的开发,实现了USBTMC协议的设备可以使用同一个驱动(如本文中的VISA驱动),这极大的缩短了开发周期,节省了人力成本。目前国外一些公司的测试测量设备已经大多支持USBTMC协议,而国内公司对协议支持较少,研究和实现USBTMC协议有重要意义。

[1] 王永虹,徐炜,等.ARM Cortex-M3微控制器原理与实践[M].北京:北京航空航天大学出版社,2008.

[2] 姜成航.基于USBTMC协议的USB接口虚拟仪器的研究[D].大连:大连理工大学,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数据采集模块的设计与实现[J].测控技术,2009,28(8):38.

[5] 宫会杰.基于Wince6.0 USBTMC协议的研究与实现[J].科技视界,2013,(8):40.

猜你喜欢

描述符外设端点
非特征端点条件下PM函数的迭代根
基于结构信息的异源遥感图像局部特征描述符研究
基于AKAZE的BOLD掩码描述符的匹配算法的研究
不等式求解过程中端点的确定
基于深度学习的局部描述符
特征联合和旋转不变空间分割联合的局部图像描述符
基丁能虽匹配延拓法LMD端点效应处理
外设天地行情
外设天地行情
外设天地行情