原创 USB传输的基本单元--包

2006-12-25 18:42 6381 6 7 分类: 通信

USB传输的基本单元---包


    包(Packet)是USB系统中信息传输的基本单元,所有的数据都是经过打包后在总线上传输的。USB系统采用反向不归零(NRZI)编码方式,采用位填充方式(Bit-Stuff)避免同步漂移。


1 包的组成


      USB包由5部分组成,即同步字段(Synchronization Sequence,简称SYNC)、包标识符(PID,Packet Identification)字段、数据字段、CRC校验字段和包结尾(End Of Packet,EOP)。任何类型的USB包都必须以同步字段作为起始,其编码为00000001,字段最后两位是同步字段结束的记号,标志着包标识符的开始;在USB协议中,根据包标识PID的不同,包类型也不同,是USB包的必须组成部分。PID包的长度为8位,其中低四位为包标识类型编码,高4位是对类型字段的每一位求反码产生的自校验码。数据字段用来携带主机与设备之间要传递的信息,其内容和长度根据包标识、传输类型的不同而各不相同,可以包含设备地址、端点号、帧序列号以及数据等内容。USB主机通过唯一的设备地址与总线上的USB设备进行数据传输,地址由bit0~bit6共7位组成,最多可以连接127个设备。USB设备的每个功能部件最多可以支持16个端点号,其中端点0必须被用作控制传输端点。当PID为SOF时,其数据字段必须为11位的帧序列号,帧序列号由USB主机产生,自动加一,最大数值为0x7FF。当PID为DATA0或者DATA1时,可发送0~1023之间任意长度数据。CRC校验字段对数据采用CRC16校验,对USB令牌包采用CRC5校验。


2 包的类型


    这里详细介绍四种类型的包:令牌包、数据包、握手包和专用包。


    令牌包:在USB系统中,所有的事务处理都起始于令牌包,它是由USB主机惟一的发送到总线上的。在数据传输的过程中,由USB主机发出令牌包,指明本次事务处理过程的含义,包括数据的传输方向、数据传输的设备地址和端点号。根据PID的不同,令牌包又分为起始令牌包(SOF)、输入令牌包(IN)、输出令牌包(OUT)和用于控制传输的设置令牌包(Setup)。对于SOF包,数据字段为11位序列号,对于IN/OUT/SETUP令牌包,数据字段由7位设备地址和4位端点号组成。


    数据包:这种包有两种类型,即DATA0和DATA1,其中DATA0标示奇数包,DATA1标示偶数包,这是为了避免因出错而带来的数据重传问题。


    握手包:握手包主要用来报告事务处理过程中接收方的状态,它没有数据字段和CRC字段,只有同步字段和标示符字段来表示传输状态。握手包分为ACK、NAK和STALL。其中ACK表示数据的接收方正确地接收到了数据包,对于输入事务处理,ACK由USB设备返回,而对于输出或者控制传输的设置阶段等事务处理过程,ACK由USB设备返回。NAK表示USB设备不能从USB主机接收数据,主要用于流量控制。这和网络中的NAK是不同的。这里的NAK不是表示出错。NAK智能由下游设备传向上游主机,主机只接收NAK。STALL表示由于USB设备内部问题不能发送或者接收数据,或者不支持某个控制命令。


    前导包:是为了使系统区分全速传输和低速传输而产生的,它的目的是为了提醒USB集线器系统要传输的下一个包是一个低速包。USB1.1支持两种传输速率:12Mb/s和1.5Mb/s。

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户132870 2010-2-27 21:31

感谢

computer00 2007-7-22 21:15

来加入我的USB专区吧:

http://group.ednchina.com/93/

 

讨论和学习USB的空间。现在USB技术已经很流行了,就像以前的串口一样。以前的电子工程师不会搞串口通信就落伍了,而现在的电子工程师如果不会搞USB通信,那就落伍了。电子工程师门,还等什么,赶紧加入小组来学习USB吧……

用户202135 2007-5-8 21:31

非常感谢

 

用户70812 2007-2-12 16:17

谢谢你的到来,希望对你有所帮助。不过这些我没有验证过,你要好好看看。

用户1176377 2007-2-10 00:07

哥,你太讲究了,资料很有用,谢谢了!
相关推荐阅读
我要评论
1
6
关闭 站长推荐上一条 /4 下一条