USB2.0 学习(1)字段和包

目录

1 字段

1.1 包识别字段PID

1.2 地址字段

1.3帧号字段

1.4 数据字段

1.5 CRC字段

1.5.1 CRC介绍

1.5.1.1 USB CRC原理图(x5+x2+1)

2 包

2.1令牌包

2.2帧起始包

2.3数据包

2.4SPLIT包(分割事务包)

2.5握手包

参考


USB包的构成是一个逐层的过程,首先这些串行数据按照特定的规则构成字段,字段是构成包的基本单元,字段按照一定的顺序可以组成包,进而多个包可以组成事务,最终多个事务组成一个传输。代表一个完整的数据传输。

图1-1 USB传输结构

1 字段

所有包都有开始(SOP)和结束(EOP)界定符,开始界定符(SOP)与包之间是SYNC字段。输入电路使用SYNC字段来将输入数据与本地时钟对齐,SYNC字段中最后两位用来标记SYNC字段的结束,并通过推断识别PID的开始。高速包的SYNC宽度为32bit(31bits0+1bit1),全速/低速包的SYNC段长度为8bit(00000001),实际接收到的SYNC长度由于USBHUB的关系,可能会小于该值。对应如下。

注:SOP、SYNC、EOP字段不属于数据包范围

SOP SYNC PACKET EOP

1.1 包识别字段PID

  •  每个USB包的SYNC字段后紧跟一个PID
  • PID由一个四位包类型字段和一个四位校验字段组成
  • PID的四位校验字段是通过对包类型字段进行补码生成的,若与包类型字段不是补码关系则发生PID错误
  • 主机和所有功能必须对所有接收到的PID字段进行完整解码,若接收到的PID错误,接收器丢弃整个包
  • 如果功能收到了一个不支持的事务类型或方向的有效PID,则该功能不得回应。
  • PID分为四个编码组:令牌、数据、握手和特殊
  • 传输的前两位PID位(PID[0:1])指示编码组

表1-1 PID[3:0]与PID的类型对应表

1.2 地址字段

地址字段有两部分组成:功能地址字段(ADDR)和端点字段(EP)。如果包的地址字段与设备端点不匹配则必须忽略这个包。

功能地址字段ADDR

  • ADDR字段通过其地址指定功能,根据令牌PID的值,功能可能是包的源或者目的。
  • ADDR[6:0]指定了128个地址
  • ADDR字段用于IN、SETUP、OUT令牌以及PING和SPLIT特殊令牌
  • 每一个单独的功能都会有一个ADDR值,这意味着会有多个端点共享一个ADDR值,这意味着可能会有多个端点共享一个ADDR
  • 复位和上电时,ADDR默认为0,必须在枚举的过程中由主机进行分配
  • ADDR0被保留作为默认地址,不能分配给其他用途

端点字段

  • 附加的4位端点字段,允许在多端点的功能中更加灵活的寻址(对应功能的寻址)
  • 除了端点0外,其他端点地址是根据功能的端点来定义的
  • 端点字段定义了用于IN、SETUP、和OUT令牌以及PING特殊令牌
  • 所有功能必须支持端点地址为0的默认控制管道
  • 低速设备每个功能最多支持3个端点:端点编号为0的控制管道以及另外两个端点

额外的两个端点可以作为

  1. 两个控制管道
  2. 一个控制管道和一个中断端点
  3. 两个中断管道
  • 全速和高速功能可以支持最多16个IN和OUT端点(16组端点)

1.3帧号字段

  • USB帧的概念是用于组织和标记数据传输的时间间隔,帧号就是用来标识这些帧的序号,一个帧内可以包含一个或多个包
  • 在USB的SOF包中,帧号字段位于SOP、SYNC、PID字段之后,帧号用于指示当前帧的序号
  • USB2.0规范中,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值