USB系列四:USB数据传输类型(重要)

news2025/2/22 12:02:38

本章包括知识点如下,也是学习USB比较重要的一部分。

USB的块传输方式

USB的中断传输方式

USB的同步传输方式

USB的控制传输方式

USB3.0与USB2.0数据传输对比

USB总线技术协议具有极大的灵活性,可以针对不同的应用场合需求来采用最适合的数据传输方式。USB标准中规定了4种传输类型,分别为块传输、中断传输、同步传输和控制传输。设计者可以根据传输数据量的大小、传输速率的高低、容错性以及对实时性的要求来进行选择。本章便主要介绍USB的数据传输,以及USB块传输、USB中断传输、USB同步传输和USB控制传输的实现。USB数据传输概述

USB数据传输是一个比较复杂的协议过程,需要软件、驱动程序和硬件的配合。典型的USB数据传输,如下图所示。首先,我们来分析一下USB数据传输所涉及的几个主要部分。

从协议处理的角度来看,数据编码、解码及传输是由各个程序及驱动程序来完成的,

主要包括如下4个部分:

USB主机程序:用户直接操作的程序,往往具有人机交互界面。但有些场合也可以没有人机交互界面的USB主机程序,例如标准USB鼠标和标准USB键盘。

USB总线驱动程序:负责USB主机程序的请求响应。

USB主控制器驱动程序:处理USB数据传输的事务处理。

USB功能设备程序:负责USB设备的核心功能实现。

从硬件处理的角度来看,USB数据编码、解码及数据传输是由多个USB芯片来完成的,主要包括如下3类芯片:

USB主控制器芯片:集成在计算机主板上,负责USB主机的功能实现。

USBHUB芯片:往往集成在计算机主板上,或者也可以由外置USBHUB来实现,负责扩展USB接口数量。

USB功能设备芯片。集成在用户所使用的USB设备中,是完成USB数据传输的核心器件。

完整的USB数据传输是上述程序与硬件的合理分工协作来完成的。当USB设备连接到USB总线之后,USB设备便可以在软件及硬件的支持下实现与USB主机的高速数据通信。

USB的数据传输类型

在USB总线接口技术协议中,共支持面向用户的数据传输类型:控制传输(ControlTransfer)、块传输(BulkTransfer)、中断传输(InterruptTransfer)和同步传输(IsochronousTransfer)。这4种数据传输类型在端点类型、数据包长度、传输速率的高低以及实时性要求等方面有各自的特点,如表6.1所示。用户可以根据实际场合的需求来选择合适的数据传输方式。例如,对于USB鼠标和键盘,要求对每一次用户操作都能够及时给予响应,因此可以采用中断传输;而对于视频播放设备,要求对实时性好,因此可以采用同步传输。

一、USB块传输

USB块传输(BulkTransfer)是USB接口协议中最重要的一种数据传输方式,可以用于全速、高速和超速USB设备。USB块传输适合于传输大量的数据,要求传输的正确性,但对传输时间、传输速率和实时性均无要求。一般来说,USB块传输常应用于数据采集卡、USB打印机、USB扫描仪等设备,因为这些设备要求必须保证数据传输的正确性,但对传输速率并没有非常严格的要求,这正是USB块传输的优势。

1、USB块传输方式

在USB总线接口技术协议中,USB块传输采用了灵活的传输机制,保证了在发送大量数据的同时而不会堵塞USB总线。可以从总线带宽紧张和空闲两个角度来分析:

当USB总线带宽紧张的时候,USB块传输会自动为其他传输类型让出自己所占用的帧/小帧时间。此时,USB块传输自身的数据传输将被延迟。这时,块传输的传输速率比较低、占用的传输时间长。

当USB总线空闲的时候,USB块传输将可以更多地使用总线带宽。这时,块传输的传输速率比较高、占用的传输时间短。正是由于USB块传输的这种机制,导致其传输时间和传输速率得不到保障。但是USB块传输通过差错控制和重试机制可以保证数据传输的正确性和可靠性。

2、块传输的数据包长度

在USB总线接口技术协议中,通过块端点描述符中的wMaxPacketSize字段来指定USB块传输所采用的最大数据包长度。而不同的端点,所支持的最大数据包长度是不同的。

对于全速端点,最大数据包长度可以是8字节、16字节、32字节或者64字节。

