为单片机 USB HS 接口编写 WINUSB MS OS 2.0 例程,,当 wMaxPacketSize 设置为 128 或 256 时,,Windows 报错“无法识别的 USB 设备”。。
使用 usbpv 抓包结果如下,,可以看到系统获取设备描述符成功、设置地址成功、然后从新地址获取设备描述符和配置描述符也成功。。
但之后系统就不再继续后续步骤了,,而是从头重新上述步骤,,重复 4 次上述流程后,,彻底停止枚举。。

将 wMaxPacketSize 修改为 512 后,,可以正确枚举,,抓取结果如下:

我问 deepseek 为什么会这样,,它说 USB HS 下 Bulk 端点的 wMaxPacketSize 必须是 512,,我查了下 USB spec,,发现 spec 上确实是这样规定的:

但是之前编写 USB HS 接口的 U 盘例程时,,wMaxPacketSize 设置成了 128 却是可以正常枚举、正常工作的。。
所以 Windows 对不同类型的设备,,对 wMaxPacketSize 的约束有差异??
离线