当前位置: 首页 > news >正文

第一章 USB应用笔记之USB初步了解

USB应用笔记之USB初步了解


文章目录

  • USB应用笔记之USB初步了解
  • 前言
  • USB的优点:
  • USB版本发展
  • USB速度以及电气接口
  • USB传输过程
  • USB开发抓包工具:
  • USB传输方式
    • 1.控制传输特点:
    • 2.中断传输的特点
    • 3. 批量传输的特点
    • 4.实时传输(同步传输)的特点
  • USB通信特点 :
  • USB产品设计流程


前言

USB的优点:

  1. 通用性强:USB是一种通用的接口标准,几乎所有的计算机、移动设备以及外部设备都支持USB接口。这意味着您可以使用USB连接各种设备,如打印机、键盘、鼠标、摄像头等,而不需要为每个设备购买特定的接口线。
  2. 热插拔功能:USB支持热插拔,即在不关闭电源的情况下插拔USB设备。这意味着您可以随时连接和断开USB设备,方便快捷,无需重启计算机。
  3. 数据传输速度快:USB接口支持高速数据传输,可以实现快速的文件传输和数据备份。USB
    3.0标准可以提供更高的传输速度,达到5Gbps(超过600MB/s),比之前的USB 2.0标准快10倍。
  4. 电力供应功能:USB接口可以为连接的设备提供电力供应,不需要额外的电源适配器。这使得许多小型设备(如手机、平板电脑、无线耳机等)可以直接通过USB接口充电。
  5. 多功能性:USB接口不仅可以传输数据和供电,还可以支持音频输出、视频输出、网络连接等功能。例如,许多外部显示器使用USB接口进行视频传输,USB音频接口可用于连接耳机和麦克风。

总之,USB具有通用性强、热插拔功能、快速的数据传输速度、电力供应功能以及多功能性等优点,因此被广泛应用于各种设备和场景中。


USB版本发展

USB(Universal Serial Bus)是一种常用的计算机外部设备连接标。USB版本的变化主要体现在数据传输速度、电力传输能力和物理连接接口上。以下是USB版本发展的主要变化:

  1. USB 1.0/1.1: 这是最早的USB版本,于1996年推出。它提供了传输速度为1.5 Mbps(低速设备)和12
    Mbps(全速设备)的数据传输能力。这些版本的USB通常用于连接鼠标、键盘和打印机等低功率设备。
  2. USB 2.0: USB 2.0于2000年推出,提供了传输速度高达480
    Mbps(高速设备)。这一版本的USB广泛应用于大多数外部存储设备、摄像头和音频设备等。
  3. USB 3.0/3.1 Gen 1: USB 3.0于2008年推出,提供了传输速度高达5 Gbps(超速设备)。它比USB
    2.0更快且向后兼容,可以使用相同的接口连接USB 2.0设备。USB 3.1 Gen 1是对USB 3.0的重新命名,没有实质性的变化。
  4. USB 3.1 Gen 2: USB 3.1 Gen 2于2013年推出,提供了传输速度高达10
    Gbps(超速设备)。它在数据传输速度上比USB 3.0更快,同时保持了向后兼容性。
  5. USB 3.2: USB 3.2于2017年推出,提供了更高的传输速度。USB 3.2 Gen 1x1的传输速度为5 Gbps,与USB
    3.1 Gen 1相同;USB 3.2 Gen 2x1的传输速度为10 Gbps,与USB 3.1 Gen 2相同;而USB 3.2 Gen 2x2则提供了20 Gbps的传输速度。
  6. USB 4: USB 4于2019年推出,是最新的USB版本。它提供了传输速度高达40
    Gbps,并且支持更多高端功能,如显示器连接、电力传输和数据传输等。

需要注意的是,每个USB版本都有对应的物理连接接口,如USB-A、USB-B、Micro-USB、Mini-USB和USB-C等。其中,USB-C接口是一种更为通用和先进的接口,支持更高的数据传输速度和电力传输能力,并且可以在两个设备之间逆向连接。
在这里插入图片描述

USB速度以及电气接口

接线:4个(1个供电,2个数据,1个接地);USB 3.0拥有9个(另外4个提供给SuperSpeed技术);USB 3.1 Type-C拥有24个

速率:1.5/12/480/5,000/10,000/20,000/40,000 Mbit/s(根据不同版本)
在这里插入图片描述

