USB2.0令牌、事务及传输抓包分析
+ -

USB2.0 ACK握手包

2021-06-22 4155 2

ACK握手包用于当USB数据传输的接收方正确接收到数据包时,接收方将返回 ACK 握手包。 ACK 握手包表征了一次正确的数据传输,之后才可以进行下一次事务处理。

ACK广泛用于通读协议中,一般用于确认从接收方接收到数据正确无误,特别是在TCP/IP协议栈中,ACK的使用更加让人理解深入。我们嘴里常说的三次握手,四次断开,其中包括了大量的ACK确认,有兴趣的同学可以看一看TCP/IP协议栈。当然也可以和站长进行TCP/IP协议规范的技术交流。

ACK握手包和其它握手包的格式一致,只有PID不同,格式也最简单。
握手包

PID 含义 说明
0010 握手ACK 数据正确接收

ACK握手包的PID为8位,低4位为0010,所以高4位的补码为1101,所以其PID为0xd2。

ACK握手包抓包

ACK握手包
如上图所示,上图为一次数据的输出事务。主机输出数据到设备,主机发起OUT令牌,指名接收数据的设备地址为15,端点地址为2,然后使用数据DATA1向设备发送了31个字节的数据。当设备接收到这些数据确认无误后,向主机发送一个ACK包,表示数据正确接收。

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

UAC Feedback端点
下面转一段对USB feedback的理解:这段时间一直在做USB Audio Device(UAC)设备的开发工作。由于UAC采用的是isochronous endpoint来传输数据,对时钟的要求较高。但无奈我们的嵌入式平台的时钟并不准,数据同步就成了问题。经过研究,发现只能使用异步模式来解决这......
USB2.0 NAK握手包
NAK 握手包一般由 USB 设备发出。对于IN数据传输,表示 USB 设备没有计划向 USB 主机发送数据;对于 OUT 数据传输,表示 USB 设备无法接收 USB 主机发送的数据。NAK包的PID的低4位为1010,故高4位的补码为0101,所以其包PID值为0x5a.PID含......
USB超高速设备描述符的bMaxPacketSize0为0x09
USB3的设备中,其USB设备描述符和2.0的结构一致,不过在含义上有的字段稍有区别。比如说在USB3.2的版本中,其设备描述符中的bMaxPacketSize0和USB2.0有就所不同。在USB2.0中bMaxPacketSize0代表的是USB设备默认端点0的最大包的大小,一般为0x40即64字......
USB2.0 ACK握手包
ACK握手包用于当USB数据传输的接收方正确接收到数据包时,接收方将返回 ACK 握手包ACK 握手包表征了一次正确的数据传输,之后才可以进行下一次事务处理。ACK广泛用于通读协议中,一般用于确认从接收方接收到数据正确无误,特别是在TCP/IP协议栈中,ACK的使用更加让人理解深入。我们嘴里......
USB2.0包Packet的组成
USB包由SOP,SYNC,Packet内容和EOP组成.SOP起始包起始包SOP(Start Of Packet),通过将D +和D-线从空闲状态驱动到相反的逻辑电平(K状态),由始发端口发信号通知分组的开始(SOP)。 此开关级别表示SYNC字段的第一位。 当重新传输到小于±5 ns时,集线器......
USB 高速高带宽端点wMaxPacketSize
USB的端点可以设置为高速高带宽端点。我们知道,USB的数据传输类型有4种,分别为控制传输,中断传输,批量传输和同步传输。而端点类型与之要对应。除过控制传输外,其余三种传输使用于应用的数据传输。USB使用端点描述符的wMaxPacketSize来配置端点为高速高带宽端点,主要表现在bit11-12,......
USB2.0 握手包
握手包跟随在令牌包或者数据包之后,组成一个完整的事务,是对一次事务完成的确认。USB主机或者USB设备会根据事务的完成状态返回相应的握手包握手包由8位的PID构成,用于数据传输的末位报告本次数据传输的状态。握手包之后使是整个事务处理的结束信号EOP.握手包根据PID的不同,可分为:PI......
USB2.0 STALL握手包
STALL 握手包一般由 USB 功能设备发送,表示该 USB 功能设备不支持这个请求,或者无法发送和接收数据。 STALL 握手包分为以下两种情况。协议 STA LL 握手包:在控制传输中使用。协议 STALL 握手包表明了该 USB 功能设备不支持这个请求协议(如设备限定描述符的获取)。功能......
USB2.0 NYET握手包
在USB2.0高速设备OUT事务中使用,它表示设备本次数据成功接收,但是没有足够的空间来接收下一次数据。主机在下一次输出数据时,将先使用PING命令牌包来探测设备是否有足够的空间接收数据,一面不必要的带宽浪费。如果低速或者全速设备和高速HUB之间的事务一直没有完成,高速HUB也会向主机返回一个NY......
USB2.0 ERR握手包
ERR握手包仅用于高速模式下,其功能是由USB集线器HUB向主机报告挂载其上的低速或全速设备错误。PID含义说明1100特殊用途ERRSPLIT事务中表示出现错误......
USB传输的事物拆分和ACK机制
USB的事务拆分USB每次传输的数据包大小不得超过端点的最大包大小,如果需要传输超过端点的最大包大小,是需要进行事务传输的,即一个事务无法完成的数据长度,会拆分成多个事务,并且提几个事务必须按最大端点大小进行数据传输,最后一个事务按实际剩余数据大小传输。这个我们在USB2.0 事务 一切我们有详细的......
USB2.0 IN/OUT事务ACK成功的数据翻转(DATA TOGGLE)
USB使用数据翻转(DATA TOGGLE)的同步机制,用来实现在USB主机和设备之间多个事务的数据传输同步。该同步机制原理是:USB主机和设备各自维护一个数据包PID,根据PID来发送数据包数据接收方根据接收到的数据包情况来改变自身数据包PID数据发送方根据接收方的握手包来改变自身的数据包PI......
USB2.0 IN/OUT事务ACK错误或丢失的数据翻转(DATA TOGGLE)
前面一节我们讨论了当ACK成功发送并被接收时的数据包PID翻转,但在实际的数据传输过程中,也会出现ACK丢失或者错误的情况,这节我们来讨论这种情况。同样的,对于IN事务和OUT事务,我们分别进行讨论。IN事务ACK错误或丢失的数据翻转(DATA TOGGLE)IN事务ACK错误或丢失的数据翻转(......
USB音频设备UAC数据同步方式
对于USB扬声器,USB主机负载发送音频数据,而USB设备负责接收来自主机发送过来的数据,数据的传输方式采用的是同步方式。由于USB主机和USB设备时钟同步的问题,会有一定的偏差,长时间的累积会导致主机和设备之间数据的不同步。如USB主机可能会发送数据相对USB设备播放数据过快,导致USB设备来不及......
USB总线分析仪 USB Packet Viewer
说明USB Packet Viewer是一款便携式USB协议分析仪,能够捕捉USB通讯的底层数据包以及总线事件。站长手中有一款USB Packet Viewer产品,讲道理这是一款性价比超高的工具,只有几百块钱的价格(可以说是市面上同类产品的最低价),但确达到了惊人的抓包解析效果。最难能可贵的......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!