原创 图解USB协议之四 USB枚举失败常见原因分析

2010-3-1 15:30 7683 12 12 分类: MCU/ 嵌入式


    本篇
基于固件代码的开发及移植过程中可能引起的USB枚举失败的原因进行分析。




数据采集设备:“HD-USB12全速/低速USB2.0协议分析仪




一、如图1所示的USB枚举失败

  1Index[666 - 668]:表示主机向默认地址发送GET_DESCRIPTOR指令包。

  2Index[670 - 671]:表示设备默认地址端点不可用。

  3)由上我们可以推断出固件代码对GET_DESCRIPTOR指令包无响应。


1
(图1)(本数据由HD-USB12 USB协议分析仪采集)






二、如图2所示的USB枚举失败

  1Index[697 - 699]:表示主机向默认地址发送SET_ADDRESS指令包。

  2Index[701 - 703]:表示设备完成SET_ADDRESS指令后,给主机发送一个空应答。

  3Index[705 - 710]:表示主机向地址DEC=01重复发送SET_DESCRIPTOR指令包,但设备无任何应答,因此该事务包设备并没有接收到。

  4)由上我们可以推断出固件中设置地址的代码执行失败。


2
(图2)(本数据由HD-USB12 USB协议分析仪采集)


三、如图3所示的USB枚举失败(图3为过滤掉IN + NAKSOF包后的数据)

  1Index[694 - 696]:表示主机向默认地址发送SET_ADDRESS指令包。但设备对该指令答,无应答。

  2)由上我们可以推断出固件代码对SET_ADDRESS指令包无响应或响应没发送空应答。


3
(图3)(本数据由HD-USB12 USB协议分析仪采集)


四、设备发送给主机的描述信息不完整,如少发送接口或端点信息等导致枚举失败。这要求分析所有采集到的数据才能发现问题。由于数据量较大,就不用图片说明了。

以上是根据本人开发过程中曾经碰到的问题进行的总结分析,在实际情况中枚举失败的原因很多,不可能一一列出,但只要有一台总线协议分析设备能抓取数据进行分析是很容易找到原因的。

文章评论0条评论)

登录后参与讨论
我要评论
0
12
关闭 站长推荐上一条 /2 下一条