由域构成的包有四种类型,分别是令牌包、数据包、握手包和特殊包,前面三种是重要的包,不同包的域结构不同,介绍如下:
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数据包解析
文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。
相关推荐
信息。
数据显示:解析后的数据会以图形化界面展示出来,如波形图、时序图、数据包列表等,帮助工程师更直观地了解USB设备的通信过程。
触发功能
发表于 09-24 14:29
DCTCP与DCUDP的登录数据包和心跳数据包与服务器端是如何交互的?
发表于 07-25 06:37
数据包的速度,即每秒大约 50 个 UDP 数据包。高波特率唯一改变的是,在数据包较大的情况下,我可以以与轻量级数据包相同的速度发送数据包。
发表于 07-22 08:00
Android 发送一个小 UDP 数据包(5 字节)。这个小数据包被我的微控制器在UART上接收到。微控制器将更大的数据包(可变长度,约 100 字节)发送回 UART。ESP在UART上接
发表于 07-18 07:17
丢弃在ESP完成之前不需要的数据包,以便通过串行端口发送它以接收下一个数据包,
如果没有,我必须按顺序读取所有传入的数据包,需要的和不需要的,
而且波特率不足,主机处理器开销大,
我能否在 ESP 结束之前通过串行端口停止传入
发表于 07-16 06:18
我可以使用 AT CIPSEND 发送单个数据包。但是我必须发送一系列二进制数据包。如何使用AT CISEND或AT CIPSENDBUF发送多个数据包,什么是正确的算法?
到目前为止,我尝试
发表于 07-15 07:37
在 AN65974 中,短数据包和零长数据包是什么意思?
非常感谢!
发表于 05-30 07:41
在 Fx3 控制器中,在流式传输过程中,从主机收到了意外的端点停止请求。 在调试过程中,我发现 USB 数据包中的数据有效载荷无法正常发送,请问出现这种错误的原因是什么。 下面附有错误图像和完整的
发表于 05-28 06:37
使用 IQxel-MW LifePoint 作为发生器并发送波形BT_1DH5_00001111_Fs80M.iqvsg,但无法在 AIROC 工具中接收数据包。
以下是从 IQxel 发送
发表于 05-22 06:39
随着网络芯片带宽的持续提升,其内部数据包处理单元的工作负载也随之增加。然而,如果处理单元无法与网络接口的传入速率相匹配,将无法及时处理数据包,这不仅会导致数据包随机丢失,更会降低网络的吞吐量。
发表于 04-02 16:36
•546次阅读
);__HAL_UART_DISABLE_IT( huart1, DMA_IT_HT);
2、发送数据包1
发表于 03-08 08:05
传统的数据包处理方式是数据包先到内核最后再到用户层进行处理。这种方式会增加额外的延迟和CPU开销,严重影响数据包处理的性能。 DPDK 绕过内核,在用户空间中实现快速数据包处理。
发表于 02-25 11:28
•820次阅读
电子发烧友网站提供《使用P4和Vivado工具简化数据包处理设计.pdf》资料免费下载
发表于 01-26 17:49
•0次下载
所有互联网服务,均依赖于TCP/IP协议栈。懂得数据是如何在协议栈传输的,将会帮助你提升互联网程序的性能和解决TCP相关问题的能力。 我们讲述在Linux场景下数据包是如何在协议层传输的。 1、发送
发表于 11-11 11:33
•1045次阅读
什么是丢包 数据在Internet上是以数据包为单位传输的,单位为字节,数据在网络上传输,受网络设备,网络质量等原因的影响,使得接收到的数据
发表于 11-09 15:10
•835次阅读
评论