首页 > 其他分享 >USB协议详解第26讲(USB包-批量传输包详解)

USB协议详解第26讲(USB包-批量传输包详解)

时间:2024-10-30 10:32:35浏览次数:1  
标签:26 USB 批量 主机 应答 传输 详解 数据包 设备

1.批量传输包结构

批量传输由一个或多个批量事务组成,每一个批量事务具有令牌包、数据包、握手包,如图下所示。批量事务类型的特点是能够通过错误检测和重试来保证主机和设备之间数据的无错误传递。 需要理解和注意以下点。

(1)当主机准备接收批量数据时,它发出IN令牌,设备端点通过返回数据包或(如果无法返回数据)NAK或STALL握手来响应主机。 NAK表示设备暂时无法返回数据,而STALL表示端点永久停止。 如果主机收到 一个有效的数据包,它用ACK握手来响应。如果主机在接收数据时检测到错误,则不会向设备返回握手包

(2)当主机准备发送批量数据时,它首先发出一个OUT令牌包,然后是一个数据包。 如果设备接收数据包时没有错误,则设备将返回三个(或四个,包括NYET,用于高速操作的设备)握手中的一个。

  • ACK:表示没有错误,并通知主机它可以发送下一个数据包。
  • NAK:表示接收数据没有错误,但是主机应该重新发送数据,因为有可能设备处于临时条件拒绝接受数据(例如缓冲区满)。
  • STALL:如果端点被停止,则返回STALL以指示主机不应该重试传输,表示设备可能存在错误。
  • NYET:只用在高速设备中,表示设备没有准备好数据。
  • Error:如果收到的数据包带有CRC或位错误,则不返回握手。

(3)PING令牌包只能用于高速运行的设备,主机主要用它来查询设备当前的状态。

2.批量传输DATAx数据包实现同步操作

批量传输使用数据包切换实现同步操作,就是通过数据DATA0包和DATA1包的切换来实现主机和设备传输错误检测以及重发机制。

2.1.正确数据传输同步原理

初始在发送数据之前,假设主机和设备状态都是0。

主机会根据当前状态先发送DATA0类型数据包给设备,当设备正确收到数据包后会对自己的状态进行反转(变为1),并给主机发送应答数据包,当主机正确接收到应答包后会对自己的状态进行反转(变为1)。

如果还需要发送数据包,则主机会发送DATA1类型的数据包(根据自己的当前状态为1决定的),当设备收到正确收到数据包后会进行对自己的状态进行反转(变为0),并给主机发送应答数据包,当主机正确接收到应答包后会对自己的状态进行反转(变为0)。

正确数据传输机制如下图。

2.2数据被破坏的传输原理(重传机制)

初始在发送数据之前,假设主机和设备状态都是0。

机制就是初始在发送数据之前,主机和设备状态都是0,主机会先发送DATA0类型数据包给设备,当设备发现数据存在问题后不会对自己的状态进行切换并给主机发送非应答数据包,当主机接收到非应答数据包后,不会对自己的状态进行切换。

主机会在适当的时刻对DATA0数据包进行重传(Retry),直到设备接收正常,设备发现数据包正常了会把自己的状态进行反转,并返回应答数据包,主机在收到应答包后会反转自己的状态。

数据被破坏的检测和重传机制如下图。

2.3应答包故障的传输原理

初始在发送数据之前,假设主机和设备状态都是0。

主机会先发送DATA0类型数据包给设备,当设备正确收到数据包后会进行对自己的状态进行反转为1,并给主机发送应答数据包,但是,但是应答包在链路上出故障了,怎么办?当主机收到一个校验有问题应答包,主机不会对自己的状态进行反转,主机该怎么办?往下看。

主机会在合适的时间对DATA0数据包进行重发,但是当前设备的状态是1,因此设备会忽略该数据包并保持现在的状态,然后设备会给主机重新在发送一次应答包,当主机正确收到设备的应答包后对自己的状态进行反转。

当还需要发送数据包时,主机会根据自己当前的状态(假设为1),会发送DATA1数据包,设备在正确收到DATA1数据包后,会对自己的状态进行反转,并给主机发送应答数据包,当主机正确接收到应答包后会对自己的状态进行反转。

应答包故障的传输机制如下图。

3.批量传输包详解

首先介绍下批量传输低速、全速、高速数据包最大长度大小,如下图,我们可以看到批量传输不支持低速传输

3.1批量读

3.1.1批量读抓包

