搜索
bottom↓
回复: 250

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

  [复制链接]

出0入0汤圆

发表于 2011-6-25 21:17:03 | 显示全部楼层 |阅读模式
一直以来,USB驱动和通信开发是比较复杂的事情,一般使用C++开发,需要熟悉windows系统下的驱动开发。

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

最近以来,我一直在研究STM32的USB HID双向通信,并使用LabVIEW来开发USB HID驱动和上位机软件,已经成功,所以讲一下基本过程。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2011-6-25 21:26:08 | 显示全部楼层
首先是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)

出0入0汤圆

 楼主| 发表于 2011-6-25 21:33:21 | 显示全部楼层
打开driver wizard之后,选择USB:

(原文件名:USB.PNG)

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


(原文件名:VID PID.PNG)

出0入0汤圆

 楼主| 发表于 2011-6-25 21:39:18 | 显示全部楼层
下一步是填写USB HID驱动名称,以及生成的inf文件的路径。驱动向导会同时生成XP和VISTA系统下的inf文件:


(原文件名:STM32 USB HID.PNG)

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


(原文件名:install.PNG)

我们选择第一项,安装生成的inf驱动程序。

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

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


(原文件名:USB HID INF.PNG)

出0入0汤圆

发表于 2011-6-25 21:39:25 | 显示全部楼层
NI-VISA4.6.2  这个软件上传一下、、、、

出0入0汤圆

发表于 2011-6-25 21:40:34 | 显示全部楼层
回复【4楼】_yuming
ni-visa4.6.2  这个软件上传一下、、、、
-----------------------------------------------------------------------

出0入0汤圆

 楼主| 发表于 2011-6-25 21:43:25 | 显示全部楼层
回复【4楼】_yuming  
ni-visa4.6.2  这个软件上传一下、、、、
-----------------------------------------------------------------------

ni-visa4.6.2 full有400多MB啊,上传可能很慢,先不传了,NI网站可以下载啊

出0入137汤圆

发表于 2011-6-25 21:59:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-25 22:02:35 | 显示全部楼层
回复【6楼】wyb4993
回复【4楼】_yuming   
ni-visa4.6.2  这个软件上传一下、、、、
-----------------------------------------------------------------------
ni-visa4.6.2 full有400多mb啊,上传可能很慢,先不传了,ni网站可以下载啊
-----------------------------------------------------------------------
给个地址

出0入0汤圆

 楼主| 发表于 2011-6-25 22:07:21 | 显示全部楼层
我们把STM32 USB HID下位机程序烧写到STM32中之后,插上USB线,电脑会提示新硬件,但XP系统默认安装的是系统自带的USB HID驱动,不是我们刚才生成的inf驱动程序,如下:


(原文件名:usb hid.PNG)

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


(原文件名:usb hid 2.PNG)

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


(原文件名:usb hid 3.PNG)

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


(原文件名:usb hid 4.PNG)

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


(原文件名:usb hid 5.PNG)

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


(原文件名:usb hid 6.PNG)


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


(原文件名:max.PNG)


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

出0入0汤圆

 楼主| 发表于 2011-6-25 22:16:22 | 显示全部楼层
接下来就是LabVIEW上位机软件的编写了。

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

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

最后,LabVIEW运行界面如下:


(原文件名:LabVIEW USB HID界面.PNG)


太晚了,我下线休息了,祝各位周末愉快!

出0入0汤圆

发表于 2011-6-25 22:40:07 | 显示全部楼层
就是用HID接口吧!

出0入0汤圆

发表于 2011-6-25 22:43:10 | 显示全部楼层
mark~

出0入0汤圆

发表于 2011-6-25 22:47:41 | 显示全部楼层
mark~
另外可以告知一下,实现的通讯速度是多少么?

出0入0汤圆

发表于 2011-6-25 23:02:12 | 显示全部楼层
USB 1ms一个中断. HID最大64字节一包. 64*1000=64KByte/S.

出0入0汤圆

发表于 2011-6-25 23:25:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-25 23:31:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-25 23:32:34 | 显示全部楼层
lz手册里面好像写的是runtime版本的呀

出0入0汤圆

发表于 2011-6-25 23:43:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-26 00:16:25 | 显示全部楼层
HID 即插即用,你这个还是要装NI的驱动,如果有人贡献一个用系统自带的驱动例子就好了 :)
不过还是要感谢楼主分享。

出0入0汤圆

发表于 2011-6-26 00:59:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-26 01:32:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-26 02:09:23 | 显示全部楼层
谢楼主分享!

出0入0汤圆

 楼主| 发表于 2011-6-26 07:48:19 | 显示全部楼层