供电能力:在这里插入图片描述
在这里插入图片描述

USB传输过程

在编程中只需要关注事务就行;
在这里插入图片描述

USB开发抓包工具:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

USB传输方式

USB的传输模式有4种,分别是控制传输(Control Transfer)、中断传输(Interrupt Transfer)、批量传输或叫块传输(Bulk Transfer)、实时传输或叫同步传输(Isochronous Transfer)。每种传输方式都有其特点,其特点如下:(所有的USB传输都离不开下面的4种方式)
 在这里插入图片描述

1.控制传输特点:

USB协议引用控制传输有两方面的原因,一方面,在USB系统中,设备在正常工作之前必须先进行配置,USB主机必须为设备分配总线上唯一的设备地址,并完成读取设备的各种描述符,根据描述符的需求为设备的端点配置管道,分配带宽等工作。另一方面,在设备的工作过程中,主机希望能及时地获取设备的当状态,或者设备出现问题时希望主机能及时做出补救措施,或者主机根据某些需求改变设备的当前配置等工作。这两方面的目的对所有的USB设备都要求适用,为了达到此目的,从而引入了控制传输。所有设备都要求有支持控制传输的端点,一般端点号为0的为控制端点,USB协议将其定义设备的默认端点。控制传输有以下特点:

  • 控制传输由以下几个事务处理组成:
    (1)建立联系,把请求信息从主机传到它的应用设备
    (2)零个工多个数据传送的事务处理,按照命令中指明的方向传送数据
    (3)状态信息回传

  • 用于控制传输的设备的端点是双向的,即可以接收数据包又可以发送数据包,相应的控制传输的管道也是双向的

  • 所有的设备必须有至少一个控制端点,且端点号为0

  • 是可靠的数据传输,支持错误检测和数据重传,并尽可能满足主机和设备的同步,因为一次控制传输需要三个或两个阶段

  • 控制机制提供访问设备描述符和命令操作的机制。USB协议为设备定义了标准的、设备类的或由设备生产商厂提供的命令(或叫请求),这些命令可操作设备的状态。同时协议又定义了一套描述符,用于存放USB设备的各种信息,用于对设备进行配置,这些都是通过控制传输完成

  • 系统没有为控制传输指定访问总线的频率和带宽,一般由USB协议软件(即主机操作系统的USB控制程序)从全局优化角度来决定

2.中断传输的特点

中断传输为这样一类设备设计的,它们只发送或接收少量的数据,而且并不经常进行数据传输,但它们有一个确定的传输周期,每隔一定的周期要求传输一次(并不是要求必须按固定周期要发送一次数据)。使用这种传输方式的设备有键盘、鼠标、游戏杆等。所有的USB设备在正常工作之前,系统都要对它们进行配置,当配置成功后设备才能正常的工作。因为中断传输是一种周期性的传输方式,系统在对进行中断传输的设备进行配置时,只要当前总线上用于周期性传输的空闲带宽能够容纳此设备,设备就可以工作。中断传输有如下特点:

  • 中断传输管道的最大服务周期(单位:毫秒)必须得到保证

  • 是一种可靠的数据传输方式

  • 由于错误而引起的数据重传将在下一服务周期进行

  • 数据的结尾也是通过与包的最大传输字节数比较来确定

  • 设备中用于中断传输的端点可用来为某些实时传输传达其速率的反馈信息,例如音频设备。当使用这种模式时,在每个数据包被发送到主机之后,不管握手包是否存在或类型如何,端点的DATA0/DATA1同步切换都应该改变,不过只有中断传输的输入端点支持种能力

3. 批量传输的特点

USB协议提供批量传输类型是为了支持在某些不确定的时间内进行大量的数据通信,如打印机、扫描仪、硬盘、光盘等设备的数据传输都有这种特点。当一帧内的总线时间(带宽)有空余时,USB主机就会将剩余的时间(带宽)分配给等待使用总线的批量传输的USB设备,也就是说,批量传输可以利用任何可获得的总线带宽来进行数据传输。批量传输有以下特点:

  • 可以动态地获得总线带宽
  • 是一种可靠的数据传输方式,如果传送失败,可进行重发
  • 有确认的数据传输,但不保证传输的带宽和延迟
  • 只有当获得空闲的带宽时,批量传输才会发生。如果USB总线有较多的空闲带宽,则批量传输会较频繁地进行,如果空闲带宽较少,可能有很长时间没有批量传输发生

