fpga_feixiang 发表于 2021-2-3 15:15:35

USB数据包

由域构成的包有四种类型,分别是令牌包、数据包、握手包和特殊包,前面三种是重要的包,不同包的域结构不同,介绍如下:         

      1、令牌包

      分为输入包、输出包、设置包和帧起始包(注意这里的输入包是用于设置输入命令的,输出包是用来设置输出命令的,而不是放数据的)其中输入包、输出包和设置包的格式都是一样的:

                                             SYNC + PID + ADDR + ENDP + CRC5(五位的校验码)

      帧起始包的格式:

                                             SYNC + PID + 11位FRAM + CRC5(五位的校验码)

      2、数据包

      分为DATA0包和DATA1包,当USB发送数据的时候,如果一次发送的数据长度大于相应端点的容量时,就需要把数据包分为好几个包,分批发送,DATA0包和DATA1包交替发送,即如果第一个数据包是DATA0,那第二个数据包就是DATA1。但也有例外情况,在同步传输中(四类传输类型中之一),所有的数据包都是为DATA0,格式如下:

                                                      SYNC + PID + 0~1023字节 + CRC16

      3、握手包
      结构最为简单的包,格式如下:

                                                                  SYNC + PID
      握手包包括 ACK、NAK、STALL以及NYET 四种,其中 ACK 表示肯定的应答,成功的数据传输。NAK 表示否定的应答,失败的数据传输,要求重新传输。STALL表示功能错误或端点被设置了STALL属性。NYET表示尚未准备好,要求
页: [1]
查看完整版本: USB数据包