APP下载

STM32CubeMX的全速USB通信及测速模块设计*

2018-09-07,,,

单片机与嵌入式系统应用 2018年9期
关键词:传输速率采集器程序

,,,

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

引 言

USB设备因具备传输速率快,且通信较为稳定、抗扰能力强以及便于插拔等特性,成为电子通信设计、有线数据传输中首选的通信接口[1]。其中USB1.0协议的全速USB设备理论速率可达12 Mbps,USB2.0协议的高速USB设备理论速率可达480 Mbps。

目前市场上大多数微处理器都具备USB功能但不同芯片的集成度不同,主要分为USB芯片集成于处理器内部和需要外扩USB芯片两种模式[2]。当芯片内部集成时,可以有效降低外部电路设计的复杂性[3]。故在数据传输速率要求不是很高的情况下,选用适当的设计方式可以有效提高设计效率[4]。但与此同时USB设备通信协议以及底层驱动设计的复杂性仍然是制约USB应用的主要原因[5],在传统USB开发中不仅要针对USB从机进行相应的定义,还要在主机设备上编写运行相应驱动才能最终实现通信[6-7]。

本设计方案以USB数据采集[8]为设计背景,采用ST(意法半导体)开发的基于HAL库的STM32CubeMX快速完成USB从机端的通信协议配置[9-10],USB主机端使用LabVIEW编写,并借助NI-VISA软件生成USB驱动[11-13],完成USB链接,实现主机、从机之间的全速USB设计,从而极大节省开发中底层驱动及通信协议开发的时间,降低了USB通信开发的难度[14]。

1 全速USB通信模块方案设计

本设计由作为数据采集核心的STM32F4x部分,以及在PC上由LabVIEW编写的包括采集数据展示以及速率测试等功能的数据处理部分构成[15]。其中数据采集入口为STM32F4x本身所带有的片上A/D转换器来实现,通信部分由片上全速USB实现,无需进行外扩USB高速芯片电路设计[16],因而采集端主要由STM32F4x芯片以及相应的外围电路和STM32CubeMX生成再由MDK keil5进行编译的主程序构成[17]。PC端主要由LabVIEW编写的可供键入采集指令以及进行后期数据展示的上位机程序和利用NI-VISA生成的用于识别接口的驱动构成[18-20]。其程序流程为通过PC端LabVIEW程序发送数据采集持续时间等指令,启动采集端开始采集数据,经过A/D转换后由DMA传输至待发送缓存区,通过全速USB反馈至PC端予以展示,同时对其传输速率等进行实时测定。其总体框图如图1所示。

图1 基于STM32的全速USB通信模块设计方案

2 全速USB通信硬件设计

本文提出的全速USB通信模块的设计方案以基于STM32的USB数据采集器为设计背景,主要构成为STM32F4x的最小系统,因USB1.0传输协议传输带宽为12 Mbps,即理想环境下传输速率最大可达1.5 MB/s,可满足设计需求,故设计中无需外扩高速USB芯片,只需将全速USB引脚引出至USB接口即可,但实际电路设计中需注意USB中的D+、D-与STM32F4x的连接走线需遵循平行等长的原则,否则可能出现USB无法识别或识别为未知设备而无法通信等问题。实际电路原理如图2所示。

图2 USB通信模块从机原理图

3 USB数据采集器软件设计

本设计中软件部分包括以LabVIEW编写的PC端程序,以及基于STM32CubeMX生成初始代码再经过MDK编译的采集端程序。最后通过二者之间的通信来共同完成USB数据采集器的设计。

3.1 STM32F4x全速USB通信模块从机程序设计

本部分程序主要包括作为STM32F4x的数据处理程序以及USB通信程序。首先利用STM32CubeMX进行硬件初始化程序配置,从而完成原始代码生成。其配置过程为:首先在STM32CubeMX中新建STM32F4x的工程,本设计选用的芯片型号为STM32F4IGT6,在新建工程时根据微处理器的型号进行选择,系列 Series 中选择STM32F4,引脚Lines中STM32F407/417,封装中Package选择STM32F407IGTx,由此完成硬件的选择;之后使能相关引脚并完成引脚定义,如使能全速USB功能引脚PA11、PA12,以及其它功能引脚。

根据设计需求在时钟树中通过分频以及倍乘等工具完成时钟的配置,之后对所用到的引脚进行初始状态的定义,例如对GPIO口的输入/输出设计,以及ADC入口的状态等进行定义,随后利用报告生成模块生成整体配置的报告文件,进行核对确认无误后即可生成基于HAL库的初始代码。

STM32CubeMX可生成支持EWARM、MDK等多个编译器,此处选择MDK编译器生成工程。系统开始运行后首先进行初始化操作,硬件中间层代码在STM32CubeMX配置中已经生成,在MDK中主要完成主程序的编写。主程序主要包含STM32F4x的硬件初始化、采集数据缓存处理、USB通信程序三个部分。