4.实时传输(同步传输)的特点

实时传输是为支持某些对时间要求很高、数据量很大应用要求而提出的,使用这种传输类型的设备有麦克风、调制解调器、音频设备等。为了完成实时传输,总线必须事先提供足够的带宽。实进传输有如下特点:

  • 实时传输有数据有固定的时间延迟,但有固定的带宽保证
  • 是一种不可靠的数据传输,充许有一定的误码率
  • 只要数据供得上,就能保证管道上的恒定数据传送速率
  • 当被用来支持同步的源和目的时,使用这个传输类型的软件并不要求是实时的
  • 对于实时传输来说,实时性比正确性和数据重传更重要。考虑到总线的错误率较低,协议就认为传送一般都可以成功,即使有少量的数据出错,也不会对应用软件产生太大的影响(如音频软件)。实时传输的接收端可以判断自己是否在一个帧内错过了一些数据,而且能知道丢了多少数据。
  • 在实时传输的过程中,因为没有握手信号来指示中止,所以实时传输的端点从不中途停止。即使能够查到错误,实时管道也不会因此停下,USB主机也仍继续处理下一帧的数据。因为实时传输的协议不支持每次事务处理都进行握手,所以错误检测的功能相对弱了许多
  • 只有全速/高速设备可以使用实时传输

USB通信特点 :

在这里插入图片描述

USB产品设计流程

在这里插入图片描述

相关文章:

第一章 USB应用笔记之USB初步了解

USB应用笔记之USB初步了解 文章目录 USB应用笔记之USB初步了解前言USB的优点:USB版本发展USB速度以及电气接口USB传输过程USB开发抓包工具:USB传输方式1.控制传输特点:2.中断传输的特点3. 批量传输的特点4.实时传输(同步传输)的特…...

小白入门python

建议用vscode进行代码学习 vscode下载地址:Download Visual Studio Code - Mac, Linux, Windows 左侧点击扩展安装python,右下角选择python版本,记得配置系统环境变量,python在系统(cmd)的版本由环境变量优先级决定,在编程软件中由自己选择解释器...

《Kubernetes部署篇:Ubuntu20.04基于containerd部署kubernetes1.24.17集群(多主多从)》

一、架构图 如下图所示: 二、环境信息 1、部署规划主机名K8S版本系统版本内核版本IP地址备注k8s-master-631.24.17Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.63master节点 + etcd节点k8s-master-641.24.17Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.64master节点 + …...

Adobe Illustrator 2023 for mac安装教程,可用。

Adobe Illustrator 是行业标准的矢量图形应用程序,可以为印刷、网络、视频和移动设备创建logos、图标、绘图、排版和插图。数以百万计的设计师和艺术家使用Illustrator CC创作,从网页图标和产品包装到书籍插图和广告牌。此版本是2023版本,适配…...

ElasticSearch(一)数据类型

ElasticSearch&#xff08;一&#xff09;数据类型 1.简述 Es数据类型分为基础数据类型和复杂类型数据&#xff0c;掌握ES数据类型才能进一步使用ES检索数据内容。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot…...

Spark-Core核心算子

文章目录 一、数据源获取1、从集合中获取2、从外部存储系统创建3、从其它RDD中创建4、分区规则—load数据时 二、转换算子(Transformation)1、Value类型1.1 map()_1.2 mapPartitions()1.3 mapPartitionsWithIndex(不常用)1.4 filterMap()_扁平化&#xff08;合并流&#xff09;…...

Linux和Windows下防火墙、端口和进程相关命令

&#x1f680;1 防火墙 1.1 firewall systemctl stop firewalld.service # 关闭防火墙 systemctl start firewalld.service # 开启防火墙 systemctl restart firewalld.service # 重启防火墙 systemctl status firewalld.service # 防火墙状态 firewall-cmd --reload # 重…...

2021年09月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:双端队列 定义一个双端队列,进队操作与普通队列一样,从队尾进入。出队操作既可以从队头,也可以从队尾。编程实现这个数据结构。 时间限制:1000 内存限制:65535 输入 第一行输入一个整数t,代表测试数据的组数。 每组数据的第一…...

【算法】滑动窗口

