APP下载

基于STM32处理器的USB通信设计

2015-08-07王太晓林晓焕周静雷

微处理机 2015年1期
关键词:枚举测试软件描述符

王太晓,林晓焕,周静雷

(西安工程大学电子信息学院,西安710048)

·微机网络与通信·

基于STM32处理器的USB通信设计

王太晓,林晓焕,周静雷

(西安工程大学电子信息学院,西安710048)

目前USB通信接口已经得到了广泛应用。为了配合扬声器功率测试系统,以STM32微处理器为基础,介绍了一种基于STM32与PC机之间的USB通信方式,并且在扬声器功率测试系统中得到了很好的应用。该设计简洁实用,枚举过程清晰,调试过程更是简单快速。

STM32微处理器;USB通信;扬声器功率测试系统

1 引 言

上位机软件通过USB接口[1]与扬声器功率测试仪进行双向通信。上位机向测试仪发送控制信号,STM32接收上位机指令并对测试仪各模块进行相应控制,同时测试仪通过USB通信向上位机回馈执行结果。

2 USB概述[2]

USB为通用串行总线(Universal Serial Bus)的缩写,具有支持热插拔、接口简单便于携带、传输速度快、标准统一、扩展方便、兼容性好等优点,现已广泛应用到工业,民用等各个领域。

3 硬件设计

设计采用了一款由意法半导体公司生产的采用Cortex-M3内核的STM32F103R8T6芯片,该芯片具有以下特性[3]:

(1)最大工作频率72MHz。

(2)64KB字节Flash(程序存储器)。

(3)20KB字节SRAM(运行内存)。

(4)2.0V~3.6V供电电压,I/O口能够兼容5V电平。

(5)拥有丰富的通信接口。

设计中并没有引入嵌入式实时系统,系统资源消耗较少,STM32F103R8T6内部自带的FLASH、SRAM足够满足设计要求。STM32芯片内部集成了USB外设,大大减轻了USB电路的设计负担。不仅使设计成本和开发难度进一步变低,而且设备通信稳定度也有提高。另外为保证USB通信质量,在电路中加入AD公司的USB数字隔离器ADuM4160[4],该芯片兼容USB低速和全速设备,能够在环境嘈杂的测试场所保证通信质量[5](见图1)。

ADuM41601是一款USB端口隔离器,它将高速CMOS工艺与单片空芯变压器技术相结合,可提供优异的工作性能,并且很容易与低速和全速USB 兼容外设集成。

图1 USB模块硬件结构图

许多微控制器实施的USB只向外部引脚提供D+和D-线路。这在许多情况下都符合需求,因为它仅需极少的外部器件,并简化了设计;不过,当需要隔离时,这会带来难题。USB线路必须在主动驱动D+/D-、接收数据与允许外部电阻设置总线空闲状态三者之间自动切换。ADuM4160结构既可以检测数据流向,又能够控制输出缓冲的状态。数据流向根据一个个分组确定。

ADuM4160将基于边沿检测的iCoupler技术与内部逻辑结合使用,可实现透明、易于配置、面对上游的端口隔离器。隔离上游端口具有电路简单、电源管理和操作稳健等多种优势。

这款隔离器的传播延迟与标准集线器和电缆的传播延迟相当。它可以采用任一侧的4.5V~5.5V电源电压供电,并能在内部将该电压调节至信号电平,从而与VBUS直接相连。ADuM4160对上拉电阻进行隔离控制,以便外设能控制连接时序。该器件的空闲电流较低,因此不需要挂起模式(见图2)。

图2 USB硬件连接图

4 软件设计

USB设备软件主要是进行USB通信的初始化、通信协议的转换以及数据传输。而USB只是一个总线[6],只提供一个数据通道。USB总线驱动程序并不知道一个设备如何具体操作,有哪些行为。USB主机设备是如何知道一个设备的功能以及行为的呢?这就要通过描述符来实现了。