STM32F4x初始化主要包括:重置所有外设,初始化Flash的HAL_Init()函数,系统时钟配置SystemClock_Config()函数,以及初始化I/O的MX_GPIO_Init()函数等。同时需要进行USB协议栈初始化,包括初始化设备库、添加支持类和启动设备库。完成初始化设置之后即可进行USB发送程序编写,首先设置1024字节的缓存区UserTxBuffer[1024],对缓存区进行按位清零,判定USB接收标志位(USB_FS_Receive_Flag)是否为0,若不为0,则进行清零操作,当标志位清零后,开始通过库函数CDC_Transmit_FS进行数据的发送,传输过程借鉴乒乓传输模式,将传输缓存区按顺序分为前后两段,每段设置为512,发送过程中每存满512长度即进行一次传输,同时另半区继续进行缓存操作以提高程序运行效率。最后进行发送数据量的判断,若发送数据帧数满足预设值,则发送帧计数清零,程序跳回,判断USB标志位操作重新开始下一循环,若规定时间内未发满设定帧数,则回到USB标志清零处进行单次发送以满足条件。其程序流程如图3所示。

图3 采集端USB通信主程序流程图

3.2 基于LabVIEW的USB主机端程序设计

主机端程序由LabVIEW编写,由前面板和后面板两部分构成,其中前面板主要用于用户操作。具体包含数据帧计数模块、数据计数模块、采集器选择模块、各通道采集持续时间定义模块以及波形显示模块。本设计PC端系统选用的是Windows10操作系统,数据采集端所选用的通信方式为USB虚拟串口,故连接时需借助NI-VISA工具生成对应驱动以供PC端程序识别[16],此外后面板设计中需要用到的VISA函数如表1所列。

为了满足数据通信的要求,首先应保证LabVIEW程序能够成功链接到USB设备中,这部分通过表1中的VISA打开函数实现,在选定USB设备后通过创建数组函数以及VISA函数写入采集持续时间等常量,随后通过VISA读取函数读取数据采集器返回数据,并按照对应帧格式进行帧计数和数据计数。在读取数据完成后,通过对数据进行队列操作和数据类型转换,最后通过数组创建函数生成波形数据,并通过波形显示模块予以展示。最后设置VISA关闭函数,当持续时间满足键入值或通信出现错误时,关闭VISA函数停止数据采集。

表1 VISA函数

4 STM32全速USB通信模块测试

本设计中的USB通信测试是基于STM32CubeMX设计的数据采集下位机程序发送数据到基于LabVIEW编写的PC端程序的传输速率测试。方案设计速率要求为400 kbps。首先连接USB数据采集器至PC机,在设备管理器中可见NI-VISA设备,若所选设备的识别码与采集端程序预设相同,链接成功;接下来发送采集命令给采集端。

测试通过在顺序结构中设置两个时间获取控件来获得传输开始到结束所用的时间,通过数据读取计数模块来统计数据个数,最后通过除法运算计算传输速率。因硬件干扰等产生的传输误差导致速率波动过大,测速过程中为避免这种情况导致偶然性,故在LabVIEW上位机设计中采用了双循环结构进行设计,其中内循环次数默认设计为100,即每传输100帧数据利用除法运算求出传输速率,并利用波形图表予以显示;最后利用LabVIEW中统计样板中的Mean函数计算整体传输过程中的速率均值并通过显示模块展示,其中运行150 000 ms的测试结果如图4所示,经过10次不同时长测试得出的传输速率如表2所列,从而使得使用者能够清晰直观地观测传输过程中的速率情况。此外,实时速率的图表显示也方便了使用者对干扰原因的定位以及修改验证。

图4 速率测试结果

由于该方案是基于STM32的官方库函数实现的,相比于直接针对寄存器的开发来说,库函数版本具有开发便捷、操作难度小等特点,同时也有代码量较大、程序运冗余较大而导致的程序运行时间较长等缺点,因而本方案实验结果还存在优化可能,使用寄存器直接开发既可提升代码效率也可获取更高的效率。

表2 运行时间及平均速率

结 语

本文给出的设计方案以STM32F4IGT6为例,以8位数据采集器位应用背景,提出了一种基于STM32CubeMX的USB通信模块设计方法,能够高效、便捷地完成STM32微处理器与PC端 LabVIEW程序之间USB通信。

邓鑫(研究生在读),主要研究方向为信号与信息处理、嵌入式硬件设计。

猜你喜欢

传输速率采集器程序
COVID-19大便标本采集器的设计及应用
三星利用5G毫米波 实现创纪录传输速率
试论我国未决羁押程序的立法完善
“程序猿”的生活什么样
基于ZigBee的大型公共建筑能耗采集器设计
基于LabVIEW的多数据采集器自动监控软件设计与开发
跨山通信中频段选择与传输速率的分析
英国与欧盟正式启动“离婚”程序程序
数据传输速率
创卫暗访程序有待改进