对于高速端点,最大数据包长度只能为512字节。

对于超速端点,最大数据包长度最大为1024字节。

如果在某一次数据上传或者下传中,USB块传输的数据量大于块端点所支持的最大数据包长度,那么USB主控制器将会把该传输分成多个块事务处理,每个块事物具有指定的数据包长度。此时,前面的每个块数据的长度为最大长度,最后一个块事务负责传输剩余的数据,其长度可以小于或者等于最大长度。

3、块事务处理

USB块传输中将一次数据传输划分为多个块事务进行处理,而一个完整的USB块事务处理过程包括令牌、数据和握手3个阶段,如图6.2所示。每个阶段的主要功能如下:

令牌阶段:最主要是规定了数据传输的方向,IN或者OUT。

数据阶段:包含了上传或下传的数据包。

握手阶段:用于在数据传输的末尾,报告本次数据传输的状态。

对于用户来说,可以操作的块事务处理对象是块端点(EP)。块事务处理端点是单向的,一个端点要么是IN端点,要么是OUT端点。但是,USB协议允许可以使用多个端点。例如,如果使用两个端点,一个IN块端点用于USB主机接收数据,另一个OUT块端点则可以用于USB主机发送数据。

二、USB中断传输

USB的中断传输(InterruptTransfer)可用于低速、全速、高速和超速设备。USB中断传输适用于传输少量或者中量的数据,要求具有固定的事务处理周期。一般来说,USB中断传输常应用于USB鼠标、USB键盘等HID人机交互设备中,因为这些设备要求响应快,具有固定的事务处理周期,但对数据的需求比较低,这正是USB中断传输的优势。

1、USB中断传输方式

在USB总线接口技术协议中,USB中断传输采用了固定的传输机制。USB总线为中断传输特意保留了总线带宽,这样可以保证USB中断传输具有固定的事务处理周期和快速的响应时间。但是,预留的总线带宽不能太多,否则将影响其他传输类型的传输效率。另外,USB总线并不是采用固定的传输速率来完成的。

正是由于USB中断传输的这种机制,导致其不能传输大量的数据。USB协议中还使用差错控制和重试机制来确保中断传输的正确性和可靠性。

2、中断传输的数据包长度

在USB总线接口技术协议中,通过中断端点描述符中的wMaxPacketSize字段来指定USB中断传输所采用的最大数据包长度。而不同的端点,所支持的最大数据包长度是不同的。

对于低速端点,最大数据包长度必须小于等于8字节。

对于全速端点,最大数据包长度必须小于等于64字节。

对于高速端点,最大数据包长度必须小于等于1024字节。对于超速端点,最大数据包长度必须小于等于1024字节。

如果在某一次数据上传或者下传中,USB中断传输的数据量大于中断端点所支持的最大数据包长度,那么USB主控制器将会把该传输分成多个中断事务处理,每个中断事物具有指定的数据包长度。此时,前面的每个中断数据的长度为最大长度,最后一个中断事务负责传输剩余的数据,其长度可以小于或者等于最大长度。

3、中断事务处理

USB中断传输中将一次数据传输划分为多个中断事务进行处理,而一个完整的USB中断事务处理过程包括令牌、数据和握手3个阶段,如图6.5所示。每个阶段的主要功能如下:

令牌阶段:最主要是规定了数据传输的方向,IN或者OUT。

数据阶段:包含了上传或下传的数据包。

握手阶段:用于在数据传输的末尾,报告本次数据传输的状态。

对于用户来说,可以操作的中断事务处理对象是中断端点(EP)中断事务处理端点是单向的,一个端点要么是IN中断端点,要么是OUT中断端点但是,USB协议允许可以使用多个端点。例如,如果使用两个端点,一个IN中断端点用于USB主机接收数据,另一个OUT中断端点则可以用于USB主机发送数据。

三、USB同步传输

USB同步传输(IsochronousTransfer)是USB接口协议中林一个重要的数据传输方式,可以用于全速、高速和超速USB设备。USB同步传输适合于传输大量的、速率恒定的、且对服务周期有要求的数据,但对正确性没有十分严格的要求。一般来说,USB同步传输常应用于音频和视频类设备,如MP3、VCD和DVD等音视频播放设备,因为这些设备需要实时性比较好,也就是数据必须及时发送和接收,而对数据的正确性可以有一定的容忍。

