关于STM32的USBHID类设备
最近开发一款新产品使用的stm32f302,产品的原版本使用的nxp的芯片,USBHID协议为低速设备USB1.1协议,在调试USB的时候发现USB只支持USB2.0的高速设备。原来的设备插上USB线后可以用bushound软件抓取到枚举的报告描述符数据,再stm32的USBhid协议中移植了相同的报告描述符,插上usb后也能识别到这个usb设备,但是bushound软件抓不到任何数据,上位机软件也不能与下位机通信,有大神给点思路吗?设备管理器看到的信息 打开cubeMX的源,里边有很多例子可以看看路径类似于下面这样:
STM32Cube\Repository\STM32Cube_FW_F4_V1.17.0\Projects\STM324x9I_EVAL\Applications\USB_Device 本帖最后由 toofree 于 2018-1-25 12:23 编辑
描述符在你插上USB口,还没开启捕捉时已经完成了,你抓不到的。或者插上USB口后,开启捕捉,硬件复位一个MCU,然后看有没有数据抓到。再或者用bushound发送软复位命令下来,这个得看你的设备支不支持软复位命令。
USB是低速、全速、高速,是靠D+、D-数据线上的1.5K上下拉电阻来决定的。
不过也得硬件支持才行,F302是全速USB,一般只支持全速,高速和低速都不支持。
或者换软件USBlyzer。
toofree 发表于 2018-1-25 12:16
描述符在你插上USB口,还没开启捕捉时已经完成了,你抓不到的。或者插上USB口后,开启捕捉,硬件复位一个MC ...
感谢如此细心的回复 海迹天涯 发表于 2018-1-25 17:05
感谢如此细心的回复
这只是层窗户纸,帮你捅破。
接下来,USB正常通信得好好整。
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
toofree 发表于 2018-1-25 17:36
这只是层窗户纸,帮你捅破。
接下来,USB正常通信得好好整。
可以帮我解释一下这个报告描述符吗 本帖最后由 toofree 于 2018-1-26 10:40 编辑
海迹天涯 发表于 2018-1-26 09:47
可以帮我解释一下这个报告描述符吗
可以插上USB,直接用USBlyzer看一下。也可用HID Descriptor tool工具看,但你的文件格式不对,看不了,必须配合USBlyzer中的数据,重新生成hid文件。
学习了,还没搞过USB应用
页:
[1]
2