原创 图解USB协议之二 数据包分析

2010-1-18 11:51 4775 15 17 分类: 消费电子

       感谢朋友们对我发的上一个帖子《图解USB协议之一 枚举过程》的支持,虽然手头的项目比较忙,周末还是抽时间写了这个专题的第二篇,不能让大家失望啊,哈!
    本篇分析数据包,仍然使用“HD-USB12”USB协议分析仪采集分析数据。分两部分内容:首先和童鞋们一起简单复习一下USB协议中的相关知识,然后用“HD-USB12”USB协议分析仪采集几个实例进行分析。
   
一、协议知识
1)PID格式,详见图1

1.gif
                                                  (图1)
注:
a、 上图是从低位到高位
b、 高四位是低四位取反
c、 PID自校验
2)PID分类,详见图2
2.gif

                                                  (图2)

3)Token包格式(不包括SOF),详见图3
3.gif

                                  (图3)
 注:
a、 ADDR表示设备地址
b、 ENDP表示端点号
c、 CRC5表示设备地址及端点号的校验和
4)SOF包格式,详见图4
4.gif

                                         (图4)
 注:
a、 FrameNumber表示帧号,1毫秒发送一帧
b、 CRC5表示FrameNumber的校验和
5)Data包格式,详见图5
5.gif

                                    (图5)

       注:
a、 DATA表示要传输的数据,全速USB的最大长度为1023Bytes,高速USB 的最大长度为     1024Bytes
b、 CRC16表示DATA的校验和
6)Handshake包格式,详见图6
6.gif

                 (图6)

二、USB传输包组(事务)实例分析
1)IN包组分类(懒得自己总结,直接从HD-USB12的数据包过滤功能截取),详见图7
7.gif

                 (图7)

2)IN包组分析(通过HD-USB12监控软件仅过滤出IN包组数据),详见图8
8.gif

                                             (图8)
a、Index[691]:表示主机向设备发送IN指令取数据,设备回应没数据;
b、Index[692 - 693]:表示主机向设备地址0(DEV = 00)端点0(EP = 80,  最高位表示传输方向)发送IN指令取数据,设备回应端点停止(STALL);
c、Index[701 - 703]:表示主机向设备地址0(DEV = 00)端点0(EP = 80,  
最高位表示传输方向)发送IN指令取数据,设备收到指令后向主机发送数据
    Index[702],主机正确收到数据后回应ACK
 d、Index[701]的内容,详见图9
9.gif

                                           (图9)
e、Index[702]的内容,详见图10
10.gif

                                              (图10)

f、Index[702]的数据发送时序,详见图11(只截取了部分,时序做的很漂亮,看着也很清晰)

11.gif

                                                 (图11)
注意时序图的Offset[0003]其传输的数据为FF,根据USB采用的传输编码(NRZI)前6位为1后插入1位0,因些第7位的传输要传输2位(01),其时间也占用两位的时间。(啊啊!有时序功能就是清楚,时序还有其它用途以后分解)

3)OUT包组分类,详见图12(直接从HD-USB12的数据包过滤功能截取)
12.gif

                  (图12)

4)OUT包组分析(通过HD-USB12监控软件仅过滤出OUT包组数据),详见图13
13.gif

                                               (图13)
a、Index[16 - 18]:表示主机向设备地址0(DEV = 00)端点0(EP = 00,  最高位表示传输方向)发送Out指令后,发送数据Index[17](主机发出空回应所以Index[17]没有数据),设备收到数据后回应ACK;
b、Index[16]的内容,详见图14
14.gif

                                              (图14)
c、Index[17]的内容,详见图15
15.gif

                                                (图15)

5)SETUP包组分类,详见图16(直接从HD-USB12的数据包过滤功能截取)
16.gif

                       (图16)

6)SETUP包组分析(通过HD-USB12监控软件仅过滤出SETUP包组数据),详见图17
17.gif

                                                  (图17)
a、Index[23 - 25]:表示主机向设备地址0(DEV = 00)端点0(EP = 00, 最高位表示传输方向)发送SETUP指令后,发送数据Index[24],设备收到数据后回应ACK;
b、Index[23]的内容,详见图18
18.gif

                                                    (图18)
 c、Index[24]的内容,详见图19
19.gif

                                                        (图19)

以上数据包分析是根据现有特定设备捕获得到,并不完整涉及到所有事务包组,如IN+DATA+NAK、OUT+DATA+NAK、SETUP+DATA+NAK等等。





PDF文档下载:http://forum.eet-cn.com/downloadAttachment.jspa?messageID=1200668595&attachmentId=29431&pageUserId=8731679306&userID=8731679306

文章评论2条评论)

登录后参与讨论

用户1136818 2010-1-18 22:11

感谢Mike支持!

用户1277994 2010-1-18 20:59

欢迎博主开博。 博主的文章在论坛中反响特别好,正式开博,希望大家继续支持博主。
相关推荐阅读
用户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的应用
本人这段时间做一个手持机的项目,要用到单节锂电池供电。以前没有接触过锂电池充电管理方面的技术,花了几天时间研究了一番,现在汇报一下研究成果。由于第一次做这样的项目,也许存在错误,欢迎朋友们拍砖。   ...
我要评论
2
15
关闭 站长推荐上一条 /2 下一条