首页 > 其他分享 >USB协议详解第24讲(USB包-控制传输包详解)

USB协议详解第24讲(USB包-控制传输包详解)

时间:2024-10-29 11:12:24浏览次数:4  
标签:24 事务 USB 主机 详解 数据传输 请求 数据 设备

1.控制传输包结构

控制传输由三个阶段组成,设置阶段可选的数据阶段状态阶段,其中设置阶段由1个SETUP事务组成,数据阶段由0个或者多个IN/OUT事务组成,状态阶段由1个IN/OUT事务组成,其中每个阶段事务包结构有所不同,下图可以直观看出控制传输写传输的包结构组成。

2.设置阶段包详解

设置阶段由1个设置事务组成,SETUP事务由SETUP令牌包DATA0数据包ACK握手包组成。如下图所示。

2.1 SETUP令牌包

从上图可以知道SETUP PID为1101B,则补码校验为0010,在链路上传输先低后高则为,1011_0100(0xB4),下图为SETUP包的链路波形图。

2.2 DATA0 数据包

从上图可以知道DATA0 PID为0011B,则补码校验为1100,在链路上传输先低后高则为,1100_0011(0xC3),下图为DATA0数据包的链路波形图。

Setup Data就是DATA0数据包里面的8个字节的数据Data,包含主机的很多设置信息(数据传输方向、数据类型、目标类型、附加数据、数据阶段传输的数据长度等等),这8个字节含义如下,我们一一解析。

2.2.1 bmRequestType(向谁请求)

D7:传输方向

  • 0 = 主机至设备;
  • 1 = 设备至主机;

D6..5:命令类型

  • D6D5=00:标准请求命令;
  • D6D5=01:类请求命令;
  • D6D5=10:用户定义命令;
  • D6D5=11:保留。

D4..0:接受者类型

  • 0=设备;
  • 1=接口;
  • 2=端点;
  • 3=其它
  • 4-31 保留

这个域表明此请求的特性。特别地,这个域表明了第二阶段控制传输方向。如果wLength域被设作0的话,表明没有数据传送阶段,那Direction位就会被忽略。

USB说明定义了一系列所有设备必须支持的标准请求,这些请求见下面表。另外,一个设备类可定义更多的请求,设备厂商也可定义设备支持的请求。

请求可以到设备、设备接口、设备端结点(endpoint)上。当指定的是接口或端点(endpoint)时,wIndex域指出哪个接口或端点。

2.2.2 bmRequest(什么请求)

此字段指定特定的请求类型,bmRequestType****字段中的TypebmRequest可组合出不同设置,不能的设置,wValue、wIndex、wLength不同,不同设置数据阶段返回的数据含义也不同。

bmRequest请求类型表。

描述符类型表。

2.2.3 wValue

此域用来传送当前请求的参数,随请求不同而变。

2.2.4 wIndex

该字段的内容根据请求而有所不同。它用于将参数传递给设备,特定于请求。

当bmRequestType的Recipient字段为接口或端点时,wIndex域用来表明是哪一个接口或端结。

下图显示了用于指定端点时的wIndex格式。

Direction位(bit7)设置为0表示指定端点为OUT端点,设置为1表示指定端点为IN端点。

图9-3显示了用于指定接口时的wIndex格式.

2.2.5 wLength

wLength表明第二阶段的数据传输长度,第二阶段的数据传输方向由bmRequstType的Direction位指出。wLength域为0则表明无数据传输。在输入请求下,设备返回的数据长度不应多于wLength(但是可以少于),在输出请求下,wLength指出主机发出的真实的数据量。如果主机发送多于wLength的数据,设备会作出未知响应。

2.3 ACK数据包

3.可选的数据阶段包详解

数据阶段由0个或者多个IN/OUT事务组成。

3.1 如果第一阶段指定数据传输方向为设备到主机

如果第一阶段指定读(传输方向为设备到主机),则数据阶段会由连续的多个IN事务组成,事务和包协议结构如下图。

3.2 如果第一阶段数据传输方向为主机到设备(数据长度大于0)

如果第一阶段指定写(传输方向为主机到设备),则数据阶段会由连续的多个OUT事务组成,事务和包协议结构如下图。

3.3 如果第一阶段数据传输方向为主机到设备(数据长度为0)

如果第一阶段指定数据传输方向为主机到设备,并且长度为0,则无第二数据阶段,事务和包协议结构如下图。。

4.状态阶段包详解

