USB传输(Transaction)过程简介

USB传输的三个核心包

USB的每一次数据传输(Transaction)由三个包组成,像接力赛一样分步骤完成,确保数据正确传输和确认。

1. 令牌包(Token)

  • 功能:类似“快递单”,告诉接收方接下来要做什么。
    • 包含传输类型(如数据发送或请求)、方向(主机→设备或设备→主机)、目标设备的地址和端点编号。
  • 谁发送?主机(电脑或控制器)。
  • 作用
    • 通知设备即将发生的数据传输方向和内容。
    • 例如:主机发送一个“OUT Token”表示要给设备发数据,或发送“IN Token”表示要从设备取数据。

2. 数据包(Data Packet)

  • 功能:实际的“包裹”,包含要传输的数据。
    • 数据可以是文件、指令、传感器数据等。
  • 方向
    • OUT方向:主机→设备(如电脑给打印机发送文件)。
    • IN方向:设备→主机(如键盘向电脑发送按键信息)。
  • 谁发送?
    • OUT方向:主机发送数据包。
    • IN方向:设备发送数据包。

3. 握手包(Handshake)

  • 功能:类似“签收单”,确认传输是否成功。
    • 常见类型:
      • ACK:接收成功(“已收到”)。
      • NAK:暂时无法接收(“请稍后再试”)。
      • STALL:错误或拒绝(“有问题,停止”)。
  • 谁发送?接收方(OUT方向时是设备,IN方向时是主机)。
  • 作用:告诉发送方数据是否正确接收,确保可靠性。

两种典型传输流程示例

在这里插入图片描述

场景1:主机→设备(OUT传输)

  1. OUT Token:主机发送令牌包,告诉设备:“我要给你发数据,地址是X,端点是Y”。
  2. Data Packet:主机发送实际数据(例如文件内容)。
  3. Handshake:设备收到数据后回复ACK(成功)或NAK(失败)。

场景2:主机←设备(IN传输)

  1. IN Token:主机发送令牌包,告诉设备:“请给我发送数据”。
  2. Data Packet:设备发送数据(例如传感器读数)。
  3. Handshake:主机收到数据后回复ACK(成功)或NAK(失败)。

为什么需要这三个包?

  • 令牌包:明确传输意图,避免混乱(比如快递员先敲门说“我来送包裹”)。
  • 数据包:实际传输内容(包裹本身)。
  • 握手包:确认传输结果,确保数据没丢或出错(签收确认)。

总结

USB传输就像寄快递:

  1. 快递单(Token):说明要寄什么、给谁。
  2. 包裹(Data Packet):实际物品。
  3. 签收单(Handshake):确认是否收到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值