USB 控制传输方式

  • 控制传输的特点
  • 控制传输的过程
    • 建立过程
    • 数据过程(可选)
    • 状态过程
    • 建立过程
  • 控制传输示例图
    • USB控制读
    • USB控制写
    • USB无数据控制写
  • USB控制传输抓包分析
    • 读数据-USB控制传输抓包分析
    • 写数据-USB控制传输抓包分析
    • 无数据-USB控制传输抓包分析

控制传输是一种特殊的传输方式。当USB设备初次连接主机时,用控制传输传送控制命令等对设备进行配置。同时设备接入主机时,需要通过控制传输去获取USB设备的描述符以及对设备进行识别,在设备的枚举过程中都是使用控制传输进行数据交换。

控制传输的特点

控制传输相对于其它三个传输方式比较复杂,且具有以下特点:

  • 无论低速设备还是高速设备都可以使用控制通道。
  • 高速模式的最大包长固定为64个字节;
  • 全速模式可在8、16、32、64字节中选择;
  • 低速模式的最大包长固定为8个字节。
  • 超高速USB3.0控制端点有固定的最大控制传输的数据有效载荷为 512 字节,最大突发大小为 1.
  • 控制传输的应用场合:主要应用于设备的枚举过程(如读取设备描述符,设置地址,设置配置等)和对数据准确性要求较高的场合。

控制传输最大包长度

控制传输的过程

控制传输分为三个过程:

  • 建立过程
  • 数据过程(可选)
  • 状态过程。

建立过程

  1. 主机发送令牌包:SETUP
  2. 主机发送数据包:DATA0
  3. 设备返回握手包:ACK或不应答,;注意:设备不能返回NAK或STALL,即设备必须接收建立事务的数据。
    建立过程是建立事务,建立事务是通过SETUP令牌包,其次是DATA0数据包,最后是握手包,设备只能使用ACK来应签(或者由于出错不应答),而不能使用NAK或者STALL来应答,即设备必须接收建立事务的数据。

数据过程(可选)

一个数据过程可以不包括或包含多个数据事务,但所有数据事务必须是同一方向的,即在控制读传输中,数据过程中的数据事务都必须是输入的,在控制写传输过程中,数据过程中的事务都必须是输出。若数据方向发生了改变,则认为进入状态过程。数据过程的第一个数据包必须为DATA1,然后每次正确传输一个数据包后就在DATA0和DATA1之间交替。

状态过程

状态过程只使用DATA1包,并且传输方向与数据过程相反,即控制写输出在状态过程中使用一个批量输入事务,控制读输入在状态过程中使用一个批量输出事务。

建立过程

状态过程是要返回数据传输的成功与否,具体也需要看控制传输的类型。需要注意的是,状态信息的数据传输方向与数据阶段方向相反。其实我们来思考下,主机给设备把一推数据发送完毕了(OUT事务),主机肯定要请求一个IN事务,让设备把自己的接收情况发给主机,你设备要给我说你在本轮接收数据有没有问题,同样的,设备把数据发送给主机(IN事务),主机肯定要发起一个OUT事务请求,告诉设备主机的接收情况,告诉设备本轮接收数据有没有问题。

控制传输示例图

USB控制读

在控制读传输时,该阶段则为OUT事务,其中的数据包固定为DATA1数据包。返回数据成功与否以有以下情况:
1)读数据成功 主机发送OUT令牌包(ping令牌包,高速情况下),主机发送0长度数据包,设备ACK。
2)数据传输出错 主机发送OUT令牌包(ping令牌包,高速情况下),主机发送0长度数据包,设备STALL。
3)设备忙(比如正在写数据) 主机发送OUT令牌包(ping令牌包,高速情况下),主机发送0长度数据包,设备NAK

USB控制写

在控制读传输时,该阶段则为IN事务,其中的数据包固定为DATA1数据包。返回数据成功与否以有以下情况:
1)写数据成功,主机发送IN令牌包,设备发送0长度数据包,主机回复ACK。
2)数据传输出错, 主机发送IN令牌包,设备回复STALL。
3)设备忙(比如正在写数据),主机发送IN令牌包,设备回复NAK。

USB无数据控制写

该阶段则为IN事务,其规则与控制写传输相似。

USB控制传输抓包分析

读数据-USB控制传输抓包分析

控制读传输在初始设置阶段会发起一个SETUP事务,从这个SETUP事务我们可以知道是设备给主机传输数据,并且数据长度是255,具体的协议后期会详解,大家在这里把先控制传输理解到位,接着在数据阶段完成数据交换(因为是设备给主机传输数据,所以是数据阶段是IN事务),最后在状态信息阶段主机给设备发送一个OUT事务表明自己接收是否异常。

写数据-USB控制传输抓包分析

控制写传输在初始设置阶段同样会发起一个SETUP事务,从这个SETUP事务我们可以知道是主机向设备传输数据,并且数据长度是12,接着在数据阶段完成数据交换(因为是主机给设备传输数据,所以数据阶段是OUT事务),最后在状态信息阶段主机发起一个IN事务,请求设备回答接收情况。

