新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > USB封包中的数据域类型

USB封包中的数据域类型

作者:时间:2013-10-17来源:网络收藏
是以令牌封包为主(token based)的总线协议,而且PC主机掌握了这个总线的一切主控权。换而言之,一切的沟通都由PC主机来负责激活与执行。再加上,由于USB不占用任何PC的中断向量、DMA或是任何输人/输出的资源,因此,必须通过严谨的协议才能与外围设各达成通信的目的,进而执行各项传输的命令。当然,在USB的通信协议中,不仅只有令牌封包而已,还包含了数据封包、握手封包以及特殊封包等。因此,就必须先介绍类型中的各种数据域的格式,并加以说明。

  不同的封包类型,含有不同数量与形态的数据域。以下依序介绍各种数据域的规范与结构。而通过不同形态的数据域的组成,即可构成所要的封包类型。

  封包内所包含的信息数据位于1~3 074字节之间。第1个字节总是封包标识符(PID),用来定义其余的信息字节所要表达的意义。而封包的最后一部分,则是封包结束EOP(End-of-Packet)标识符。

  但应注意,USB的串行传输是先送出最低位LSB,然后再依序送出,直到最高位MSB为止,如图1所示。而PID[0:3]与PID[0:3]的意义稍后会再加以解释。

  图1 封包格式

  首先,介绍第一个,也是每一种封包都含有的数据域:同步列数据域。

  1.同步列(Synchronization Sequence,SYNC)数据域

  SYNC字段由8位组成,作为每一个数据封包的前导,用来产生同步,将会起始PLL。因此,它的数值固定为:00000001。这个字段仅可以在闲置时,作传输之用。封包的起始是由总线从J状态转换成K状态的变化所产生设置的。大部分的传送过程是由传送器在下一个可用的位时间所驱动的,并用来产生一个SYNC序列。而另一端的接收器即可利用此序列,将其所接收到时钟与所接收到的数据传输过程,两者加以调和,如此即可确保封包的信息部分是可靠地接收到。这个SYNC序列以2个K状态来结束,且在下一个位时间,开始传递封包的信息。

  此外,若针对高速传输,SYNC序列将会由PC主机所产生,且其中包含了09位的SYNC(KJ KJKJ…KJKK)。虽然这些SYNC序列将会由于集线器的阻隔而消耗若干信号,但在最后末端的设备至少可以收到12位SYNC序列。而这已足够去锁住接收的时钟,并用来产生PLL。但对低速/全速的设备来说,仅需使用8位SYNC序列。

  2.封包标识符(Packet Identifier,PID)数据域

  PID字段紧随在SYNC字段后面,用来表示数据封包的类型。PID字段由一个4位的标识符栏以及一个互为补码的检查栏组成。在表3,2中,列出了封包的类型,其可分为令牌、数据、握手或特殊等4种封包类型。这4种类型可由PID[0:1]2个位来定义。此外,在每一种的封包类型中,还可通过PID[2:3]2个位来定义出不同的封包格式。例如,在令牌封包中,又可细分为OUT、IN、SETUP与SOF等4种封包格式。如此,可推类至其余的封包类型。但在2.0规范中,新增了几个封包标识符,其中,数据封包类型新添了DATA2与DATA3两个封包标识符。

  表 各种封包的类型与规范

续表


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