当前位置: 首页 > news >正文

USB传输(Transaction)过程简介

目录

    • USB传输的三个核心包
      • 1. 令牌包(Token)
      • 2. 数据包(Data Packet)
      • 3. 握手包(Handshake)
    • 两种典型传输流程示例
      • 场景1:主机→设备(OUT传输)
      • 场景2:主机←设备(IN传输)
    • 为什么需要这三个包?
    • 总结

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):确认是否收到。
http://www.dtcms.com/a/111229.html

相关文章:

  • swift-oc和swift block和代理
  • ElasticSearch JavaRestClient查询之高亮显示
  • JS用ES6和ES5分别实现:8字节长整数和字节数组的互转
  • 软考系统架构师 — 4 嵌入式软件
  • H.266/VVC SCC技术学习:块差分脉冲编码调整(block differential pulse coded modulation, BDPCM)
  • 生信入门:专栏概要与内容目录
  • AI算法大全初见面
  • Redisson使用详解
  • 《Maven高级应用:继承聚合设计与私服Nexus实战指南》
  • 嵌入式学习笔记——SPI协议
  • “一路有你”公益行携手《东方星动》走进湖南岳阳岑川镇中心小学
  • AI Agent设计模式二:Parallelization
  • 【新能源汽车整车动力学模型深度解析:面向MATLAB/Simulink仿真测试工程师的硬核指南】
  • PyTorch:解锁AI新时代的钥匙
  • Python基于时间序列分析的降雨量预测系统的设计与实现【附源码、文档说明】
  • 一周学会Pandas2 Python数据处理与分析-Jupyter Notebook安装
  • C++类的特殊成员函数:构造、拷贝构造与析构函数详解
  • F#语言的折线图
  • Prolog语言的强化学习
  • MySQL 知识点详解(索引、存储引擎、事务、锁机制、优化)
  • 当机器学习遇见购物车分析:FP-Growth算法全解析
  • 对模板方法模式的理解
  • WPF设计学习记录滴滴滴6
  • 池化技术的深度解析与实践指南【大模型总结】
  • 【51单片机】2-6【I/O口】电动车简易防盗报警器实现
  • Python循环控制语句
  • 幻觉抵抗优化大模型:teapotllm
  • Linux 线程1-线程的概念、线程与进程区别、线程的创建、线程的调度机制、线程函数传参
  • SpringBoot+Spring+MyBatis相关知识点
  • MQL5教程 05 指标开发实战:双色线、双线变色MACD、跨时间周期均线