也谈USB开发:使用LabVIEW开发STM32 USB HID驱动和上位机软件成功

[复制链接]
22847|89
手机看帖
扫描二维码
随时随地手机跟帖
wyb4993|  楼主 | 2011-6-26 08:58 | 显示全部楼层 |阅读模式
本帖最后由 wyb4993 于 2011-6-26 18:53 编辑

一直以来,USB驱动和通信开发是比较复杂的事情,一般使用C++开发,需要熟悉windows系统下的驱动开发。

STM32是近年流行的ARM Cortex-M3芯片,已经集成了USB外设,所以硬件很简单,同时ST公司也提供了USB例程,其中也包括USB HID例程,但只有一个端点,数据只收不发,不是双向的USB通信。

最近以来,我一直在研究STM32的USB HID双向通信,并使用LabVIEW来开发USB HID驱动和上位机软件,已经成功,所以讲一下基本过程。
wyb4993|  楼主 | 2011-6-26 09:09 | 显示全部楼层
本帖最后由 wyb4993 于 2011-6-27 08:22 编辑

首先是USB HID驱动程序的开发。

默认来说,USB HID是免驱动的,windows系统已经有了USB HID驱动了,一般是调用usbhid.dll来通信。但这里我们不使用LabVIEW调用usbhid.dll来通信,而且是采用VISA来进行USB HID双向通信,所以我们要先用VISA开发USB HID驱动程序,就是inf文件。

我们要先安装VISA驱动程序,我安装的是NI-VISA4.6.2,注意是完整版的安装:

visa.PNG

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

打开driver wizard之后,选择USB:
USB.PNG

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

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

使用特权

评论回复
wyb4993|  楼主 | 2011-6-26 09:10 | 显示全部楼层
本帖最后由 wyb4993 于 2011-6-27 08:26 编辑

我们选择第一项,安装生成的inf驱动程序:
install.png

最后,我们点击“finish”之后,STM32 USB HID驱动程序就创建完成了,并已经安装到电脑中了。

生成的inf文件有电脑的以下目录,同时有XP和VISTA系统的驱动,如下:
USB HID INF.PNG

使用特权

评论回复
wyb4993|  楼主 | 2011-6-26 09:13 | 显示全部楼层
我们把STM32 USB HID下位机程序烧写到STM32中之后,插上USB线,电脑会提示新硬件,但XP系统默认安装的是系统自带的USB HID驱动,不是我们刚才生成的inf驱动程序,如下:
usb hid.PNG

这时候我们开始更新驱动程序:
usb hid 2.PNG

选择“从列表或指定位置安装(高级)”:
usb hid 3.PNG

下一步,不要搜索,如下:
usb hid 4.PNG

使用特权

评论回复
wyb4993|  楼主 | 2011-6-26 09:14 | 显示全部楼层
下一步,选择“STM32 USB HID”:
usb hid 5.PNG

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

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

我们做的STM32硬件能够被LabVIEW的MAX识别出来,就成功了一大半了。

使用特权

评论回复
wyb4993|  楼主 | 2011-6-26 09:15 | 显示全部楼层
本帖最后由 wyb4993 于 2011-6-27 08:03 编辑

接下来就是LabVIEW上位机软件的编写了。

LabVIEW给STM32发送数据,可以使用“VISA写”控件。

但LabVIEW接收STM32发送过来的数据,不能用“VISA读”控件了,需要使用USB中断控件来读,同时要启用USB中断事件。

最后,LabVIEW运行界面如下:
LabVIEW USB HID界面.PNG



总结:采用基于NI-VISA驱动的USB接口应用系统的设计非常容易,开发难度低,对开发者的要求不高;开发出的系统稳定可靠,即使对Windows编程不熟悉的人也可以开发出USB应用系统,它提供了另一种开发USB驱动应用程序的捷径。

使用特权

评论回复
wyb4993|  楼主 | 2011-6-26 09:16 | 显示全部楼层
另外我发现Bus Hound这个工具挺好的,可以查看USB通信的细节:
Bus Hound 1.PNG
Bus Hound 2.PNG

使用特权

评论回复
swx2010| | 2011-6-26 09:30 | 显示全部楼层
本帖最后由 swx2010 于 2011-6-26 09:33 编辑

没讲完啊,刚说了制作驱动,labview软件呢
这里是HID,mass storage行不

话说早了,楼主还在更新中,顶帖,楼主好人

使用特权

评论回复
chy117| | 2011-6-26 11:02 | 显示全部楼层
mark

使用特权

评论回复
qrshi| | 2011-6-26 13:33 | 显示全部楼层
mark,谢谢。

使用特权

评论回复
nongfuxu| | 2011-6-26 15:16 | 显示全部楼层
学习了.

使用特权

评论回复
zhiyonghe| | 2011-6-26 15:28 | 显示全部楼层
期待继续透彻……

使用特权

评论回复
ahgao| | 2011-6-26 16:33 | 显示全部楼层
HID不需要用第三方driver,插上就能用。直接用windows的HID API就可以了。

使用特权

评论回复
surken| | 2011-6-26 17:00 | 显示全部楼层
:)

使用特权

评论回复
luck851| | 2011-6-26 18:57 | 显示全部楼层
mark

使用特权

评论回复
dfsa| | 2011-6-26 19:01 | 显示全部楼层
很好,讲解的非常详细

使用特权

评论回复
曾经的狗狗| | 2011-6-26 21:18 | 显示全部楼层
很棒,我大力支持

使用特权

评论回复
曾经的狗狗| | 2011-6-26 21:18 | 显示全部楼层
我支持,不错

使用特权

评论回复
boby136| | 2011-6-26 21:49 | 显示全部楼层
还没学过ARM,顶起

使用特权

评论回复
huanben| | 2011-6-26 22:00 | 显示全部楼层
最近正了解到VISA 讲解的很详细!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:传感器、自动化测试系统、LabVIEW软件开发,www.blkeji.com

12

主题

67

帖子

5

粉丝