Edit online

Transaction

4 Feb 2024
Read time: 2 minute(s)

USB Transactions 主要由四种 Packet 组成: Token PacketData PacketHandshake PacketSpecial Packet 。但通常的一次 Transaction 由 3 个 Packets 组成: Token -> Data -> Handshake


image10

IN/Read/Upstream Transaction


image11

IN Transaction 主要用于 Device 向 Host 发送数据。

  • Host 向 Deivce 发送一个 IN Token Packet

  • Device 如果忙,则回复 NAK Packet, Host 在收到 NAK Pakcet 之后则持续向 Device 发送 IN Token Packet

  • 当 Device 准备好时,回复 Data Packet, Host 在收到 Data packet 之后回复一个 ACK handshake

OUT/Write/Downstream Transaction


image12

OUT Transaction 主要用于 Host 向 Device 发送数据。

  • Host 向 Deivce 发送一个 OUT Token Packet 和一个 DATA Packet

  • Device 忙,则回 NAK, Host 则会复发 OUTDATA

  • Device 在成功收到数据后,回 ACK handshake packet

Control Transaction

Control Transaction 最多由 3 个 Stage 组成: Setup stageData stageStatus stage 。其中 Data stage 不是必需的,有的 control transaction 没有 data stage

  • Setup Stage (Transaction)

    Setup stage 中的 setup packet 只会出现在 control transaction 中,Device 必须回 ACK, 不能回 NAK。


    image13

  • Data Stage (Transaction)

    Data Stage 可以有若干的 Data transaction。这个 stage 只有在 Host 和 Device 需要 data 传输时才会存在,通常 setup stage 的 payload 可以 cover , 这个时候就不需要 data stage。


    image14

  • Status Stage (Transaction)

    以下是 control read transaction 和 control write tranasaction 分别对应的 status stage。


    image15