滑动窗口应用场景 关键词&#xff1a; 满足xxx条件&#xff08;计算结果&#xff0c;出现次数&#xff0c;同时包含&#xff09; 最长/最短 子串/子数组/子序列 例如&#xff1a;长度最小的子数组 滑动窗使用思路&#xff08;寻找最长&#xff09; 核心&#xff1a;左右双指…...

JS获取Beego渲染模板Temple时传递的数据

如果纯粹的JS调用接口&#xff0c;获取后端数据很直接坦率&#xff0c;JSON解析也就可以了。 如果需要JS获取HTML页面加载时&#xff0c;后端传回来的一些数据&#xff0c;我们也可以通过以下的方式进行获取。范例如下&#xff1a; //通过person_name字段传递参数到html页面中…...

代码随想录训练营第五十二天|300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

300.最长递增子序列 题目链接/文章讲解/视频讲解&#xff1a;代码随想录 1.代码展示 //300.最长递增子序列 int lengthOfLIS(vector<int>& nums) {if (nums.size() 1) {return 1;}//step1 构建dp数组//dp[i]的含义是长度未nums数组中长度为i 1的数组的最长子序列长…...

前端三大Css处理器之Less

Less是Css预处理器之一&#xff0c;分别有Sass、Less、Stylus这三个。 Lesshttps://lesscss.org/ Less是用JavaScript编写的&#xff0c;事实上&#xff0c;Less是一个JavaScript库&#xff0c;他通过混合、变量、嵌套和规则设置循环扩展了原生普通Css的功能。Less的少数…...

Win 教程 Win7实现隔空投送

一直觉得自己写的不是技术&#xff0c;而是情怀&#xff0c;一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的&#xff0c;希望我的这条路能让你们少走弯路&#xff0c;希望我能帮你们抹去知识的蒙尘&#xff0c;希望我能帮你们理清知识的脉络&#xff0…...

代码随想录算法训练营Day45 | 70. 爬楼梯 (进阶) | 322. 零钱兑换 | 279. 完全平方数

文章目录 70. 爬楼梯 (进阶)322. 零钱兑换二维数组滚动数组 279. 完全平方数 70. 爬楼梯 (进阶) 题目链接 | 理论基础 以完全背包的思路来解题&#xff0c;正如组合总和 Ⅳ 中提到的一样。在本题中&#xff0c;先背包后物品的思路就显得非常合理明显了。 本题中的物品就是可…...

算法训练营第四十一天(9.2)| 动态规划Part11:最长公共子序列

Leecode 1143.最长公共子序列 题目地址&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目类型&#xff1a;最长子序列 class Solution { public:int longestCommonSubsequence(string text1, string text2) {int m text1.size(), n t…...

k8s基于rbac权限管理serviceAccount授权管理

测试通过http访问apiServer curl没有证书不能通过https来访问apiServer需要使用kubectl代理 #使用kubectl代理 kubectl proxy --port8111& #curl访问 api/v1 是资源所属群组/版本 即创建资源时定义的apiVersion #后边跟的是要访问的资源 #查看所有命名空间 #查看核心资源用…...

linux URL访问工具

URL访问工具 有时候想在命令行下通过http访问接口/网页&#xff0c;可以使用curl来进行操作 发起请求 curl www.baidu.com 会返回网页内容 参数选项 -i参数 使用-i参数&#xff0c;会返回响应header curl -i www.baidu.com -I参数 使用-I参数&#xff0c;只会返回响应header cu…...

CCF-CSP 29次 第五题【202303-5 施肥】

计算机软件能力认证考试系统 题解&#xff08;35分&#xff09;&#xff1a; 枚举每个区间&#xff0c;再枚举每个施肥车&#xff0c;看所有的施肥车能不能把这个区间填满 #include<bits/stdc.h> using namespace std; const int N410; int n,m; typedef pair<int,…...

前端基础4——jQuery

文章目录 一、基本了解1.1 导入jQuery库1.2 基本语法1.3 选择器 二、操作HTML2.1 隐藏和显示元素2.2 获取与设置内容2.3 获取、设置和删除属性2.4 添加元素2.5 删除元素2.6 设置CSS样式 三、jQuery Ajax3.1 基本语法3.2 回调函数3.3 常用HTTP方法3.4 案例一3.4.1 准备工作3.4.2…...

测试人:“躺平?不可能的“, 盘点测试人在职场的优势

