0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

USB数据包的解析

电子工程师 来源:FPGA设计论坛 作者:FPGA设计论坛 2020-09-28 11:40 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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表示尚未准备好,要求等待。

原文标题:USB数据包解析

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    60

    文章

    8494

    浏览量

    286837
  • 数据包
    +关注

    关注

    0

    文章

    270

    浏览量

    25698

原文标题:USB数据包解析

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MIMXRT1189奇数长度UDP数据包的最后一个字节出现问题,为什么?如何解决?

    我遇到了一个问题,即奇数长度 UDP 数据包的最后一个字节无法通过线路正确发送。最后一个字节似乎是未初始化或过时的数据。如果我将 UDP 数据包填充到偶数长度(2 字节绑定),则数据
    发表于 04-17 07:47

    PI7C9X2G304EV:PCI Express Gen 2 数据包交换机的深度解析

    PI7C9X2G304EV:PCI Express Gen 2 数据包交换机的深度解析 在当今的电子设备中,PCI Express(PCIe)技术扮演着至关重要的角色,它为设备之间的数据传输提供了
    的头像 发表于 04-16 17:30 645次阅读

    RDMA设计33:RoCE v2 接收模块

    接收模块中的五个接收单元的设计进行具体分析。 SEND 单元:当接收到来自远程主机的 SEND 后,SEND 单元将解析 SEND 数据包中的远程主机信息,并存储到队列管理模块的寄存器中,而后
    发表于 01-30 10:08

    CW32R030可以兼容BLE及XN297L数据包,请问这个XN297L数据包是什么?

    CW32R030可以兼容BLE及XN297L数据包,请问这个XN297L数据包是什么?
    发表于 01-20 06:37

    BLE 蓝牙空中报文格式与解析(广播

    BLE 广播数据格式解析说明 ...... 矜辰所致
    的头像 发表于 01-04 17:28 2679次阅读
    BLE 蓝牙空中报文格式与<b class='flag-5'>解析</b>(广播<b class='flag-5'>包</b>)

    bk3633 usb 设备如何读取主机向端点0 发送数据包

    bk3633 usb 设备如何读取主机向端点0 发送数据包
    发表于 12-30 13:03

    使用nrf54L15的NORDIC蓝牙芯片,通过串口发送一帧数据包时,会出现分包发送分析

    使用nrf54L15的NORDIC蓝牙芯片,通过串口发送一帧数据包时,会出现分包发送分析,是什么原因呢
    发表于 11-17 15:52

    串口DMA接收数据包丢失怎么解决?

    RTT串口DMA接收数据,超过缓冲区后为什么会吞掉一个数据包呢,不能每次处理完后清除缓冲区数据吗,感觉接收的数据是累计的,累计满之后会重新覆盖,在最后一个
    发表于 09-29 07:50

    GD32F470+LWIP TCP偶尔丢怎么解决?

    的重发机制。 因此认为是校验和之类的原因校验失败丢。 开启了交换机端口镜像,监听tcp到交换机后的数据流量,发现两次上位机发送给板子出问题的tcp数据包的校验和都是0x0000。 有大哥遇到这样
    发表于 09-29 06:43

    【HZ-T536开发板免费体验】4、使用蓝牙模块读取小米温湿度计的数据

    广播数据包,然后解析数据。 先安装虚拟环境所需的依赖。 apt install python3 python3-pip python3-venv 安装完成后,创建一个虚拟环境。python3 -m
    发表于 08-25 22:16

    请问DCTCP与DCUDP 的登录数据包和心跳数据包与服务器端是如何交互的?

    DCTCP与DCUDP 的登录数据包和心跳数据包与服务器端是如何交互的?
    发表于 08-06 06:29

    USB3014遇到写入字节限制,当写入数据的长度为1024字节或其整数倍时,无法完成写入操作怎么解决?

    关于 USB3014 写入 1024 字节或其整数倍的问题,我了解到以下信息: 文档中提到,如果外部主设备始终写入满数据包(如 1024 字节或其整数倍),则无需使用 PKTEND# 信号
    发表于 07-28 08:28

    在EZ串行的BLE“无响应写入”中, CAN一次通信中接收的最大数据包大小是多少?

    :所有数据都显示在与 ez-Serial 和 PUART 连接的 TeraTerm 上 [问题] (1)在 EZ 串行的 BLE“无响应写入”中, CAN 一次通信中接收的最大数据包大小是多少? (2
    发表于 07-07 07:33

    蓝牙数据通道空口数据包

    ​ 与蓝牙广播相对应,蓝牙数据包是另一种Bluetooth LE packet。蓝牙数据包是蓝牙数据信道空中的简称,表示空中
    发表于 06-03 10:51

    Bluetooth LE Link Layer数据包解析

    ,因此文章取名“详解Bluetooth LE空口格式—兼Bluetooth LE link layer协议解析
    发表于 06-03 10:28