原创 USB协议层 --1

2008-7-25 12:52 5154 8 10 分类: 通信
 注: 原发表于21ic的读书笔记中,后来发现二姨经常关门,所以现在打算把那边原来的慢慢搬过来,并整理一下,另EDN有一个博客备份,应该可以把以前写的东西都存在电脑上。








如题,边实践边学习,这样才不会空洞.
解析协议,我喜欢从数据流来查,一点一点的来,
位序:  USB的位序为LSB,低位在前;
同步字段,就当是一个包的起始标志吧,不用太在意;
物理数据流的 "NRZI编码和位填充NRZI编码和位填充"也先不考虑了,这些多在IC内部实现了,
(除非你老板让你自己写一个软USB,否则不用看了)
同步字段后就是包标识符PID,  (LSB)PID0|PID1|PID2|PID3|PID0|PID1|PID2|PID3(MSB)

                             由上可知,PID自身有补码校验,




PID表明了包的类型,按我自己的习惯来记吧;
8,9,A,B都属于Token包;
          ----8: OUT,  9: IN,   A: SOF,   B: SETUP




C,D,E,F都属于数据包;
         ----C: Data packet PID even,  D: Data packet PID odd
         ----E,F,isochronous transaction  暂不考虑



4,5,6,7都属于握手包;
        ----4: ACK    5: NAK    7: STALL    6: NYET



0,1,2,3属于特殊包;--------其中0为系统自己保留使用的;
       -----2: PING   1: SPLIT  3: ERR/PRE


地址段,了解一下就知道了,每个设备在host那有唯一的地址,共可128个设备,(当然为7位长),如下:(LSB)PID0|PID1|PID2|PID3|PID4|PID5|PID6|(MSB)


所有的功能部件都必须在端口0提供一个控制管道(缺省控制管道)。对于低速(Low Speed)设备,每个功能部件最多提供3个管道:在端口0的控制管道加上2个附加管道(或是2个控制管道,或是1个控制管道和1个中断端口,或是2个中断端口)。全速(Full Speed)功能部件可以支持最多可达16个的任何类型的端口,定义如下:


(LSB)ENDP0|ENDP1|ENDP2|ENDP3|(MSB)


数据字段可以在01,023字节之间变动,但必须是整数个字节。图8-4为多字节显示格式。每个字节的范围内的数据位移出时都是最低位(LSb)在前.





包格式 主要有:标记包,数据包和握手包
标记包:        PID |  ADDR   |  ENDP   |  CRC5
数据包:        PID |  DATAx..........  |  CRC16
握手包:        PID


特殊的标记包稍后考虑:SPLIT主要用于HOST与HUB之间通信;



先记到这吧,待续



文章评论2条评论)

登录后参与讨论

walnutcy_696810119 2008-9-10 22:18

当时搬家,就把这个也转过来了。

walnutcy_696810119 2008-9-10 22:17

posted @ Walter 发表于 2008-5-11 9:50:00 阅读全文(1486) | 回复(4) |反映问题 | 引用通告(0) ---------21ic里访问量与这里的差别挺大,且这篇在这连精华都没上,怪怪的。 不同的文章在不同的地方有效吧。
相关推荐阅读
walnutcy_696810119 2012-11-21 08:37
Linux下使用smartCOM调试串口
在Windows下的串口调试一直使用sscom,在Linux下只找到一个cutecom,用了几次,很不喜欢,就着手开发了一款自己的串口调试工具,smartCOM。 smartCOM介绍:http...
walnutcy_696810119 2012-03-29 18:12
【博客大赛】原创--测量基础:什么是测量
写在正文之前: 适逢EDNChina搞活动,而我本人也算在测量业工作,就一起作下笔记吧。若有错误,请大家一起斧正。笔者写本文一方面是梳理知识,另一方面也希望与大家探讨有关测量的知识、应用等,希...
walnutcy_696810119 2011-12-20 18:29
GLONASS 15年来,首次实现24颗星在轨可用
  EDN的博客改版后,不太好用,在SINA重开一个,不过重点改为关注GNSS行业新闻 http://blog.sina.com.cn/s/blog_7420cd1701012en9....
walnutcy_696810119 2011-12-20 17:49
逆向工程第一步:通信协议分析
工程中常有这样的事,想分析下其他知名公司产品中的通信协议,以便生产设计兼容产品。 1) 逆向工程,首先要了解产品,知己知彼,百战不怠;     去年受命想仿一款GARMIN的导航盒,但无法...
walnutcy_696810119 2011-11-14 11:30
通用代码调试方法 (Keil, VCC)
调试代码一般需要定位问题,这里给出一个解决方案, 一般的编译器均支持这些宏指令。   #define DEBUG_WALT_1113     1 extern void log_t...
我要评论
2
8
关闭 站长推荐上一条 /2 下一条