状态阶段由1个OUT/IN事务组成。

4.1 如果第二阶段指定数据传输方向为设备到主机

如果第二阶段指定数据传输方向为设备到主机,则主机接收完毕数据后,主机请求一个OUT事务告诉设备数据的接收状态。

4.2 如果第二阶段指定数据传输方向为主机到设备(数据长度大于0)

如果第二阶段指定数据传输方向为主机到设备,则主机发送完毕数据后,主机请求一个IN事务请求设备数据接收状态。

4.3 如果第二阶段指定数据传输方向为主机到设备(数据长度为0)

如果第二阶段指定数据传输方向为主机到设备,请求传输数据长度为0,则主机发送完令牌包后,主机请求一个IN事务请求设备数据接收状态。

标签:24,事务,USB,主机,详解,数据传输,请求,数据,设备
From: https://www.cnblogs.com/linhaostudy/p/18512554

相关文章

  • ja-netfilter无法激活2024.2版本的问题
    内容节选自:@lzskylineJetBrains新版本2024.2在设置里添加了区域选择,具体在:Appearance&Behavior->SystemSettings->LanguageandRegion->Region中设置。如果你选择ChinaMainland将会有一个比较坑的地方:激活许可验证走account.jetbrains.com.cn这个域名,而不是默认......
  • GaussDB 24
    GaussDB介绍华为自主创新研发的分布式关系型数据库。该产品具备企业级复杂事务混合负载能力,同时支持分布式事务,同城跨AZ部署,数据0丢失,支持1000+的扩展能力,PB级海量存储。同时拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定......
  • MobileNetv1网络详解
    背景:传统卷积网络,内存需求大、运算量大导致无法在移动设备以及嵌入式设备上运行MobileNet网络是由Google团队在2017年提出的,专注于移动端或者嵌入式设备中的轻量级CNN网络。相比于传统卷积神经网络,在准确率小幅降低的前提下大大减少了模型参数与运算量。(相比于VGG16准确率减......
  • CNCC2024:网易伏羲主题分论坛圆满落幕,专家共论推动产学研深度融合
    10月26日,为期三天的2024中国计算机大会(CNCC2024)在浙江省东阳市横店镇圆明新园顺利落下帷幕。本届大会以“发展新质生产力,计算引领未来”为主题,吸引了数万名计算领域专业人士参会。本次大会邀请到了17位国内院士,800余位国内外顶尖学者、企业技术精英,通过特邀报告、大会论坛以及138......
  • ArkTS 的内存空间详解:从 SemiSpace 到 HugeObjectSpace
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。引言ArkTS作为鸿蒙系统的开发语言,提......
  • USB通信
    相关工具BusHoundHidLib.dll通过百度网盘分享的文件:通信链接:https://pan.baidu.com/s/1hsiSaMz0IW2TbnPWUT9-aA提取码:fvkt动态库功能:枚举USB设备信息(设备路径、厂商id、产品id和设备序列号)根据设备路径,打开和关闭USB设......
  • ArkTS 编程语言中的垃圾回收模型:分代式 GC 详解
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。引言垃圾回收(GC)是现代编程语言中重要......
  • DC/DC直流电源升压可调电压控制输出模块12v24v供电0-5v/0-10v转0-50v/80v/100v/110v/1
    特点效率高达75%以上1*2英寸标准封装单电压输出可直接焊在PCB上工作温度:-40℃~+75℃阻燃封装,满足UL94-V0要求温度特性好电压控制输出,输出电压随控制电压线性变化应用GRB系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为:4.5~9V、9~18V、18~36V及36~7......
  • 抖音中aBogus签名算法的纯Python代码实现(2024年10月)
    目前网上的aBogus签名算法都是用python里execjs来执行js代码计算的,这种方法虽然可以达到计算签名值的结果,但是性能不高。本文直接将aBogus的js的源码改成python代码,同样的参数,计算的结果和js版本一样。附python源码importjsonfromrandomimportchoicefromrandomimport......
  • IntelliJ IDEA 2024中文激活安装包 IntelliJ IDEA 2024注册码下载 Mac+win
    IntelliJIDEA2024是由JetBrains公司开发的一款功能强大的Java集成开发环境(IDE)。它支持多种编程语言,如Java、Kotlin、Scala等,并提供智能代码补全、实时错误检查、代码重构等高效开发工具。IntelliJIDEA2024还引入了改进的用户界面和增强的性能,优化了开发者的工作体验,支持多种......