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

news2024/11/28 12:47:15

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产品设计流程

在这里插入图片描述

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

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

相关文章

同步与互斥

硬件指令 实现互斥:硬件指令,硬件实现的原子操作,不会被打断 tsl指令和xchg指令 当前指令执行完,才会检测中断 If the signal comes while an instruction is being executed, it is held until the execution of the instructi…

Feign负载均衡写法

Feign主要为了面向接口编程 feign是web service客户端,是接口实现的,而ribbon是通过微服务名字访问通过RestTemplate调用的,如下: 在Feign的实现下,我们只需要创建一个接口并使用注解的方式来配置它(类似…

仿京东 项目笔记2(注册登录)

这里写目录标题 1. 注册页面1.1 注册/登录页面——接口请求1.2 Vue开发中Element UI的样式穿透1.2.1 ::v-deep的使用1.2.2 elementUI Dialog内容区域显示滚动条 1.3 注册页面——步骤条和表单联动 stepsform1.4 注册页面——滑动拼图验证1.5 注册页面——element-ui组件Popover…

开开心心带你学习MySQL数据库之第三篇上

学校的项目组有必要加入吗? 看你的初心. ~~如果初心是通过这个经历能够提高自己的技术水平 ~~是可以考虑的 ~~如果初心是通过这个经历提高自己找工作的概率 ~~这个是不靠谱的,啥用没有 ~~如果初心是通过这个体验更美好的大学生活 ~~靠谱的 秋招,应届生,找工作是非常容易的!!! …

《开发实战》13 | 用好Java 8的日期时间类,少踩一些“老三样”的坑

13 | 用好Java 8的日期时间类,少踩一些“老三样”的坑 初始化日期时间 如果要初始化一个 2019 年 12 月 31 日 11 点 12 分 13秒这样的时间,Date date new Date(2019, 12, 31, 11, 12, 13);输出的时间是 3029 年 1 月 31 日 11 点 12 分 13 秒&#xf…

时间语义与窗口

时间语义 在Flink中,时间语义分为两种 : 处理时间和事件时间。时间语义与窗口函数是密不可分的。以窗口为单位进行某一段时间内指标统计,例如想要统计8点-9点的某个页面的访问量,此时就需要用到了窗口函数,这里的关键…

【倒着考虑】CF Edu 21 D

Problem - D - Codeforces 题意: 思路: 这道题需要倒着步骤考虑,就是先去假设已经分为了两部分,这左右两部分的和相等,然后去想上一个步骤 倒着一个步骤后,可以发现这样的性质: Code&#xf…

2023谷歌开发者大会直播大纲「终稿」

听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…

【小沐学Python】UML类图的箭头连线关系总结(python+graphviz)

文章目录 1、简介1.1 类图1.2 Graphviz 2、Graphviz2.1 安装2.2 命令行测试2.3 python测试 3、关系3.1 实现3.2 泛化3.3 关联3.4 依赖3.5 聚合3.6 组合 结语 1、简介 UML(unified modeling language,统一建模语言)是一种常用的面向对象设计的…

java-参数传递机制

java参数传递机制都是值传递。 基本类型参数传输都是数据值。 传递到方法中的值是拷贝后的值。 引用类型参数传输的都是地址值。 如果是数组的参数传递,那么是引用传递(本质上还是值传递,但是由于数组的值传递是传递数组的内存地址&#xf…

如何使用『Nginx』配置后端『HTTPS』协议访问

前言 本篇博客主要讲解如何使用 Nginx 部署后端应用接口 SSL 证书,从而实现 HTTPS 协议访问接口(本文使用公网 IP 部署,读者可以自行替换为域名) 申请证书 须知 请在您的云服务平台申请 SSL 证书,一般来说证书期限…

数据结构(Java实现)-Map和Set

搜索树 概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 它的左右子树也…

JavaScript运行机制与实践应用

一、JavsScript运行机制 1、JavaScript 是一种解释型语言,它的执行机制主要包括以下几个步骤: 2、事件循环 3、JavaScript运行模型 4、JavaScript任务 5、JavaScript宏任务和微任务 6、案例分析 console.log(script start) setTimeout(function () {co…

DB-GPT使用

一、源码安装 安装 请按照以下步骤安装DB-GPT 1. Hardware Requirements 如果你的显存不够,DB-GPT支持8-bit和4-bit量化版本 2. Install git clone https://github.com/eosphoros-ai/DB-GPT.git目前使用Sqlite作为默认数据库,因此DB-GPT快速部署不…

PixelSNAIL论文代码学习(2)——门控残差网络的实现

文章目录 引言正文门控残差网络介绍门控残差网络具体实现代码使用pytorch实现 总结 引言 阅读了pixelSNAIL,很简短,就用了几页,介绍了网络结构,介绍了试验效果就没有了,具体论文学习链接 这段时间看他的代码,还是挺痛…

【数学建模竞赛】Matlab逻辑规则,结构基础及函数

逻辑基础 逻辑变量 在Matlab中,逻辑变量是一种特殊类型的变量,用于表示逻辑值。逻辑变量只有两个可能的值:true(真)和false(假)。在Matlab中,我们可以使用0和1来表示逻辑变量的值。…

数据结构(Java实现)-字符串常量池与通配符

字符串常量池 在Java程序中,类似于:1, 2, 3,3.14,“hello”等字面类型的常量经常频繁使用,为了使程序的运行速度更快、更节省内存,Java为8种基本数据类型和String类都提供了常量池。…

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

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

【Java核心知识】JUC包相关知识

文章目录 JUC包主要内容Java内置锁为什么会有线程安全问题Synchronize锁Java对象结构Synchronize锁优化线程间通信Synchronize与wait原理 CAS和JUC原子类CAS原理JUC原子类ABA问题 可见性和有序性为什么会有可见性参考链接 显式锁Lock接口常用方法显式锁分类显式锁实现原理参考链…

数据结构(Java实现)-排序

排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序&#xff…