不同的 PID 标识了 不同类型的 USB 包(即:不同的包类型 Packets Type)

    笔记:
    PID 唯一性

    PID的构成:四位标识符 + 四位标识符反码

    这里只用(PID0~4),PID4~7是PID0~4的取反,用来校验 PID :
    2.1.1 PID 域 - 图1

    根据 USB2.0 的 Spec 描述了 不同PID 对应的 不同类型包 :
    2.1.1 PID 域 - 图2

    可以看出,由 PID 主要将 USB 的包分为了 4 类 16个包:

    1. 令牌包(Token) :
    0x01 输出(OUT)启动一个方向为主机到设备的传输,并包含了 设备地址 和 标号。
    0x09 输入(IN) 启动一个方向为设备到主机的传输,并包含了 设备地址 和 标号。
    0x05 帧起始(SOF)表示一个帧的开始,并且包含了相应的帧号。
    0x0d 设置(SETUP)启动一个控制传输,用于主机对设备的初始化。
    1. 数据包(Data) :
    0x03 数据包(DATA0)。
    0x0b 奇数据包(DATA1)。
    0x07 高速设备的 PID 的 同步包
    0x0f 高速设备 分离包,高带宽的同步事务
    1. 握手包(HandShake):
    0x02 确认接收到无误的数据包(ACK)。我俗称:确认包
    0x0a 无效(NAK),接收(发送)端正在忙而无法接收(发送)信息。
    0x0e 错误(STALL),端点被禁止或不支持控制管道请求。
    0x06 无响应(NYET)。
    1. 特殊类:

       前导包,错误包,分裂事务和 PING 测试
    PID 数据传输方向
    IN Device->Host
    OUT Host->Device
    SETUP Host->Device
    PING Device->Host