USB 传输方式(控制)
USB 控制传输方式
- 控制传输的特点
- 控制传输的过程
- 建立过程
- 数据过程(可选)
- 状态过程
- 建立过程
- 控制传输示例图
- USB控制读
- USB控制写
- USB无数据控制写
- USB控制传输抓包分析
- 读数据-USB控制传输抓包分析
- 写数据-USB控制传输抓包分析
- 无数据-USB控制传输抓包分析
控制传输是一种特殊的传输方式。当USB设备初次连接主机时,用控制传输传送控制命令等对设备进行配置。同时设备接入主机时,需要通过控制传输去获取USB设备的描述符以及对设备进行识别,在设备的枚举过程中都是使用控制传输进行数据交换。
控制传输的特点
控制传输相对于其它三个传输方式比较复杂,且具有以下特点:
- 无论低速设备还是高速设备都可以使用控制通道。
- 高速模式的最大包长固定为64个字节;
- 全速模式可在8、16、32、64字节中选择;
- 低速模式的最大包长固定为8个字节。
- 超高速USB3.0控制端点有固定的最大控制传输的数据有效载荷为 512 字节,最大突发大小为 1.
- 控制传输的应用场合:主要应用于设备的枚举过程(如读取设备描述符,设置地址,设置配置等)和对数据准确性要求较高的场合。
控制传输最大包长度
控制传输的过程
控制传输分为三个过程:
- 建立过程
- 数据过程(可选)
- 状态过程。
建立过程
- 主机发送令牌包:SETUP
- 主机发送数据包:DATA0
- 设备返回握手包: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 传输方式(控制)相关推荐
- USB 传输方式(数据传输方式分类及带宽占用率对比)
USB 数据传输方式分类及带宽占用率对比 控制传输 同步传输 中断传输 批量传输 USB传输有四种传输类型使用的事务类型各不相同.其中批量传输.同步传输每次传输需要一个或多个事务,中断传输每次传输只需 ...
- USB 传输方式(同步、等时)
USB 同步.等时传输方式 同步传输的应用场合 同步传输的特点 同步传输的事务 USB同步/等时传输方式抓包分析 读数据 等时传输也有"同步传输"的叫法,一般用于要求数据连续.实时 ...
- usb:认识usb传输(一)
文章目录 一.usb发展背景 1. usb特点 2. usb发展 1.更名 2.发展 3.传输速度 4.usb编/解码方式 --反向不归零(NRZI):位填充 5.信号传输状态 5.帧 6.通讯过程划 ...
- USB协议详解第12讲(USB传输-初探)
目录 1.USB传输.事务.包的关系 2.USB传输类型 2.1控制传输 2.2同步传输 2.3批量传输 2.4中断传输 3.传输总结及后期内容 1.USB传输.事务.包的关系 USB传输.事务.包是 ...
- Android设备间USB传输(OTG)
1. USB概述 为了统一电脑和外围设备的接口标准,方便用户使用以及端口扩展,Intel和USB-IF组织于1994年开始开发一个通用总线标准-- USB(Universal Serial Bus), ...
- 详细介绍!Linux 上几种常用的文件传输方式
点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 责编:乐乐 来源:https://dwz.cn/VWIHhsOw 昨天发布一篇Linux文章( ...
- UDP/TCP网络传输方式
网络传输方式 1.面向无连接型: 不要求建立和断开连接,发送端可于任何时候自由发送数据. 反之, 接收端也永远不知道自己会在何时从那里接收到数据. 因此, 面向无连接的情况下, 接收端需要时常确认是否 ...
- usb 系统消息_别让 USB 传输速度影响 Android 开发效率
概览 迭代速度是构建高质量 Android 应用的关键要素.处理的速度越快,应用程序的体验就越顺畅.这篇文章将和大家聊聊如何优化部署时间. 部署 101 在 Android Studio 3.5 中, ...
- sock 文件方式控制宿主机_基于嵌入式Linux系统实现YAFFS2文件系统存储方案的设计...
随着嵌入式技术的不断发展,嵌入式系统的应用越来越广泛,人们对于嵌入式系统功能的要求也越来越高,相应地其大容量数据存储和管理变得越来越重要.相对硬盘而言,FLASH等非易失性存储器具有体积小.功耗低.成 ...
最新文章
- 3.Git的基本操作
- sqlserver 新建只读权限用户
- 论文研读:Automatic Temporal Segment Detection and Affect Recognition From Face and Body Display
- Android ramdisk.img system.img userdata.img 介绍与使用
- 《算法竞赛进阶指南》打卡-基本算法-AcWing 97. 约数之和:递归、快速幂
- 台式计算机如何连接vif,关于计算机二级( VIF ) 县城有高手吗? 急寻
- Collections.sort的使用
- PLECS软件学习使用(一)简单的RLC电路搭建
- 遥感影像处理有高招,“专治”各类花式并发的述求!
- 写给省选前的自己V2
- json 取值判断_对应后台传json ajax 获取值判断
- SAP License:SAP中的文本管理
- 几种web报表打印方案的比较
- 测试电脑电源是否正常的办法
- DSP28335学习笔记1
- Java用while求100以内奇数和
- 虎胆熊威2中文版体验
- vue 通过 Ctrl 、Shift 键 + 点击鼠标实现 div 多选操作
- 2020年6月电子学会Python等级考试试卷(三级)考题解析
- 服务器无法取消指令方块显示,我的世界服务器如何关掉命令方块的提示(如图)...