原创 图解USB协议之一 枚举过程

2010-1-8 10:19 6143 16 22 分类: MCU/ 嵌入式

  https://static.assets-stash.eet-china.com/album/old-resources/2010/1/8/00fcd4fc-a1bb-4c75-8f5b-05e8366a52d7.rar


  前不久花了2300大银败了个HD-USB12协议分析仪(肉痛…)。不过还蛮好用,以后做USB固件开发就方便多了。
    看到21ic坛子里arthur0561大虾发了一系列USB协议入门总结的文章,向他(OR她?)表示一下敬意。我也准备用手头这台协议分析仪以实例和图解的方式重复叙述一下,希望对初学USB的童鞋有些帮助。
    废话少说,首先图解一下USB枚举过程。


---------------------------------------------------------------------------------------------


一、总线复位及向默认地址0发送GET_DESCRIPTOR指令包,请求设备描述。如(图一)所示:


点击看大图
 
                                                                  (图一)



1)Index[4 - 5]:表示USB插入总线复位
2)Index[7 - 8]:表示主机向默认地址发送GET_DESCRIPTOR指令包,详细信息也抓出来了,如(图二)所示:


6b7534ba-21e7-45b5-8b42-f542cba60253.GIF
 
                  (图二)



3)Index[15 - 17]:表示设备向主机发送设备描述数据Index[16]
4)Index[18 - 19]:表示主机完成GET_DESCRIPTOR指令后,给设备发送一个空应答;


---------------------------------------------------------------------------------------------


二、再次复位总线及向设备发送SET_ADDRESS指令包,设置设备地址。如(图三)所示:


点击看大图
 
                                                             (图三)



1)Index[22 - 23]:表示再次总线复位,该复位自动完成,不是手工插拔USB完成
2)Index[25 - 27]:表示主机向默认地址发送SET_ADDRESS指令包,详细信息如(图四)所示:


f87350b3-d83d-440f-8c73-402f3b082bc9.GIF


                         (图四)



3)Index[29 - 31]:表示设备完成SET_ADDRESS指令后,给主机发送一个空应答;


---------------------------------------------------------------------------------------------


三、向第二步设定的设备地址发送GET_DESCRIPTOR指令包,请求设备描述。如(图五)所示:


点击看大图
 
                                                                  (图五)



1)Index[33 - 35]:表示主机向地址01发送GET_DESCRIPTOR指令包,详细信息见(图六)


79b4a7c4-ece1-4c44-9bf1-d304a9abd362.GIF
 
                   (图六)


2)Index[41 - 43]:表示设备向主机发送设备描述数据Index[42]
3)Index[45 - 47]:表示设备向主机发送设备描述数据Index[46]
4)Index[48 - 50]:表示主机完成GET_DESCRIPTOR指令后,给设备发送一个空应答;


---------------------------------------------------------------------------------------------


四、向第二步设定的设备地址发送GET_DESCRIPTOR指令包,请求配置描述。如(图七)所示:


点击看大图
 
                                                            (图七)


1)Index[52 - 54]:表示主机向地址01发送GET_DESCRIPTOR指令包,详细信息见(图八)


cf94a24f-68eb-4434-9be9-a66f10dc2daf.GIF
 
                (图八)



2)Index[57 - 59]:表示设备向主机发送配置描述数据Index[58]
3)Index[60 - 62]:表示主机完成GET_DESCRIPTOR指令后,给设备发送一个空应答;


---------------------------------------------------------------------------------------------



五、重复向第二步设定的设备地址发送GET_DESCRIPTOR指令包,取完所有设备描述及配置描述;


---------------------------------------------------------------------------------------------



六、向第二步设定的设备地址发送SET_CONFIGURATION指令包,设置配置描述。如(图九)所示:


6f4edee9-e76a-444d-bf07-a8f70636a39a.GIF
 
                                                    (图九)


1)Index[139 - 141]:表示主机向地址01发送SET_CONFIGURATION指令包,详细信息见(图十)


8378ed3f-f76e-431d-8633-e95413624042.GIF
 
                           (图十)
2)Index[143 - 145]:表示设备完成SET_CONFIGURATION指令后,给主机发送一个空应答
至此,枚举过程结束,设备可通过驱动与主机通信了。


    以上的USB枚举过程是根据现有特定设备捕获得到,并不完整涉及到USB协议的所有指令包,如GET_STATUS指令包、CLEAR_FEATURE指令包、SET_FEATURE指令包、SET_DESCRIPTOR指令包、GET_CONFIGURATION指令包、GET_INTERFACE指令包、SET_INTERFACE指令包、SYNCH_FRAME指令包等。

PARTNER CONTENT

文章评论6条评论)

登录后参与讨论

用户1409017 2010-11-9 08:31

不错

nthq2004 2010-4-14 21:40

明天看,今天先留个名。

用户1409704 2010-3-1 10:27

不错。学习一下。

用户1130179 2010-2-1 14:13

支持一个先,谢谢了!

用户1136818 2010-1-10 22:04

我的名言是:“如果没看懂,好办,再看一遍!”嘿嘿,兄弟,努力吧。

用户1522964 2010-1-8 10:26

脚印,最近也在学USB, 看了下USB协议,晕的很,很多地方不明白
相关推荐阅读
用户1136818 2010-08-20 12:12
图解高速USB握手过程
我们知道,USB全速外设(FS)和低速外设(LS)是通过在D+或D-数据线上上拉1.5K的电阻予以区别,D+上拉为全速外设,D-上拉为低速外设。高速外设的识别则比较复杂,需要通过主机与高速外设握手才能...
用户1136818 2010-03-18 11:31
图解USB协议之四 USB枚举失败常见原因分析
    本篇基于固件代码的开发及移植过程中可能引起的USB枚举失败的原因进行分析。 数据采集设备:“HD-USB12”全速/低速USB2.0协议分析仪 一、如图1所示的USB枚举失败   1)Inde...
用户1136818 2010-03-01 15:30
图解USB协议之四 USB枚举失败常见原因分析
    本篇基于固件代码的开发及移植过程中可能引起的USB枚举失败的原因进行分析。数据采集设备:“HD-USB12”全速/低速USB2.0协议分析仪一、如图1所示的USB枚举失败  1)Index[6...
用户1136818 2010-02-21 12:03
图解USB协议之三 USB标准描述符
    最近忙于公司的项目和本人的驾驶证考试,拖延了这个系列第三篇的完成,先向各位支持我的DX表示一下歉意。不过好在驾驶证的蝴蝶桩考试顺利通过,自己先庆贺一下嘿嘿。    这段时间做一个手持机的项目,...
用户1136818 2010-01-18 22:10
锂电池充电管理及BQ24070的应用
本人这段时间做一个手持机的项目,要用到单节锂电池供电。以前没有接触过锂电池充电管理方面的技术,花了几天时间研究了一番,现在汇报一下研究成果。由于第一次做这样的项目,也许存在错误,欢迎朋友们拍砖。   ...
用户1136818 2010-01-18 11:51
图解USB协议之二 数据包分析
       感谢朋友们对我发的上一个帖子《图解USB协议之一 枚举过程》的支持,虽然手头的项目比较忙,周末还是抽时间写了这个专题的第二篇,不能让大家失望啊,哈!    本篇分析数据包,仍然使用“HD...
EE直播间
更多
我要评论
6
16
关闭 站长推荐上一条 /3 下一条