微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > USB封包中的数据域类型

USB封包中的数据域类型

时间:10-17 来源:互联网 点击:
USB接口是以令牌封包为主(token based)的总线协议,而且PC主机掌握了这个总线的一切主控权。换而言之,一切的沟通都由PC主机来负责激活与执行。再加上,由于USB不占用任何PC的中断向量、DMA或是任何输人/输出的资源,因此,必须通过严谨的协议才能与外围设各达成通信的目的,进而执行各项传输的命令。当然,在USB的通信协议中,不仅只有令牌封包而已,还包含了数据封包、握手封包以及特殊封包等。因此,就必须先介绍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两个封包标识符。

  表 各种封包的类型与规范

续表

  3.地址(Address,ADDR)数据域

  ADDR数据域由7位组成,可用来寻址出达127个外围设各。当然每一个设各仅能对应一个唯一的地址,而每当新的外围设各刚连接至USB接口时,拥有预设的地址0,其后再赋予新的地址。也因此,27-1(预设地址)=127外围设备。

  4.端点(Endpoint,EN!)P)数据域

  ENDP数据域由4位组成,之前有提及过,端点是类似微管线的概念。通过这4位,可以定义出高达16个端点。但基本上,只使用15个端点。而通过端点描述符的设置,则最多可寻址出30个端点。这个ENDP数据域仅用在IN、OUT与SETUP令牌封包中。对于低速的设各可支持端点0以及端点1作为中断传输模式(如CY7C63O/iXX微控制器系列),而全速设各则可以拥有15个输人端点(IN)与15个输出端点(OUT)共30个端点。Cypress USB微控制器的CY7C64213与CY7C64313系列则最多可支持31个端点(另外包含一个端点0)。

  5.循环冗余检验(Cycle Redundancy Checks,CRC)数据域

  根据不同的封包类型,CRC数据域由不同数目的位组成。其中,最重要的数据封包采用CRC16的数据域(16位),而其余的封包类型则采用CRC5的数据域(5位)。其中的的循环冗余检验CRC,是一种用来做数据错误检测的技术。这是由于数据在做串行传输时,有时候会发生若干错误。因此,CRC可根据数据算出一个检验值,然后依此判断数据的正确性。

  通过前面所介绍的5个数据域,即可构成了大部分的封包类型,而以下再介绍其余特殊的数据域。

  6.数据(data)栏

仅存于Data封包内,而根据不同的传输类型,拥有不同的字节大小,从0~1 024字节(仅能在等时传输时设置

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top