STM32CubeMX的高速USB通信模块设计
罗瑶;魏忠义;朱磊;郭林源
【摘 要】高速USB是一种具有即插即用、热插拔特点的计算机总线技术,其传输速率高而且应用广泛.但基于USB的协议模块开发比较困难,本文给出基于STM32CubeMX的高速USB通信模块设计.该方案以外扩高速USB3300芯片的STM32F4x为硬件平台,利用STM32CubeMX快速生成USB库函数和LabVIEW图形化软件编程工具,共同实现高速USB通信的高效开发.实验结果表明,该设计传输速率可达3.0 Mbps以上,且开发快捷.%The high-speed USB has high transmission rate and wide application,it is a kind of computer bus technology which has the characteristics of hot-swappable and plug-and-play.But the module development based on the USB protocol is difficult,therefore a new high-speed USB communication module based on STM32CubeMX is proposed in the paper.The scheme uses the extended high-speed STM32F4X USB3300 chip as the hardware platform,and makes full use of the tools of STM32CubeMX to generate quickly the USB library function and LabVIEW graphical software programming tools realize the efficient development of high-speed USB communic
ation.The experiment results show that the transfer rate of the design can reach 3.0 MB/S.
【期刊名称】《单片机与嵌入式系统应用》
【年(卷),期】2017(017)009
【总页数】4页(P46-48,54)
5.1国际劳动节【关键词】高速USB通信;STM32CubeMX;STM32F4x;LabVIEW
【作 者】罗瑶;魏忠义;朱磊;郭林源
关于雨的成语【作者单位】西安工程大学电子信息学院,西安710048;西安工程大学电子信息学院,西安710048;西安工程大学电子信息学院,西安710048;西安工程大学电子信息学院,西安710048
肉桂茶属于高档茶吗【正文语种】中 文
【中图分类】TP393.04
USB因具有接口容易、传输速率快等特点成为当今研究热点,理论上USB2.0的传输速度为480 Mbps。其在自动控制、航空航天等工程实际应用中使用广泛[1-5]。现市场上的USB总线接口控制芯片很多,USB的传输模式按功能分主要包含两种:高速USB芯片集成于处理器内部、高速USB芯片没有在内部集成。当高速芯片集成于内部时其处理能力有限,限制了传输速率的提高[3],所以本文选择内部未集成高速USB芯片而仅含有USB总线接口的STM32F4x作为微控制器外扩USB高速芯片。
STM32F4x是由ST公司开发的一种高性能微控制器,STM32CubeMX是ST相配套的开发软件[5],它是一款图形化软件设置工具,用户只需借助引脚冲突解决、中间件协议栈等一步步地生成相应的初始化C代码。同时它也是一个集成化的软件平台,支持每一个系列(例如STM32F4x系列的STM32CubeF4),可以极大地减轻开发工作、节省时间和费用。而LabVIEW对数据处理的接口方便,便于编程调试,有利于研究领域的开发。
本设计方案直接采用ST(意法半导体)开发的STM32CubeMX的库函数快速进行USB从机端的程序配置,使用PC机端的LabVIEW进行主机端的程序编写,然后调试使两者程序之间完成通信,即可实现USB2.0高速数据通信的目的,从而极大地提高了工作效率。
本设计包含两部分: STM32F4X的USB从机端和PC机的USB主机端。USB从机端内囊括使用STM32F4x的ULPI PHY接口外扩USB高速芯片USB3300以及基于STM32CubeMX库函数编写的从机端程序;PC机USB主机端包括USB接口和基于LabVIEW编写的GUI程序。本方案高速USB通信速率测试是通过由STM32CubeMX编写从机端程序向PC机USB主机端LabVIEW开发的GUI程序发送数据。方案的总体框图如图1所示。
高速USB硬件设计主要是通过最小系统STM32F4x板载的ULPI PHY接口外扩高速USB3300芯片。在电路设计中USB3300芯片有33个引脚,GND FLAG引脚在USB3300芯片的背面,须接地。当USB_HS中的D-和D+与高速USB中的USB3300引脚相连时,两条数据线需要保持等长,特别说明XTAL3外部晶振尽量与USB3300芯片保持近距离以此来减少起振稳定时间。高速USB电路连接如图2所示。
高速USB通信软件设计分两部分:基于STM32CubeMX的高速USB从机端程序设计和PC机基于LabVIEW的高速USB主机端程序设计。最后要实现USB从机端程序同USB主机端程序之间的高速USB通信。
3.1 高速USB从机端程序设计
USB从机端通信软件的设计主要包含以STM32F4x为微处理器的USB从机通信程序的编写。我们首先采用STM32CubeMX软件进行程序配置,配置步骤如下:
① 首先打开STM32CubeMX后点击NEW Project,新建工程。
严浩翔② 其次对板子进行选择,根据MCU型号选择。本次实验所用的板子是STM32F407IGT6,在Series中选择STMF4,Lin中选择STM32F407/417,便可看到列表中有STM32F407IGTx的选项;双击STM32F407IGTx,可以进入Pinout引脚配置界面,以配置引脚PI11为例,可以直接进行引脚选择,勾选自己所需的配置,十分方便。
③ 最后只需4步,均是图形化界面:第一步进行时钟配置,点击相应的界面直接更改数字就可以得到想要的频率;第二步进行外设配置,双击USB_HS的外设进行配置;第三步进行GPIO的配置,勾选输出速率;第四步进行简单功耗计算。
配置完成后,点击生成工程文件按钮,弹出工程设置窗口,填写好工程名,选择目录,选择编译器MDK。最后点击OK,便可生成工程文件了,用编译器打开后,可方便地编写所需代码。当系统上电后首先初始化操作,硬件抽象层和中间层代码已经由STM32CubeMX生成,简单方便,MDK中主程序编写过程如下:
① 程序开始后,首先进行STM32F4x初始化,具体包括: HAL_Init() 重置所有外设、初始化Flash界面;SystemClock_Config()、配置系统时钟;MX_GPIO_Init初始化所有I/O外设、MX_USB_DEVICE_Init,USB协议栈初始化包括初始化设备库,添加支持类和启动库函数。
② 判断USB接收标志位(USB_HS_Receive_Flag)是否为1,为1则USB接收标志位清0,不为1再次判断USB标志位是否为1;当标志位清0后,开始调用库函数CDC_Transmit_HS发送数据。接着再次判断标志位(USB_HS_Receive_Flag)是否还为1,如果是则USB发送帧计数清0、USB接收标志位清0,从而再次回到USB标志位是否为1的判断中,如果判断USB接收标志位不为1,则调用库函数CDC_Transmit_HS发送数据,再次依据LabVIEW后期分析数据的需要分两次使用:k=CDC_Transmit_HS(&UserTxBuffer[0][0], X_DATA_SIZE)发送100帧数据;
③ 最后判断是否发满100帧,如果没有发满100帧,程序回到USB标志位清0的位置,开始只发送一帧数据;如果发满100帧,USB发送帧计数清0,程序再次从判断最初的USB接收标志位(USB_HS_Receive_Flag)为0开始下一轮循环。基于STM32F4x的高速USB主程序流程图如图3所示。
3.2 基于LabVIEW的高速USB主机端程序设计
应用LabVIEW编写USB主机端通信软件包含前面版和后面版两部分。前面版中具体有:VISA资源名称、命令(command)、循环次数、持续时间、传输速率、读取的数据个数、响应等文本显示框图以及产生数据个数的波形图和波形图表,如图4所示。
因为本次PC机端使用的是Windows10操作系统,所以在后面版的编写过程中无需安装驱动,直接采用Windows10自带驱动。另外LabVIEW在编写高速USB通信软件后面版时需要用到的VISA函数[6-8]如表1所列。
高速USB主机通信软件后面版编写过程如下:
① 首先使用VISA打开函数打开USB设备;
② 其次使用VISA的写入函数将数据发送给USB设备,发送400字节,循环100次;
③ 再次通过使用VISA读取函数,读取USB设备返回的数据值;
matlab求导④ 最后实现功能后,通过使用VISA关闭函数,关闭USB设备。基于LabVIEW编写的高速US
B主机软件后面板如图5所示。
这世上没有迟到的缘分本系统的USB通信测试是通过基于STM32CubeMX的高速USB从机端程序将数据发送给基于LabVIEW编写的高速USB主机端程序的速率测试。
本方案要实现高速USB通信,因此至少需要达到1 MB/s,首先使用PC机端LabVIEW程序识别到USB设备端,可以看出VISA资源名称显示为COM3,表明已经连接成功;其次发送指令给USB设备端,USB设备端将数据传输给PC机进行上行通信,测试选用循环发送400字节,共发送100次的数据给PC端的USB主机,USB主机即可接收数据进行上行通信速度测试。最后经过多次反复验证可以看到,显示数据的波形图呈现规则的梯形方波,捕捉到通信数据速率至少为3.0 MB/s以上,如图6所示。考虑到该方案的普遍应用性,在设计过程中使用了比较多的控件产生过多的冗余,因此使得传输速率稍有偏低,但优化本设计后传输速率可提高很多。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论