读163字节,因为是全速设备(Full Speed),所以批量传输需要分3个事务才可以传输完毕,每一个事务最大传输64字节,因为上一次传输最后的数据包PID为DATA0,所以此传输第一个事务的数据包PID为DATA1,下面两个数据包PID依次为DATA0、DATA1。

3.1.2批量读包结构实例

假设上一次批量传输最后一次以PID为DATA0数据包的批量事务结束。

3.1批量写

3.1.1批量写抓包图

批量写和批量读相反,批量写主机使用OUT令牌包,抓包图参考批量读,这里不再贴图。

3.1.2批量写包结构实例

假设上一次批量传输最后一次以PID为DATA0数据包的批量事务结束。

标签:26,USB,批量,主机,应答,传输,详解,数据包,设备
From: https://www.cnblogs.com/linhaostudy/p/18515306

相关文章

  • 【C语言】预处理(预编译)详解(下)(C语言最终篇)
    文章目录一、#和##1.#运算符2.##运算符二、预处理指令#undef三、条件编译1.单分支条件编译2.多分支条件编译3.判断符号是否被定义4.判断符号是否没有被定义四、头文件的包含1.库头文件的包含2.本地头文件的包含3.嵌套包含头文件的解决方法使用条件编译指令使用预处理......
  • MobileNetv2网络详解
    背景:MobileNetv1中DW卷积在训练完之后部分卷积核会废掉,大部分参数为“0”MobileNetv2网络是由Google团队在2018年提出的,相比于MobileNetv1网络,准确率更高,模型更小网络亮点:InvertedResiduals(倒残差结构)LinearBottlenecks倒残差结构:ResidualBlock:ResNet网络中提出......
  • 帝国CMS中打印模板制作教程详解
    调用打印页面链接:模板中添加打印页面链接:[!--news.url--]e/DoPrint/?classid=[!--classid--]&id=[!--id--]指定使用打印模板的链接:[!--news.url--]e/DoPrint/?classid=[!--classid--]&id=[!--id--]&tempid=打印模板ID管理打印模板:登录后台,选择“模板......
  • 数据结构————map,set详解
    今天带来map和set的详解,保证大家分清楚一,概念map和set是一种专门用来搜索的容器或数据结构map能存储两个数据类型,我们称之为<key-value>模型set只能存储一个数据类型,我们称之为纯<key>模型它们的效率都非常非常高,我们来一个一个了解。二,详解map1,map的说明map是一个接......
  • 2024.10.26 2024 CCPC哈尔滨站
    Solved:6/13Penalty:635Rank:72Rank(ucup):170打到后面困了(而且不会L心态爆炸)睡觉去了,不然还能多做个E题(被L单防了啊。。CGKM:签到,不放了。J.NewEnergyVehicle$n$种汽油,$m$个加油站,每个加油站只能加一种油,每种油都是一单位能走一公里,求最远能走多少公里。$n,m\leq......
  • hosts.allow与hosts.deny详解
    概述在Linux系统中,hosts.allow和hosts.deny都属于TCPWrappers的一部分,用于控制服务的访问权限。不过它们的应用方式有所不同:默认情况下,这两个文件都不会主动限制任何访问。也就是说,如果hosts.allow和hosts.deny文件中都没有任何规则配置,系统会默认允许所有连接......
  • 9.26
     <template> <div>  <el-cardclass="box-card">   <divslot="header"class="clearfix">    <span>生产计划流程</span>   </div>   <el-steps:active="activeStep&qu......
  • 3D Gaussian Splatting代码详解(一):模型训练、数据加载
    1模型训练deftraining(dataset,opt,pipe,testing_iterations,saving_iterations,checkpoint_iterations,checkpoint,debug_from):first_iter=0#初始化高斯模型,用于表示场景中的每个点的3D高斯分布gaussians=GaussianModel(dataset.sh_degree)......
  • DRAM的工作原理详解
    DRAM(DynamicRandomAccessMemory,动态随机存储器)是一种常用的半导体存储器类型,具有高密度、低成本和快速访问等特点。它用于计算机内存中,以存储数据和指令。了解DRAM的工作原理可以帮助我们理解它如何处理读写数据。DRAM基本结构DRAM是基于电容器和晶体管结构的。每个DRAM存......
  • 模二除法详解
    模二除法(Modulo-2Division)是一种特殊的除法运算,用于计算二进制数据的CRC校验码。这种运算与普通的除法类似,但区别在于它使用不进位的异或运算来代替普通除法中的减法操作。模二除法的结果为二进制余数,应用在校验过程中以检验数据完整性。模二除法的基本规则模二除法的每一......