回复【17楼】tyqhaha  
lz手册里面好像写的是runtime版本的呀
-----------------------------------------------------------------------

1、一般的LabVIEW串口驱动,只安装VISA run time引擎就可以了,也方便LabVIEW程序的打包。

2、如果需要使用VISA的其它高级功能,如MAX等,请安装VISA完整程序。

出0入4汤圆

发表于 2011-6-26 07:54:10 | 显示全部楼层
记号

出0入0汤圆

发表于 2011-6-26 08:16:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-26 08:22:27 | 显示全部楼层
MARK 学习

出0入0汤圆

 楼主| 发表于 2011-6-26 08:22:35 | 显示全部楼层
回复【19楼】visheng  
hid 即插即用,你这个还是要装ni的驱动,如果有人贡献一个用系统自带的驱动例子就好了 :)
不过还是要感谢楼主分享。
-----------------------------------------------------------------------

安装VISA驱动程序,带来的是开发效率的极大提高。

如果熟悉C++开发USB驱动,当然最好了,但一般的工程师可能感到困难,或者开发周期长。

鱼与熊掌不可兼得,大家各有取舍吧。

出0入0汤圆

 楼主| 发表于 2011-6-26 08:25:46 | 显示全部楼层
另外我发现Bus Hound这个工具挺好的,可以查看USB通信的细节:


(原文件名:Bus Hound 1.PNG)


(原文件名:Bus Hound 2.PNG)

点击此处下载 ourdev_652425TCQZ4U.rar(文件大小:883K) (原文件名:Bus Hound 6.0.1.rar)

出0入0汤圆

发表于 2011-6-26 08:58:55 | 显示全部楼层
Labview对付通信接口,可谓是简单至极,功能强大至极。

当然,这是在已经有接口控件的前提下。

出0入0汤圆

发表于 2011-6-26 09:21:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-26 09:30:38 | 显示全部楼层
最大只有64kBps吗?  不能再提速了吗?

这样看起来有点慢。

出0入0汤圆

发表于 2011-6-26 09:32:51 | 显示全部楼层
学习了。谢谢楼主。

出0入0汤圆

发表于 2011-6-26 09:34:48 | 显示全部楼层
mark,LEBview&USB

出0入0汤圆

 楼主| 发表于 2011-6-26 09:45:24 | 显示全部楼层
回复【31楼】eyecan82  
最大只有64kbps吗?  不能再提速了吗?
这样看起来有点慢。
-----------------------------------------------------------------------

USB HID最大只有64kB/s,不能再高了。

如果需要更高的USB速度,请采用STM32 USB虚拟串口_技术,可以达到几Mbps的速度。在我们的用户手册中有描述:
点击此处下载 ourdev_652424V1I6DA.rar(文件大小:9.47M) (原文件名:冰凌科技STM32F103ZET6开发板用户手册V3.2.rar)

采用STM32 USB虚拟串口_技术,我们只需要安装VISA 4.4.1 run time引擎就可以了,只有3.5M多,不需要安装VISA完整驱动程序。

出0入0汤圆

发表于 2011-6-26 09:54:56 | 显示全部楼层
我觉得针对hid还是调用dll文件驱动比较好,否则就失去了hid即插即用的意义。

出0入9汤圆

发表于 2011-6-26 09:58:39 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-6-26 10:24:51 | 显示全部楼层
回复【35楼】rayz82  
我觉得针对hid还是调用dll文件驱动比较好,否则就失去了hid即插即用的意义。

-----------------------------------------------------------------------

LabVIEW可以调用dll文件来做USB HID通信的,这样就不用安装VISA驱动程序了,也避免了硬件不被MAX识别的困难。

但LabVIEW调用dll文件来做USB HID通信,难度比较高,一般公司或个人都不会共享出来的罢,一般都是用在实际产品中的了。


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

出0入0汤圆

发表于 2011-6-26 15:27:17 | 显示全部楼层
lz有建议看LABVIEW的资料吗?需要用到串口相关的,在看  http://labviewnote.weebly.com/page.html  感觉讲的挺泛的

出0入0汤圆

 楼主| 发表于 2011-6-26 19:47:28 | 显示全部楼层
回复【38楼】tyqhaha  
lz有建议看labview的资料吗?需要用到串口相关的,在看  http://labviewnote.weebly.com/page.html  感觉讲的挺泛的
-----------------------------------------------------------------------

1、多看书。推荐“LabVIEW 8.20程序设计从入门到精通”、“我和LabVIEW”
2、多看LabVIEW程序,多改多运行,慢慢就熟悉了;图形化编程不难的
3、有硬件、有项目更好