首先必须要了解USB标准描述符[7],USB协会为了规范USB设备的读写和识别在协议中规定了USB标准描述符。描述符就是用于描述设备特性的具有特定格式排列的一种数据组织结构,它记录了设备的类型、厂商ID和产品ID(通常依靠它们来加载对应的驱动程序)、端点情况、版本号等众多信息。其作用是按照USB协议所规定的数据格式,在主机识别该设备时按照对应通信指令及流程,从设备及时将其具体设置传到主机。根据USB设备的用途不同,所用的标准描述符也不尽相同,但是无论USB设备的哪种用途,最基本的标准描述符是相同的。

其次一个USB设备插入主机后,主机会对其进行识别,这个过程称之为枚举[8]。任何USB的数据传输都是建立在成功通过枚举的基础上的,所以枚举是USB通信的关键一步。USB设备枚举的过程其实就是从设备读取各种描述符信息,这样主机就可以根据这些信息来加载合适的驱动程序,从而知道设备是什么样的设备,如何进行通信等。枚举过程具体可以分为以下几步。

(1)由于主机不断对其USB设备端口进行电平检测,当USB从设备插入到主机USB主设备端口后,主机USB设备端口电平发生变化,当主机检测到该电平变化后就认为有USB从设备接入,然后主机就会对接入的USB从设备尝试进行复位。该设备经过复位后其在总线上的地址被强制规定为0,然后主机通过总线地址0与该设备的端点0进行通信。这时主机会按照USB通信协议规定,向设备发送标准请求,设备则回应相应的代码。

(2)通过第一步,主机得到想要的数据后,主机将会对该设备进行第二次复位。复位后主机会向设备发送设置地址请求,具体地址由主机来设定。当设备接收地址设置请求并且成功设置地址后第二步就认为完成了。

(3)主机再次获取设备描述符。此时获取数据的地址为第二步建立的地址。

(4)主机获取配置描述符及其他剩余的描述符。

主机对设备枚举成功后就会根据下位机设备所提供的描述符来确定设备的类型,进而加载相应的设备驱动完成对设备的所有识别步骤,这样上位机软件就可以通过调用主机提供的上位机驱动实现与下位机的通信。总结整个过程同时结合与上位机的通讯,可以通过图3来更加清楚的了解整个STM32USB从设备与上位机的传输过程。

图4为通过Bus Hound软件抓取的设备被正确识别的示意图。从图中可以看出设备已经被正确识别为HID设备,其中VID,PID为USB协会给各大芯片厂商所规定的身份识别码,每个芯片厂商有且仅有一个VID,PID码,而且各个厂商各不相同,所以可以通过VID,PID来确认一个USB设备是否被成功识别。

为了验证数据是否能够正确传输,利用VS2008和QT编写了一个USB测试程序与下位机进行通信来察看数据传输是否正确,如图5所示。

在USB驱动中已经将制造商字符串“STMicroelectronics”和产品名称“TEST DEMOS V2.0”分别写入到了CustomHID_StringVendor[CUSTOMHID_ SIZ_STRING_VENDOR]、CustomHID_StringProduct[CUSTOMHID_SIZ_STRING_PRODUCT]这两个字符串描述符数组中,从上图编号①和②所在位置可以看出在测试软件和Bus Hound软件中已经能够将它们正确显示。此外在编号③及编号④处分别进行了一次完整的收发实验,可以看出端点1确实已经作为发送端点(对于上位机而言)传输数据,并且数据长度为8个字节,而且数据传输正确(Bus Hound显示的为char型数据而测试软件中显示的是char型数据所对应的ASCII码),同样作为设定为输入的端点2,数据传输也是正确的。

图3 STM32USB与主机通讯典型流程图

图4 Bus Hound软件对下位机设备的识别

5 扬声器功率实验系统

扬声器功率实验系统[9]设计思路如图6所示,该系统总体可以分为4部分:①用于信号处理、采集及上位机通信由STM32作为主控的下位机功率测试仪;②由计算机组成的上位机部分,且该计算机必须包含有USB设备接口、专业的声频采集卡、以及上位机测试软件;③驱动待测扬声器组的功率放大器;④待测扬声器组。

图5 STM32USB与上位机测试软件通信示意图

图6 功率试验系统总体设计框图

