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

USB2.0 NAK握手包

2021-06-22 3096 0

NAK 握手包一般由 USB 设备发出。

  • 对于IN数据传输,表示 USB 设备没有计划向 USB 主机发送数据;
  • 对于 OUT 数据传输,表示 USB 设备无法接收 USB 主机发送的数据。

NAK包的PID的低4位为1010,故高4位的补码为0101,所以其包PID值为0x5a.

PID 含义 说明
1010 握手NAK 数据未正确接收、无法接收数据或USB设备无数据可发送

NAK包的格式和其它握手包的格式一致,只有一个PID。
握手包

NAK握手包示例

NAK虽然代表着数据未接收或者无发送数据计划,所以在使用抓包工具时,会和SOF包一样,也会大量出现。
在使用抓包工具时,一次transfer一般是正常的,但如果没有transfer,只有事务,一般展开抓图的图示例都是NAK包。

NACK包

从上图可以看到,主机在收数据,但有时候设备发送的太慢,导致有部分NAK包。不过一般下次传输就正常了。

NAC握手包的波形

下图对包编号为17383的波展开其NAK握手包波形
NAC握手包的波形

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 篇笔记 写笔记

USB2.0 NAK握手包
NAK 握手包一般由 USB 设备发出。对于IN数据传输,表示 USB 设备没有计划向 USB 主机发送数据;对于 OUT 数据传输,表示 USB 设备无法接收 USB 主机发送的数据。NAK包的PID的低4位为1010,故高4位的补码为0101,所以其包PID值为0x5a.PID含......
USB2.0 ACK握手包
ACK握手包用于当USB数据传输的接收方正确接收到数据包时,接收方将返回 ACK 握手包。 ACK 握手包表征了一次正确的数据传输,之后才可以进行下一次事务处理。ACK广泛用于通读协议中,一般用于确认从接收方接收到数据正确无误,特别是在TCP/IP协议栈中,ACK的使用更加让人理解深入。我们嘴里......
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事务中表示出现错误......
USB2.0 IN/OUT事务ACK错误或丢失的数据翻转(DATA TOGGLE)
前面一节我们讨论了当ACK成功发送并被接收时的数据包PID翻转,但在实际的数据传输过程中,也会出现ACK丢失或者错误的情况,这节我们来讨论这种情况。同样的,对于IN事务和OUT事务,我们分别进行讨论。IN事务ACK错误或丢失的数据翻转(DATA TOGGLE)IN事务ACK错误或丢失的数据翻转(......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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