海迹天涯 发表于 2018-1-25 09:15:25

关于STM32的USBHID类设备

最近开发一款新产品使用的stm32f302,产品的原版本使用的nxp的芯片,USBHID协议为低速设备USB1.1协议,在调试USB的时候发现USB只支持USB2.0的高速设备。原来的设备插上USB线后可以用bushound软件抓取到枚举的报告描述符数据,再stm32的USBhid协议中移植了相同的报告描述符,插上usb后也能识别到这个usb设备,但是bushound软件抓不到任何数据,上位机软件也不能与下位机通信,有大神给点思路吗?

海迹天涯 发表于 2018-1-25 09:18:05

设备管理器看到的信息

斜阳__ 发表于 2018-1-25 09:29:23

打开cubeMX的源,里边有很多例子可以看看路径类似于下面这样:
STM32Cube\Repository\STM32Cube_FW_F4_V1.17.0\Projects\STM324x9I_EVAL\Applications\USB_Device

toofree 发表于 2018-1-25 12:16:05

本帖最后由 toofree 于 2018-1-25 12:23 编辑

描述符在你插上USB口,还没开启捕捉时已经完成了,你抓不到的。或者插上USB口后,开启捕捉,硬件复位一个MCU,然后看有没有数据抓到。再或者用bushound发送软复位命令下来,这个得看你的设备支不支持软复位命令。
USB是低速、全速、高速,是靠D+、D-数据线上的1.5K上下拉电阻来决定的。
不过也得硬件支持才行,F302是全速USB,一般只支持全速,高速和低速都不支持。


或者换软件USBlyzer。



海迹天涯 发表于 2018-1-25 17:05:52

toofree 发表于 2018-1-25 12:16
描述符在你插上USB口,还没开启捕捉时已经完成了,你抓不到的。或者插上USB口后,开启捕捉,硬件复位一个MC ...

感谢如此细心的回复

toofree 发表于 2018-1-25 17:36:12

海迹天涯 发表于 2018-1-25 17:05
感谢如此细心的回复
这只是层窗户纸,帮你捅破。
接下来,USB正常通信得好好整。

海迹天涯 发表于 2018-1-26 09:47:18

0x06,0xa0,0xff,
0x09,0xa2,
0xa1,0x01,
0x09,0xa3,
0xa1,0x03,
0x06,0xa1,0xff,
0x09,0xc1,
0x09,0xc2,
0x09,0xc3,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xda,
0x09,0xc4,
0x15,0x00,
0x25,0xff,
0x35,0x00,
0x45,0xff,
0x75,0x08,
0x95,0x20,
0xb1,0x02,
0xc0,0xc0

海迹天涯 发表于 2018-1-26 09:47:41

toofree 发表于 2018-1-25 17:36
这只是层窗户纸,帮你捅破。
接下来,USB正常通信得好好整。

可以帮我解释一下这个报告描述符吗

toofree 发表于 2018-1-26 10:14:51

本帖最后由 toofree 于 2018-1-26 10:40 编辑

海迹天涯 发表于 2018-1-26 09:47
可以帮我解释一下这个报告描述符吗
可以插上USB,直接用USBlyzer看一下。也可用HID Descriptor tool工具看,但你的文件格式不对,看不了,必须配合USBlyzer中的数据,重新生成hid文件。










nyszx 发表于 2018-1-26 13:51:42

学习了,还没搞过USB应用
页: [1] 2
查看完整版本: 关于STM32的USBHID类设备