信号分配及调理电路采用TI的高性能数字控制模拟电子开关CD4051来担当信号分配任务。该芯片最高支持8个通道的模拟信号切换,信号经过CD4051后输出给DAC8801,按照实际需求对信号进行程控衰减调节。

采样电路采集扬声器的工作电压及电流,该电路中的扬声器工作电流是通过采集一个高精度、小阻值大功率电阻上的电压值间接得到的,该电压值比较小,所以必须要经过一个程控放大才能送到声卡。本设计采用的是BB公司的高性能仪器仪表程控差分放大器PGA205。由于扬声器工作电压较高,不适宜直接接入声卡,所以首先通过程控电阻网络将高电压衰减为低电压,然后由PGA205送入声卡。

此外,该系统还带有校准功能,内部集成了高精度的标准信号源,采用TI公司的DDS芯片AD9850产生正弦波,并通过运放TL082将输出信号固定在规定的幅值上,配合上位机软件完成仪器的自校准功能。

上位机测试软件主要利用C++语言编写。软件平台采用一款可视化集成开发工具C++Builder6.0,该软件具有一个专业的C++开发环境所能提供的全部功能,快速、高效的编译器优化等。上位机软件通过调用系统API函数驱动专业声卡、USB2.0设备,完成标准测试信号的产生、测试仪馈入信号的采集,以及与测试仪进行USB通信。

6 结束语

从硬件和软件两方面介绍了基于STM32的USB通信开发,立足于实践,用比较简单的方法实现了基于USB通信的扬声器功率测试系统的开发,该系统数据传输稳定,可靠性和抗干扰能力强。

[1] 刘思久,赵蔚.实现USB2.0高速数据传输的问题探讨[J].计算机工程与应用,2007,43(2):75-77.

[2] 薛园园.USB应用技术开发大全[M].北京:人民邮电出版社,2007.

[3] STMicroelectronics.STM32RX Reference[R].Rev13,2011年4月.

[4] Analog Device INC.Adum4160_cn Reference[R].RevC,2010年10月.

[5] 陈斌,高俊,李娟.基于ARM的多功能便携式检测仪[J].电子测量技术,2009,32(1),120-121.

[6] 刘荣.圈圈教你玩USB(第二版)[M].北京:北京航空航天大学出版社,2013.

[7] 叶存奎.USB设备协议栈的设计与实现[D].武汉:华中科技大学,2011:87-88.

[8] 王川北.深入浅出USB系统开发-基于ARM Cortex-M3[M].北京.北京航空航天大学出版社,2012-09.

[9] 周静雷.基于虚拟仪器的扬声器扬声器功率实验系统设计[J].传感器与仪器表,2007(6):179-181.

Design of USB Communication Based on the STM32 Processor

Wang Taixiao,Lin Xiaohuan,Zhou Jinglei
(School of Electronic Information,Xi’an Polytechnic University,Xi’an 710048,China)

At present,the USB communication interface has been widely used.For the loudspeaker power test system,a USB communication,using the STM32 asmicroprocessor,based on the communication between a STM32 and a PCwhich is applied well in the loudspeaker power test system,is introduced in this paper.The design shows that the hardware design is compact and applicable,the enumeration process is clear and the debugging process is simple and rapid.

STM32;USB communication;The loudspeaker power test system

10.3969/j.issn.1002-2279.2015.01.009

TP336

A

1002-2279(2015)01-0025-04

王太晓(1988-),男,山东省泰安市人,硕士研究生,主研方向:声频测量。

2014-06-10

猜你喜欢

枚举测试软件描述符
基于理解性教学的信息技术教学案例研究
基于结构信息的异源遥感图像局部特征描述符研究
网络自适应测试软件运行方法设计
基于AKAZE的BOLD掩码描述符的匹配算法的研究
数组在处理枚举无规律数据中的应用
基于深度学习的局部描述符
自动化检测EPU10A板卡系统设计与实现
特征联合和旋转不变空间分割联合的局部图像描述符
基于太阳影子定位枚举法模型的研究
基于枚举的并行排序与选择算法设计