之前有这么一个段子&#xff1a;有人喜欢创造世界&#xff0c;他们做了程序员&#xff1b;有人喜欢拯救世界&#xff0c;他们做了测试员&#xff01;近几年&#xff0c;测试工程师在企业究竟是怎么样的发展&#xff1f;随着企业对于用户体验的满意度越来越重视&#xff0c;更加…...

C++:初识类与this指针

文章目录 前言一、类类的定义和实例化类的访问限定符类的作用域计算类的大小 二、类的成员函数的this指针总结 个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》 前言 一、类 类的定义和实例化 注意类定义结束时后面分号( ; )不能省略。 类…...

2023应届生java面试紧张失误之一:CAS口误说成开心锁-笑坏面试官

源于&#xff1a;XX网&#xff0c;如果冒犯&#xff0c;表示歉意 面试官&#xff1a;什么是CAS 我&#xff1a;这个简单&#xff0c;开心锁 面试官&#xff1a;WTF&#xff1f; 我&#xff1a;一脸自信&#xff0c;对&#xff0c;就是这个 面试官&#xff1a;哈哈大笑&#xff…...

Excel_VBA程序文件的加密及解密说明

VBA应用技巧及疑难解答 Excel_VBA程序文件的加密及解密 在您看到这个文档的时候&#xff0c;请和我一起念&#xff1a;“唵嘛呢叭咪吽”“唵嘛呢叭咪吽”“唵嘛呢叭咪吽”&#xff0c;为自己所得而感恩&#xff0c;为付出者赞叹功德。 本不想分享之一技术&#xff0c;但众多学…...

Flutter关于StatefulWidget中State刷新时机的一点实用理解

刚入门flutter开发&#xff0c;使用StatefulWidget踩了很多坑&#xff0c;就我遇到典型问题谈谈见解。 1.initState方法只会在控件初始化的时候执行一遍。 2.控件内部执行setState方法&#xff0c;则会每次执行build方法。 3.控件销毁会执行dispose方法&#xff0c;所以一些…...

CS420 课程笔记 P2 - 内存编辑和基础的 GameHacking 尝试

文章目录 IntroductionOperating SystemToolsMemory ScanningMemory ScanExamples!Conclusion Introduction 本节将介绍操作系统的基础知识和内存扫描&#xff0c;这可以说是 game hacking 中最重要的技能&#xff0c;我们不会深入讨论操作系统&#xff0c;因为这本身就是一门…...

【sql】MongoDB 查询 高级用法

【sql】MongoDB 查询 高级用法 一、基本查询指定字段 db.getCollection(students).find({}, {name: 1, score: 1}) 二、指定字段别名 db.getCollection(students).find({}, {"name":1, "score":1, "grade":"$grade.grade"}) 这里将…...

监督学习的介绍

一、定义 监督学习是利用一组已知类别的样本调整分类器的参数&#xff0c;使其达到所要求性能的过程&#xff0c;也称为监督训练或有教师学习。它是一种机器学习的方法&#xff0c;目的是让模型能够从已知的输入和输出之间的关系中学习&#xff0c;并且能够对新的输入做出正确…...

【DRONECAN】(三)WSL2 及 ubuntu20.04 CAN 驱动安装

【DRONECAN】&#xff08;三&#xff09;WSL2 及 ubuntu20.04 CAN 驱动安装 前言 这一篇文章主要介绍一下 WSL2 及 ubuntu20.04 CAN 驱动的安装&#xff0c;首先说一下介绍本文的目的。 大家肯定都接触过 ubuntu 系统&#xff0c;但是我们常用的操作系统都是 Windows&#x…...

Databricks 入门之sql(二)常用函数

1.类型转换函数 使用CAST函数转换数据类型&#xff08;可以起别名&#xff09; SELECTrating,CAST(timeRecorded as timestamp) FROMmovieRatings; 支持的数据类型有&#xff1a; BIGINT、BINARY、BOOLEAN、DATE 、DECIMAL(p,s)、 DOUBLE、 FLOAT、 INT、 INTERVAL interva…...

Simulink建模与仿真(3)-Simulink 简介

分享一个系列&#xff0c;关于Simulink建模与仿真&#xff0c;尽量整理成体系 1、Simulink特点 Simulink是一个用来对动态系统进行建模、仿真和分析的软件包。使用Simulink来建模、分析和仿真各种动态系统(包括连续系统、离散系统和混合系统)&#xff0c;将是一件非常轻松的事…...