无数据-USB控制传输抓包分析

无数据控制传输在初始设置阶段同样会发起一个SETUP事务,从这个SETUP事务看到数据长度是0,因此无数据阶段,最后在状态信息阶段主机发起一个IN事务,请求设备回答接收情况。

USB 传输方式(控制)相关推荐

  1. USB 传输方式(数据传输方式分类及带宽占用率对比)

    USB 数据传输方式分类及带宽占用率对比 控制传输 同步传输 中断传输 批量传输 USB传输有四种传输类型使用的事务类型各不相同.其中批量传输.同步传输每次传输需要一个或多个事务,中断传输每次传输只需 ...

  2. USB 传输方式(同步、等时)

    USB 同步.等时传输方式 同步传输的应用场合 同步传输的特点 同步传输的事务 USB同步/等时传输方式抓包分析 读数据 等时传输也有"同步传输"的叫法,一般用于要求数据连续.实时 ...

  3. usb:认识usb传输(一)

    文章目录 一.usb发展背景 1. usb特点 2. usb发展 1.更名 2.发展 3.传输速度 4.usb编/解码方式 --反向不归零(NRZI):位填充 5.信号传输状态 5.帧 6.通讯过程划 ...

  4. USB协议详解第12讲(USB传输-初探)

    目录 1.USB传输.事务.包的关系 2.USB传输类型 2.1控制传输 2.2同步传输 2.3批量传输 2.4中断传输 3.传输总结及后期内容 1.USB传输.事务.包的关系 USB传输.事务.包是 ...

  5. Android设备间USB传输(OTG)

    1. USB概述 为了统一电脑和外围设备的接口标准,方便用户使用以及端口扩展,Intel和USB-IF组织于1994年开始开发一个通用总线标准-- USB(Universal Serial Bus), ...

  6. 详细介绍!Linux 上几种常用的文件传输方式

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 责编:乐乐 来源:https://dwz.cn/VWIHhsOw 昨天发布一篇Linux文章( ...

  7. UDP/TCP网络传输方式

    网络传输方式 1.面向无连接型: 不要求建立和断开连接,发送端可于任何时候自由发送数据. 反之, 接收端也永远不知道自己会在何时从那里接收到数据. 因此, 面向无连接的情况下, 接收端需要时常确认是否 ...

  8. usb 系统消息_别让 USB 传输速度影响 Android 开发效率

    概览 迭代速度是构建高质量 Android 应用的关键要素.处理的速度越快,应用程序的体验就越顺畅.这篇文章将和大家聊聊如何优化部署时间. 部署 101 在 Android Studio 3.5 中, ...

  9. sock 文件方式控制宿主机_基于嵌入式Linux系统实现YAFFS2文件系统存储方案的设计...

    随着嵌入式技术的不断发展,嵌入式系统的应用越来越广泛,人们对于嵌入式系统功能的要求也越来越高,相应地其大容量数据存储和管理变得越来越重要.相对硬盘而言,FLASH等非易失性存储器具有体积小.功耗低.成 ...

最新文章

  1. 3.Git的基本操作
  2. sqlserver 新建只读权限用户
  3. 论文研读:Automatic Temporal Segment Detection and Affect Recognition From Face and Body Display
  4. Android ramdisk.img system.img userdata.img 介绍与使用
  5. 《算法竞赛进阶指南》打卡-基本算法-AcWing 97. 约数之和:递归、快速幂
  6. 台式计算机如何连接vif,关于计算机二级( VIF ) 县城有高手吗? 急寻
  7. Collections.sort的使用
  8. PLECS软件学习使用(一)简单的RLC电路搭建
  9. 遥感影像处理有高招,“专治”各类花式并发的述求!
  10. 写给省选前的自己V2
  11. json 取值判断_对应后台传json ajax 获取值判断
  12. SAP License:SAP中的文本管理
  13. 几种web报表打印方案的比较
  14. 测试电脑电源是否正常的办法
  15. DSP28335学习笔记1
  16. Java用while求100以内奇数和
  17. 虎胆熊威2中文版体验
  18. vue 通过 Ctrl 、Shift 键 + 点击鼠标实现 div 多选操作
  19. 2020年6月电子学会Python等级考试试卷(三级)考题解析
  20. 服务器无法取消指令方块显示,我的世界服务器如何关掉命令方块的提示(如图)...

热门文章

  1. 乐事薯片:价格涨了,质量降了,年轻人的快乐没有了
  2. java加载顺序_类加载过程中几个重点执行顺序整理
  3. 嘎嘎好用的Vue虚拟键盘simple-keyboard
  4. 【综述专栏】陈恩红: 社交网络的信息传播分析及其应用
  5. Java 图片加水印
  6. 开启mysql服务注意事项
  7. “千亿市值”巨无霸的膨胀 腾讯靠什么撬动下一个1000亿美金?
  8. 群晖DS918+硬盘选择和阵列选择
  9. 理工生文言文的致谢——小木虫
  10. 人工智能数学基础---定积分5:使用分部积分法计算定积分