usb2.0中的包(packet)

1.前置知识

可以先看我的另外一篇文章 《USB2.0电气层信号的表示及速率的识别过程》,这篇文章主要介绍了usb2.0信号在bit层面的电气层表示 以及 usb2.0速率的识别过程
usb设备在完成速率识别后,主机设备便可以通过包(packet) 进行通信。

2.包(packet)的组成

包(packet) 的组成如下图所示,其中SOPSYNCEOP以及PID,在每一个 包(packet) 中都是存在的。而 地址(地址+端点)帧号数据则不会同时出现,这是由包的类型(PID) 决定的。
SOPEOP作为包的开始和结束在此不再赘述,可参考《USB2.0电气层信号的表示及速率的识别过程》
在这里插入图片描述

2.1 SYNC Field

  • 全速/低速: 3对KJ外加2个K
  • 高速:15对KJ,外加2个K

注 :利用连续变化的信号携带包的速率信息,连续两个k信号标志着PID的开始

2.2Address Fields

2.2.1 Address Field

使用7个bit标识地址,可表示128个地址,0地址由新插入设备且未分配地址使用,(1-127)可用来分配给设备(所以一个主机最多支持127个设备)
在这里插入图片描述

2.2.2 Endpoint Field

使用4个bit表示端点,4个bit可以表示16中情况,即一个设备最多有16个IN端点16个OUT端点(一个设备描述符下最多有16个IN端点描述符和16个OUT端点描述符)。
在这里插入图片描述

2.3 Data Field

每个包最大传输1024个数据,不同的事务(Transaction)或 传输(Transfers)在不同速率下可传输的最大数据量是不同的,最大1024。
在这里插入图片描述

2.4 PID(Packet Identifier Field)、

  • 下图是PID的格式,PID使用8bit表示,有效数据是4bit,高4bit是低4bit的取反,用于校验。

PID在总线上的顺序是(LSb)->(MSb)
在这里插入图片描述

  • PID 值决定了 的类型。主要分为4类:

    • 令牌包(Token):

    OUT, IN, SETUP, PING
    在这里插入图片描述

    SOF
    在这里插入图片描述

    • 数据包(Data):

    DATA0, DATA1, DATA2, MDATA, 不同的事务(Transaction)或 传输(Transfers)在不同速率下数据包的长度是不同的,最大1024。
    在这里插入图片描述

    • 握手包(Handshake):

    ACK,NAK, STALL, NYET, ERR
    在这里插入图片描述

    • 特殊包(Special):
      -SPLITPER设计不同速率下的传输机制,不在本文中讨论,后续会有文章专门介绍。
  • 下图是usb2.0所有支持的包,以及不同类型的包由谁发出支持的速率支持的事务(Transaction)
    在这里插入图片描述

注:PERERRPID是一样的,但因一个是高速模式下的包,一个是全速模式下的包,所以并不冲突。

3. 总结

多个包(packet) 构成一个事务(Transaction), 多个事务(Transaction)构成一个传输(Transfers)
本文引入了包(packet) 的概念,但在usb2.0中 包(packet) 并不能作为一个孤立的概念来理解usb, 仅本文而言,知识是不成体系的,后面会有文章继续介绍其他概念。
有关包(packet) 的详细信息可参阅《Universal Serial Bus Specification Revision 2.0》的8.4章Packet Formats
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值