[应用相关] USB传输协议问题。

[复制链接]
 楼主| lomeisi_99 发表于 2008-7-29 16:35 | 显示全部楼层 |阅读模式
正在玩STM32103的USB,ST的JOYSTICK例程,例程设备描述符中定义USB传输协议是1.1版本,我改成了2.0,一切都正常,没有问题,可我把协议描述字符改成其它值(比如0X8888)电脑也能检测到设备,这是为什呢?
computer00 发表于 2008-7-29 16:43 | 显示全部楼层

协议描述字符?哪个啊?你把你改过后的描述符贴出来看看

 楼主| lomeisi_99 发表于 2008-7-29 16:46 | 显示全部楼层

末尾有问号的部分是我修改的

* USB Standard Device Descriptor */
const u8 Joystick_DeviceDescriptor[JOYSTICK_SIZ_DEVICE_DESC] =
  {
    0x12,                       /*bLength */
    USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/
    0x88,   ????                     /*bcdUSB USB1.1*/
    0x88,   ????
vigia 发表于 2008-7-29 16:46 | 显示全部楼层

。。。

一般来说只要设备的PID,VID没有改,即使你把描述符都改了,设备插上PC以后,PC仍然按照原先记录在REG里面的描述符识别设备。

所以最好的做法是插上设备以后,打开WINDOWS的Device Manager,找到你的设备,先UNINSTALL他,然后用ACTION菜单里面的Scan For Hardware Change命令重新枚举设备,确保新改的描述符生效。

不过这个版本号我还真没改过,不知道改了会怎么样,你试试啊。
香水城 发表于 2008-7-29 16:50 | 显示全部楼层

有很多东西是由微软的USB驱动所使用的

因为我们不知道微软的USB驱动是如果使用这些信息,也不知道修改了它们之后会造成什么样的结果,所以请尽量不要任意修改。
 楼主| lomeisi_99 发表于 2008-7-29 16:58 | 显示全部楼层

谢谢LS

按照你说的,PC依然可以检测到设备。
 楼主| lomeisi_99 发表于 2008-7-29 16:59 | 显示全部楼层

我只是好奇的改了下,哈哈

那我还能知道传输协议是1.1还是2.0吗?
computer00 发表于 2008-7-29 17:03 | 显示全部楼层

估计是往后兼容的原因吧...支持高版本的?你改成全0试试?

windows驱动未检测这个字段也是有可能的。
香水城 发表于 2008-7-29 17:05 | 显示全部楼层

USB协议版本1.1和2.0在USB全速设备的规范上没有区别

STM32F103xx是USB全速设备,与USB 2.0和USB 1.1同时兼容。

所以回答7楼的问题很简单:你的传输协议既是1.1的也是2.0的。
 楼主| lomeisi_99 发表于 2008-7-29 17:07 | 显示全部楼层

估计是没有检测了

改成全0也是一样,估计是vigia说的那样,哈哈。 
 楼主| lomeisi_99 发表于 2008-7-29 17:08 | 显示全部楼层

谢谢香主

您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

248

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部