打印
[应用相关]

USB传输协议问题。

[复制链接]
3653|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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命令重新枚举设备,确保新改的描述符生效。

不过这个版本号我还真没改过,不知道改了会怎么样,你试试啊。

使用特权

评论回复
5
香水城| | 2008-7-29 16:50 | 只看该作者

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

因为我们不知道微软的USB驱动是如果使用这些信息,也不知道修改了它们之后会造成什么样的结果,所以请尽量不要任意修改。

使用特权

评论回复
6
lomeisi_99|  楼主 | 2008-7-29 16:58 | 只看该作者

谢谢LS

按照你说的,PC依然可以检测到设备。

使用特权

评论回复
7
lomeisi_99|  楼主 | 2008-7-29 16:59 | 只看该作者

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

那我还能知道传输协议是1.1还是2.0吗?

使用特权

评论回复
8
computer00| | 2008-7-29 17:03 | 只看该作者

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

windows驱动未检测这个字段也是有可能的。

使用特权

评论回复
9
香水城| | 2008-7-29 17:05 | 只看该作者

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

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

所以回答7楼的问题很简单:你的传输协议既是1.1的也是2.0的。

使用特权

评论回复
10
lomeisi_99|  楼主 | 2008-7-29 17:07 | 只看该作者

估计是没有检测了

改成全0也是一样,估计是vigia说的那样,哈哈。 

使用特权

评论回复
11
lomeisi_99|  楼主 | 2008-7-29 17:08 | 只看该作者

谢谢香主

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

248

帖子

0

粉丝