EDN首页   博客首页

日志档案

发表于 2008-6-6 0:40:10

42

标签: 万利  STM32板  实现  自定义  USB  HID设备  

万利的STM32板实现的自定义USB HID设备

     大家知道,将一个USB设备定义为用户自定义的HID设备,就

可以让windows操作系统识别为一个HID兼容设备,并不需要用

户自己提供驱动程序,应用程序可以直接通过操作系统提供的

HID驱动来访问设备,这个特性是很方便的。当一个USB HID

设备被识别后,会在设备管理器里的“人体学输入设备”中增

加一个“USB 人体学输入设备”,如果它是一个用户自定义的

HID设备,还会在这里增加一个“HID-compliant device”的设

备。在驱动程序的层次,后者是在前者之上的。当设备返回数

据时,首先到达“USB 人体学输入设备”,并且缓冲起来,可

以缓冲多个数据包。如果这时应用软件从“HID-compliant

device”请求数据,则“HID-compliant device”会从“USB

人体学输入设备”请求数据,如果没有定义用途ID的话,

则还会自动在前面加上一个字节0作为用途ID。发送数据时

这个过程刚好相反。例如在我们这个例子中,应用程序每次读

取数据,将获得65字节的数据,第一字节是用途ID,为0。

后面的才是我们的设备返回的64字节数据。同样,发送数据

时,要发送65字节,第一字节为用途ID,实际发送到USB设备

的数据是64字节。这个过程我们在BUS HOUND上也可以看到,

并且也可以看到“HID-compliant device”是位于“USB 人体学

输入设备”之下的。

     下面这个程序就是圈圈在万利的STM32板上实现的自定义

HID设备。它使用了端点1的输入和输出,作为中断端点,端点

大小为64字节。这个仅是一个示例,它仅是简单的接收数据并

保存在OutBuffer中。当摇动摇杆时,就发送64字节一样的数据

到PC。具体的应用可由用户自己来决定。下载下面这个压缩

包,解压到Manley\EKBoard\EKSTM32F\USBDemo(8M osc)

\USBDemo\USBLib\demos目录下,然后编译,烧写调试即可。

下载本实验源代码包:点击下载

     下面这个压缩包是一个测试程序,可以用来测试HID设备。

填好VID和PID之后,再点击“find my device”,然后点

“once”,就会发送数据出去,同时试图读回数据。

这时摇动开发板上的摇杆,就会返回数据。每按一次,数据增加1。

下载测试程序:点击下载

本测试程序的源代码可从这里下载:http://group.ednchina.com/93/8769.aspx

 

看了之后记得点一下左上角的“顶一下”,支持一下圈圈,

给圈圈投一票,谢谢了!

系统分类: 单片机   |   用户分类: STM32   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(3978)    回复(11)  

投一票您将和博主都有获奖机会!

  • wangaiping

    2008-6-12 14:45:33

    虽然还不明白,顶一个

  • jizzll

    2008-6-15 16:47:20

    顶00

  • sunke9

    2008-6-18 13:12:48

    挺高深的,顶一下!

  • jiajia1989

    2008-7-1 17:11:42

    鼓励鼓励

  • computer00

    2008-7-14 10:58:14

    谢谢大家的支持和帮顶~~~~

  • yyh2002steel2006

    2008-9-16 13:00:35

    圈圈兄,你这个程序我下了怎么没演示出来呀.那个USB口是不是要接万利板的CN3?能不能描述下使用步骤?嘿嘿

  • computer00

    2008-9-16 15:44:06

    要连接那个USB口的。如果你仿真的话,要全速运行。

  • yyh2002steel2006

    2008-9-20 11:53:47

    我下了你的程序,打开测试程序,直接用你那个VID和PID没有填,再点击“find my device”,然后点“once”,能出现Device detecte.但然后就是 readfile timeout,cannot read from device 按摇杆没有反应是怎么回事

  • computer00

    2008-9-20 13:34:11

    你先按下摇杆再读数据试试?

  • bwandmff

    2008-11-4 11:15:30

    圈圈大哥,我想用自定义HID设备,进行与上位机数据通信,看过你的这个例程,但是不太明白在从设备从主机接收数据时,如果一次的数据量超过64B,程序里该如何处理。

  • computer00

    2008-11-4 23:57:54

    当然是分成多个数据包发送了~~~