USB协议质疑

USB协议质疑,usb,protocols,transfer,data-transfer,Usb,Protocols,Transfer,Data Transfer,我目前正在研究USB是如何工作的。我读到,有一些事务是由更小的数据包构建的。我读过各种各样的书包 有一件事我不明白。正如书中所说,每个事务都由3个数据包组成:令牌、数据和hanshake 我对我的书的理解方式如下图所示 我认为: 我认为第一个事务应该只包含tokenin和数据包,而不包含hanshake包(握手是为了什么?) 我认为,该响应应该只包含ACK-hanshake数据包(数据正确写入设备) 请帮我正确地理解它 致以最良好的祝愿, Tom.事务是一系列的一个或多个数据包 没有数据的典型

我目前正在研究USB是如何工作的。我读到,有一些事务是由更小的数据包构建的。我读过各种各样的书包

有一件事我不明白。正如书中所说,每个事务都由3个数据包组成:令牌、数据和hanshake

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

我认为:

我认为第一个事务应该只包含tokenin和数据包,而不包含hanshake包(握手是为了什么?)

我认为,该响应应该只包含ACK-hanshake数据包(数据正确写入设备)

请帮我正确地理解它

致以最良好的祝愿,
Tom.

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

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

  • 主机发送一个IN令牌
  • 设备发送NAK握手数据包,这意味着它没有任何数据要发送
具有数据的典型IN事务如下所示:

  • 主机发送一个IN令牌
  • 设备发送带有数据的DATA0或DATA1数据包
  • 主机发送ACK握手
典型的OUT事务如下所示:

  • 主机发送一个OUT令牌
  • 主机发送带有数据的DATA0或DATA1数据包
  • 设备根据是否接受数据发送NAK或ACK握手
请注意,我只是在谈论全速(12 Mbps)USB 2.0设备,对于高速设备,事情可能会变得更复杂


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

谢谢您的回答:)。为了确定一下,你能检查一下我的理解是否正确吗?如果我想写入设备,通信看起来是这样的(假设我想发送的数据大小大于MaxPacketSize,并且我正在以大规模模式传输),这是真的吗?1.[pc->设备]输出2。[设备->电脑]确认3。[pc->设备]数据0 4。[设备->电脑]确认5。[pc->设备]数据1 6。[设备->电脑]确认7。[pc->设备]数据0 8。[设备->电脑]确认9。[pc->设备]数据1 10。[device->pc]确认否,您需要删除第二个数据包,在发送数据之前,设备不会得到确认数据包的更改(至少在谈到全速设备时)。您忘记了计算机需要为每个事务发送一个OUT令牌,并且OUT事务中只能有一个数据包。实际上,您应该只看我在回答中提供的三个示例事务,并复制它们。