USB - 对协议的怀疑

USB - doubts about protocol

我目前正在研究 USB 的工作原理。我读到,有些交易是由较小的数据包构建的。我看了各种包。

有一件事我不明白。正如书中所说——每笔交易都包含 3 个数据包token、数据和 hanshake.

我理解我的书的方式如下图所示。

我认为:

我觉得第一笔交易应该只有token IN和数据包,没有hanshake包(握手干什么?)

我认为,该响应应该只包含 ACK 握手数据包(数据已正确写入设备)。

请帮我正确理解一下。

此致, 汤姆.

一个事务是一系列一个或多个数据包。

没有数据的典型 IN 事务如下所示:

  • 主机发送一个 IN 令牌。
  • 设备发送NAK握手包,表示没有数据要发送

典型的 IN 数据交易如下所示:

  • 主机发送一个 IN 令牌。
  • 设备发送带有数据的 DATA0 或 DATA1 数据包。
  • 主机发送ACK握手。

典型的 OUT 事务如下所示:

  • 主机发送一个 OUT 令牌。
  • 主机发送带有数据的DATA0或DATA1数据包。
  • 设备根据是否接受数据发送 NAK 或 ACK 握手。

请注意,我只是在谈论全速 (12 Mbps) USB 2.0 设备,对于高速设备,事情可能会变得有点复杂。

请注意,由于噪声问题,这些数据包中的任何一个都可能丢失。 USB 规范特别说明了这一点,确保数据包丢失不会导致设备或主机的错误操作。