1、USB同步传输方式

在USB总线接口技术协议中,USB同步传输与USB中断传输有点类似,同样采用了保留总线带宽的方式。这样,通过在USB总线上保留同步传输的总线带宽,可以保证同步传输能在每帧/小帧中都能得到服务。也就是说,同步传输的传输速率是非常准确的。因此,USB同步传输时间是确定的、可以预测的。

在USB同步数据传输过程中,发送方连续不断地发送数据,接收方则连续不断地接收数据。在整个数据传输过程中,没有表征本次数据传输的状态握手阶段。

但是由于固定了传输速率,那么USB同步传输取消了差错控制和重试机制,这样将导致数据的正确性无法得到保障。因此,对于用户来说,要根据实际的应用场合来谨慎选择USB同步传输方式

2、同步传输的数据包长度

在USB总线接口技术协议中,通过同步端点描述符中的wMaxPacketSize字段来指定USB同步传输所采用的最大数据包长度。而不同的端点,所支持的最大数据包长度是不同的。

对于全速端点,最大数据包长度必须小于等于1023字节。

对于高速端点,最大数据包长度必须小于等于1024字节,且高速带宽端点可在每小帧中进行2个或3个高速同步事务。

对于超速端点,最大数据包长度必须小于等于1024字节,且超速带宽端点可在每小帧中进行2个或3个超速同步事务。

如果在某一次数据上传或者下传中,USB同步传输的数据量大于同步端点所支持的最大数据包长度,那么USB主控制器将会把该传输分成多个同步事务处理,每个同步事物具有指定的数据包长度。此时,前面的每个同步数据的长度为最大长度,最后一个同步事务负责传输剩余的数据,其长度可以小于或者等于最大长度。USB设备中默认同步端点最大数据包长度为0字节,因此如果需要使用非零的数据包长度,可以通过设备配置的方式来实现。

3、同步事务处理

USB同步传输中将一次数据传输划分为多个同步事务进行处理,而一个完整的USB同步事务处理过程包括令牌和数据两个阶段,而没有握手阶段,如图6.8所示。每个阶段的主要功能如下:

令牌阶段:最主要是规定了数据传输的方向,IN或者OUT。

数据阶段:包含了上传或下传的数据包。

对于用户来说,可以操作的同步事务处理对象是同步端点(EP)。同步事务处理端点是单向的,一个端点要么是IN端点,要么是OUT端点。但是,USB协议允许可以使用多个端点。例如,如果使用两个端点,一个IN同步端点用于USB主机接收数据,另一个OUT同步端点则可以用于USB主机发送数据。

五、USB控制传输

USB控制传输(ControlTransfer)是USB接口协议中最基本的一种数据传输方式,可以用于低速、全速、高速和超速USB设备。USB控制传输适合于传输少量的数据,严格要求传输的正确性,但对传输时间、传输速率和实时性均无要求。一般来说,USB设备必须支持USB控制传输方式

在USB上电时,任何USB设备都必须在端点0的缺省管道中支持控制传输。USB的系统软件通过该管道来访问USB设备的状态,并对其进行配置。例如,在USB设备连接到USB总线后,USB主机便通过端点0来获取USB设备的配置信息,同时还可以下载固件程序,这就是典型的USB控制传输。除了端点0以外,其他端点也可以支持控制传输。

1、USB控制传输方式

在USB总线接口技术协议中,同样为USB控制传输保留了一定的总线带宽。除此之外,USB主机控制器还可以为其动态地调整控制传输所需的帧/小帧时间,以确保USB控制传输能够尽快得到传输。

正是由于USB控制传输的这种机制,导致其传输数据量比较少。但是USB控制传输通过差错控制和重试机制可以保证数据传输的正确性和可靠性。

在现代的USB设计中,USB控制传输往往用作USB主机和USB设备之间的配置信息通信,包括设备的地址、设备描述符和接口描述符等。这正是USB控制传输的优势。当然,用户也可以进行一些自定义操作,用来传输数据量少的其他用途数据。

2、控制传输数据包长度

在USB总线接口技术协议中,通过控制端点描述符中的wMaxPacketSize字段来指定USB控制传输所采用的最大数据包长度。而不同的端点,所支持的最大数据包长度是不同的。

