微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > Labview > 使用LabVIEW开发STM32 USB HID驱动和上位机软件成功,有图有真相

使用LabVIEW开发STM32 USB HID驱动和上位机软件成功,有图有真相

时间:10-02 整理:3721RD 点击:
一直以来,USB驱动和通信开发是比较复杂的事情,一般使用C++开发,需要熟悉windows系统下的驱动开发。STM32是近年流行的ARM Cortex-M3芯片,已经集成了USB外设,所以硬件很简单,同时ST公司也提供了USB例程,其中也包括USB HID例程,但只有一个端点,数据只收不发,不是双向的USB通信。最近以来,我一直在研究STM32的USB HID双向通信,并使用LabVIEW来开发USB HID驱动和上位机软件,已经成功,所以讲一下基本过程。首先是USB HID驱动程序的开发。默认来说,USB HID是免驱动的,windows系统已经有了USB HID驱动了,一般是调用usbhid.dll来通信。但这里我们不使用LabVIEW调用usbhid.dll来通信,而且是采用VISA来进行USB HID双向通信,所以我们要先用VISA开发USB HID驱动程序,就是inf文件。我们要先安装VISA驱动程序,我安装的是NI-VISA4.6.2,注意是完整版的安装:

安装完成之后,重新启动电脑,打开“开始”,在“所有程序”的NI目录下,打开:driver wizard:

打开driver wizard之后,选择USB:

下一步是填写VID和PID,以及USB HID设备名、厂家、是否USB复合设备等,需要和STM32 下位机程序对应起来:

下一步是填写USB HID驱动名称,以及生成的inf文件的路径。驱动向导会同时生成XP和VISTA系统下的inf文件:

点下一步,会问您目的路径下的inf文件不存在,是否创建?我们点YES,进入安装选项页面:

我们选择第一项,安装生成的inf驱动程序。最后,我们点击“finish”之后,STM32 USB HID驱动程序就创建完成了,并已经安装到电脑中了。生成的inf文件有电脑的以下目录,同时有XP和VISTA系统的驱动,如下:

我们把STM32 USB HID下位机程序烧写到STM32中之后,插上USB线,电脑会提示新硬件,但XP系统默认安装的是系统自带的USB HID驱动,不是我们刚才生成的inf驱动程序,如下:

这时候我们开始更新驱动程序:

选择“从列表或指定位置安装(高级)”:

下一步,不要搜索,如下:

下一步,选择“STM32 USB HID”:

这样,我们就成功安装我们刚才生成的inf驱动程序了,如下:

最后一步,我们打开LabVIEW的MAX,可以看到,我们的STM32硬件已经被MAX识别出来了:

我们做的STM32硬件能够被LabVIEW的MAX识别出来,就成功了一大半了。接下来就是LabVIEW上位机软件的编写了。LabVIEW给STM32发送数据,可以使用“VISA写”控件。但LabVIEW接收STM32发送过来的数据,不能用“VISA读”控件了,需要使用USB中断控件来读,同时要启用USB中断事件。最后,LabVIEW运行界面如下:

总结:采用基于NI-VISA驱动的USB接口应用系统的设计非常容易,开发难度低,对开发者的要求不高;开发出的系统稳定可靠,即使对Windows编程不熟悉的人也可以开发出USB应用系统,它提供了另一种开发USB驱动应用程序的捷径。另外我发现Bus Hound这个工具挺好的,可以查看USB通信的细节:


好详细的分享啊 多谢

very nice                             

小编你好,请问有STM32的程序吗?  最近在搞USB,一直没什么头绪啊,  我的邮箱是yettt365@126.com,谢谢了

很好的资料 谢谢小编分享!

小编厉害啊,这正好是我想要的

很详细呢,正是我想学习的,谢谢小编

LZ你好。为什么我的MAX识别不到?

非常棒的讲解!

谢谢小编分享,初学STM32+FPGA+LABVIEW.希望小编继续更新,学习中。

Thank you very much.


╭︿︿︿╮
{/ o  o /}  
( (oo) )   
  ︶ ︶︶
驱动安装可是讲的很详细,敢问,你后面的lV程序是怎么写啊?
我一直想搞懂,STM32 CostomHID的那个通讯例子,下位程序还可以勉强看看明白,但是一直做不出上位机就蛋疼了!

好帖,学习

小编,有问题想咨询下你,可否留下QQ或者微信,跪谢!

好东西,mark一下下。

好东西,这个得mark一下下。

您好 ,我也在搞这一块,请问你的出来没

很不错的东东噢噢噢噢哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦

HAOHAOHAOHAOHAO,谢谢分享

感觉小编深藏功与名啊  这么详细


最后没有选择用LV,就用VC了,ST提供的那个调试小软件是开源的,用VS10版本以上的可以打开,可以自己去看

正在找这个,谢谢!

好……………………………………………………………………………………………………………………………………

小编你好!,请问后边的读取信息为何要采用中断进行。另外,你采用的USB设备是什么类型的,我通过查我的NI-VISA助手,显示USB设备为RAW类型,并且没有中断,请问这样的USB设备该如何读取数据?谢谢小编

我正在试USB中断的使用.可不知道怎么才行.请教能否给个例程,谢谢.XSBYY21@163.COM

好东西      

好详细的分享啊 多谢

MARK一下                                            

这是一个好东西 真的 需要改改我的程序了

精通LabVIEW信号处理

高手,谢谢分享。很有用

很好的资料 谢谢小编分享

小编,求STM32程序,1184377996@qq.com

小编可否发一份我,万分感谢啊,做这人有一个多月了,上位机一直都没有做出来,这几天真是恼火,发我一份吧!lizq3531@163.com   小编好人啊

好资料,谢谢小编分享

小编你好,最近也在研究labview与usb通讯的问题,现在群殴已经可以在max 中找到我的usb设备,但是我还是没有办法读出数据,所以如果方便的话,可不可以留下QQ帮我指点一下,谢谢!

小编,按照你的方法,已经可以识别usb设备,但是在NI-MAX中的测试中,出现了如下问题,能帮忙看一下吗?谢谢!


最近正在学习LABVIEW,看看

你好,你的那个STM32 CostomHID通讯例子可不可以发给我看一下,我也在学USB,没找到合适的例程。我邮箱1184377996@qq.com。谢谢啦

小编,上位机代码可以开放吗?谢谢

mark...

谢谢小编,最劲在找这方面的资料,这个太有用了。

谢谢分享~~~~~~~~~~~~

MARK....6666666666666666666

很实用的东西,比灌水的帖子好多了啊

给力                                   

牛人,谢谢分享

学习一下,正在搞USB

谢谢分享...

亲,我的问题和你的一样,请问你解决了吗

小编,我的问题和您的问题一模一样,请问您最后怎么解决的啊,这几天一直搞这个,上火纠结死了

labview轴承故障诊断

感觉小编深藏功与名啊  这么详细

不错,学习了。

小编好厉害!

太好了

学习

好东西

hao

谢谢分享

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top