串口相关的资料也可以参考我们的用户手册。

出0入0汤圆

 楼主| 发表于 2011-6-26 20:02:42 | 显示全部楼层
回复【5楼】bigZ  
回复【4楼】_yuming
ni-visa4.6.2  这个软件上传一下、、、、
-----------------------------------------------------------------------

NI-VISA 4.6.2可以到NI网站这里下载:
http://joule.ni.com/nidu/cds/view/p/id/1605/lang/en

NI网站需要注_册才能下载,其实真实的地址是:
http://ftp.ni.com/support/softlib/visa/NI-VISA/4.6.2/win/visa462full.exe

其实VISA从3.3版本起,就支持USB中断读取数据了,所以VISA 3.3版本或以后的版本都可以用了,不一定是4.6.2.

出0入0汤圆

发表于 2011-6-26 20:59:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-26 21:02:10 | 显示全部楼层
看来USB ...

出0入0汤圆

发表于 2011-6-28 10:21:10 | 显示全部楼层
没有看到STM32的程序啊。

出0入0汤圆

发表于 2011-6-29 15:27:00 | 显示全部楼层
回复【40楼】wyb4993
回复【5楼】bigz   
回复【4楼】_yuming  
ni-visa4.6.2  这个软件上传一下、、、、
-----------------------------------------------------------------------
ni-visa 4.6.2可以到ni网站这里下载:
http://joule.ni.com/nidu/cds/view/p/id/1605/lang/en
ni网站需要注_册才能下载,其实真实的地址是:
http://ftp.ni.com/support/softlib/visa/ni-visa/4.6.2/win/visa462full.exe
其实visa从3.3版本起,就支持usb中断读取数据了,所以visa 3.3版本或以后的版本都可以用了,不一定是4.6.2.
-----------------------------------------------------------------------

楼主,你好!

你给的下载地址的软件使用时间或功能有没有限制呢?

出0入0汤圆

发表于 2011-6-29 15:58:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-29 16:13:29 | 显示全部楼层
一定要MARK的!

出0入0汤圆

发表于 2011-6-29 16:20:57 | 显示全部楼层
实用

出0入0汤圆

发表于 2011-6-29 16:23:30 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-6-29 21:50:00 | 显示全部楼层
回复【44楼】hetao7241  
-----------------------------------------------------------------------

VISA没有时间和功能限制。

出0入0汤圆

发表于 2011-6-29 22:37:07 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-29 23:22:19 | 显示全部楼层
不错

出0入0汤圆

发表于 2011-6-29 23:42:58 | 显示全部楼层
mark 学习

出0入0汤圆

 楼主| 发表于 2011-6-30 08:14:00 | 显示全部楼层
回复【43楼】ping2006  
没有看到stm32的程序啊。

-----------------------------------------------------------------------

STM32 USB HID程序网上多的是,ST也提供有。

出0入0汤圆

发表于 2011-6-30 09:03:43 | 显示全部楼层
楼主,请教一下你,labview这个软件哪里可以下载到破_解的呢?

另外你在40楼给的地址应该是驱动的哈,

我要通过串口获取的数据存入数据库需要哪些相关的软件呢?

谢谢!

出0入0汤圆

发表于 2011-6-30 11:02:05 | 显示全部楼层
mark~~

出0入0汤圆

发表于 2011-6-30 11:22:10 | 显示全部楼层
好资料。

出0入0汤圆

 楼主| 发表于 2011-6-30 11:27:39 | 显示全部楼层
回复【54楼】hetao7241  
楼主,请教一下你,labview这个软件哪里可以下载到破_解的呢?
另外你在40楼给的地址应该是驱动的哈,
我要通过串口获取的数据存入数据库需要哪些相关的软件呢?
谢谢!
-----------------------------------------------------------------------

LabVIEW软件 google一下都有得下载,不用我说了吧。关于破_解,现在万能注_册机都有了,可以注_册LabVIEW各个版本。。。

LabVIEW中访问数据库的几种不同方法:
http://blog.xj163.cn/blog.php?do-showone-tid-9191.html

其实google一下都可以找到的。

出0入0汤圆

发表于 2011-6-30 12:48:34 | 显示全部楼层
有空看看LabVIEW

出0入131汤圆

发表于 2011-6-30 13:10:39 | 显示全部楼层
强帖留名 以后备用

出0入0汤圆

发表于 2011-6-30 13:15:08 | 显示全部楼层
这个必须顶了

出0入0汤圆

发表于 2011-6-30 13:29:45 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-6-30 13:54:10 | 显示全部楼层
这个必须要顶的

出0入0汤圆

发表于 2011-6-30 15:49:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-1 08:27:58 | 显示全部楼层
马克思