对于低速端点,最大数据包长度必须为8个字节;

对于全速端点,最大数据包长度可以选择8字节、16字节、32字节或者64字节;

对于高速端点,最大数据包长度其只能为64字节。

对于超速端点,最大数据包长度最大为512字节。

在USB设备上电时,USB主机的系统软件将首先通过控制传输读取设备描述符的前8个字节,从中获取其缺省控制端点0所支持的最大数据包长度。此后,在所有的控制事务中都将使用这个最大长度。在USB设备配置结束后,其余控制端点才能使用。

3、控制事务处理

USB控制传输同块传输、中断传输和同步传输不同,其采用了另外一种事务处理方式。USB控制传输的控制事务处理包含建立、数据和状态三个阶段,每个阶段都由特定的事务组成。控制事务处理的格式,如图6.11所示。

令牌阶段:USB主机采用SETUP事务向USB设备发送控制请求。

数据阶段:负责传输具有USB定义格式或设备类、供应商自定义格式的数据。

握手阶段:USB设备向主机报告控制事务建立阶段和数据阶段的传输结果。

对于用户来说,可以操作的控制事务处理对象是控制端点(EP)。控制事务处理端点是单向的,一个端点要么是IN端点,要么是OUT端点。但是,USB协议允许可以使用多个端点。例如,如果使用两个端点,一个IN控制端点用于USB主机接收数据,另一个OUT控制端点则可以用于USB主机向外发送数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1656213.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式链路追踪工具Sky walking详解

1,为什么要使用分布式链路追踪工具 随着分布式系统和微服务架构的出现,且伴随着用户量的增加,项目的体量变得十分庞大,一次用户请求会经过多个系统,不同服务之间调用关系十分复杂,一旦一个系统出现错误都可…

逆向中webpack需要补充的模块很多怎么办

如下面这种典型的形式 进入i找到加载器 找到加载器所在函数r,在 return e[a].call(c.exports, c, c.exports, r),打上断点。 在控制台打印e,会发现它总共有的模块,这些模块需要我们在别的webpack中复制,有时很多,很麻烦。 我们可以注入代码在…

性能优化的核心思路,纯干货分享!

前言 平时技术交流的时候,很多同学都会问一些性能优化方面的问题。 比如: 有一张订单表为了保持订单记录,更新数据时不能删除,需要打算加上版本号,查询时取版本号最新的给前端,还有场景是查询订单历史给前…

AI日报|Stack Overflow和OpenAI达成合作,Apple正在为数据中心开发人工智能芯片...

欢迎大家在 GitHub 上 Star 我们: 分布式全链路因果学习系统 OpenASCE: https://github.com/Open-All-Scale-Causal-Engine/OpenASCE 大模型驱动的知识图谱 OpenSPG: https://github.com/OpenSPG/openspg 大规模图学习系统 OpenAGL: https://github.com/TuGraph-…

自注意力架构大成者_Transformer(Pytorch 17)

1 模型简介 在上节比较了 卷积神经网络(CNN)、循环神经网络(RNN)和 自注意力(self‐attention)。值得注意的是, 自注意力同时具有并行计算和最短的最大路径长度这两个优势。因此,使…

linux 性能监控命令之dstat

1. dstat 系统默认为安装,直接安装阿里源后,yum install -y dstat安装即可,该命令整合了 vmstat , iostat 和 ifstat,我们先看下效果: 我们先看看具体参数: [rootk8s-master ~]# dstat --help …

解决ModuleNotFoundError: No module named ‘skfuzzy‘,这个库全名可不叫skfuzzy哦,否则直接报错!!

ModuleNotFoundError: No module named skfuzzy 在这里插入图片描述在这里插入图片描述如何解决 ModuleNotFoundError: No module named skfuzzy 的问题?skfuzzy 模块介绍什么是模糊C均值聚类?skfuzzy 的应用如何使用 skfuzzy 进行模糊聚类 结论 如何解决…

电子学会C/C++编程等级考试2024年03月(二级)真题解析

C/C++编程(1~8级)全部真题・点这里 第1题:满足条件的数的累加2 现有n个整数,将其中个位数为k的数进行累加求和 输入 第一行一个整数n。第二行n个非负整数,以空格分割,每个数不大于100000。第三行一个整数k。 输出 输出满足题目要求的累加和 样例输入 10 2 5 7 17 11 18 4…