出0入0汤圆

发表于 2011-7-1 09:09:46 | 显示全部楼层
我用LPC1766自己做的开发板,USB HID可以在LABVIEW下识别了,但是上位机软件就不知道怎么搞了。从哪里开始,有没人能给给教程,我们大家讨论下,吧这个东东玩起来!

出0入0汤圆

发表于 2011-7-1 10:18:33 | 显示全部楼层
请问楼主,用labview开发STM32,用到NI的哪些软件,请罗列一下,哪里能下载到?谢谢了

出0入0汤圆

发表于 2011-7-1 11:03:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-1 11:44:17 | 显示全部楼层
回复【楼主位】wyb4993  
-----------------------------------------------------------------------
不错! 精通usb开发的请联系我们,有项目外包 info@kitarm.com

出0入0汤圆

发表于 2011-7-1 15:00:18 | 显示全部楼层
好东西,做个记号。

出0入0汤圆

发表于 2011-7-1 22:08:53 | 显示全部楼层
好东西啊 留个记号

出0入0汤圆

发表于 2011-7-1 22:37:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-2 14:07:02 | 显示全部楼层
请教下楼主使用labwindows可以做吗?

出0入0汤圆

发表于 2011-7-2 14:32:45 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-7-3 00:58:43 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-7-3 09:08:54 | 显示全部楼层
回复【73楼】lxy1997  
请教下楼主使用labwindows可以做吗?

-----------------------------------------------------------------------

labwindows是C文本编程的,没试过,不好意思

出0入0汤圆

发表于 2011-7-4 09:12:24 | 显示全部楼层
希望楼主可以共享一下labview上位机的读写示例。

出0入0汤圆

发表于 2011-7-4 09:44:44 | 显示全部楼层
labview对于嵌入式确实是界面亲切,上手好用。

出0入0汤圆

发表于 2011-7-4 13:43:52 | 显示全部楼层
mark!

出0入13汤圆

发表于 2011-7-4 14:00:48 | 显示全部楼层
有意思,LABVIEW挺强大也挺实用的

出0入0汤圆

发表于 2011-7-4 14:37:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-5 10:01:04 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-7-6 15:43:42 | 显示全部楼层
最近也在搞USB通信,USB芯片用的68013A,目前在VISA下和调用DLL下都已经顺利通信;以后可以和楼主多交流交流。

出0入0汤圆

 楼主| 发表于 2011-7-7 17:04:11 | 显示全部楼层
回复【83楼】qfang1108  
最近也在搞usb通信,usb芯片用的68013a,目前在visa下和调用dll下都已经顺利通信;以后可以和楼主多交流交流。
-----------------------------------------------------------------------

你太牛了!
我最近在研究LabVIEW如何调用hid.dll来实现USB HID通信,但能力有限,做不出来。。。
还是要多向您交流和学习啊

出0入0汤圆

发表于 2011-7-7 22:03:53 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-7-14 11:47:58 | 显示全部楼层
通过LabVIEW调用DLL文件,也实现USB HID双向通信了。可以参考:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4877832&bbs_id=9999

为了方便阅读,我把它整理成PDF文档了:
点击此处下载 ourdev_657841J964RA.pdf(文件大小:225K) (原文件名:再谈USB开发:LabVIEW调用DLL文件实现USB HID双向通信.pdf)

出0入0汤圆

发表于 2011-7-14 12:05:38 | 显示全部楼层
MARK~

出0入0汤圆

发表于 2011-7-14 12:34:38 | 显示全部楼层
记号!

出0入0汤圆

发表于 2011-7-14 13:15:15 | 显示全部楼层
认真学习!,能共享一下LabView的程序吗?

出0入0汤圆

 楼主| 发表于 2011-7-14 16:44:04 | 显示全部楼层
开发千般辛苦,而且是公司代码,不好意思。
其实上面我们已经提示很多了,用LabVIEW的几个控件就可以把USB HID双向通信搞定了。

出0入0汤圆

发表于 2011-7-14 16:55:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-30 15:37:32 | 显示全部楼层
收藏,谢谢!

出0入0汤圆

发表于 2011-8-30 16:02:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-2 10:29:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-2 15:50:52 | 显示全部楼层
回复【楼主位】wyb4993
-----------------------------------------------------------------------

mark 以后备用

出0入0汤圆

发表于 2011-9-6 16:16:00 | 显示全部楼层
初学HID,什么都还不会啊,向楼主学习了

出0入0汤圆

发表于 2011-9-6 22:07:28 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-9-6 22:24:49 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2011-9-6 23:37:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-6 23:38:26 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 20:40

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表