YOLOv8独家改进:backbone改进 | 轻量化之王MobileNetV4 开源 | Top-1 精度 87%,手机推理速度 3.8ms,原地起飞!

💡💡💡创新点:轻量化之王MobileNetV4 开源 | Top-1 精度 87%,手机推理速度 3.8ms,原地起飞! MobileNetV4(MNv4),其特点是针对移动设备设计的通用高效架构。创新1):引入了通用倒瓶颈(UIB)搜索块,这是一个统一且灵活的结构,它融合了倒瓶颈(IB)、ConvNext、…

如何用mathtype7? MathType7数学公式编辑器使用图文教程2024最新

在我们的日常工作中,经常会使用和编辑到数学公式,那么我们该怎么编辑数学公式呢?今天我们就来看看 MathType7的使用方法 强大的MathType软件是一款适用于Windows和Mac的交互式方程编辑器,你可以为网页、出版物、说明以及TeX、LaT…

用HAL库改写江科大的stm32入门例子_1、按键控制led灯

使用STM32CubeMX生成Keil工程并完成流水灯 ,就不重复了:直接参考: 使用STM32CubeMX生成Keil工程并完成流水灯 进入主题,用中断实现,操作步骤如下: 1 如下图设置PB11 管脚 2 设置PB11为下降沿中断: 3 PA…

使用 electron-vite-vue 构建 electron + vue3 项目并打包

文章目录 一、使用 electron-vite-vue 构建 Vue3 项目1、创建项目并安装相关依赖2、安装依赖时报错 (operation not permitted) 二、项目打包1、执行打包命令2、下载失败处理3、手动方式下载后,将文件放至指定路径下4、打包成功后 参考资料 一、使用 electron-vite-…

Google Chrome浏览器便携增强版 v124.0.6367.61

01 软件介绍 Google Chrome v124.0.6367.61,这一版本经过精心设计,集成了一系列的功能增强和关键补丁,旨在提升用户体验。其中,Chrome引入了便携性数据保存选项,优化了标签页及标签栏的操作机制。此外,它还…

【Linux 性能详解】CPU性能篇

目录 平均负载(Load Average) CPU上下文切换 进程上下文切换 线程上下文切换 中断上下文切换 中断 硬中断 软中断 CPU使用率 性能分析工具 平均负载(Load Average) 平均负载?这个词对很多人来说&#xff0c…

参数化建模系列-cityengine篇之:如何基于GIS数据快速构建道路三维建模模型

结合上期介绍的基于GIS数据自动化构建城市三维建筑模型,本期在上期的知识点上继续介绍道路模型的自动化构建方法。 数据获取 本期道路自动化建模从获取道路数据开始。 首先打开“QuickOSM”插件,在“Key”中选择“highway”;其次选择数据范…

AI智能化逐渐趋于成熟后,预测今后最吃香的开发职业

AI智能化正在成熟的路途中,这中间会有波折,但终有一天会来的,我相信等到了这一天,我们的开发效率和代码质量,将会大大不同,而我们的团队与个人,也会面临着很棒的体验。 那么在AI智能化真正趋于成…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-15-GPIO中断控制实验

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

Failed to build flash-attn:ERROR: Could not build wheels for flash-attn

安装 FlashAttention 的时候遇到报错: Failed to build flash-attn ERROR: Could not build wheels for flash-attn, which is required to install pyproject.toml-based projects可能是安装的版本与环境存在冲突吧,我的环境是: python 3.1…

域控安全 ----> Ntds.dit文件抓取

大家还记得内网渗透的初衷吗??? 找到域馆,拿下域控!! 拿下了域控就是拿下了整个域!! 但是大家知道拿下域环境之后应该怎么操作吗(灵魂拷问)??? …

【WEEK11】 【DAY3】员工管理系统第四部分【中文版】

2024.5.8 Wednesday 接上文【WEEK11】 【DAY2】员工管理系统第三部分【中文版】 目录 10.5.展示员工列表10.5.1.修改dashboard.html10.5.2.新建EmployeeController.java10.5.3.新建emp文件夹,将list.html移动至该文件夹10.5.4.重启并检查10.5.5.提取公共页面&#x…