USB2.0学习1--基本概念

news2024/11/24 0:14:40

目录

1.USB概念

2.USB协议发展

3.USB接口类型

3.1 TYPE类型

3.2 Mini类型

3.3 Micro类型

4. USB体系结构和关键概念

4.1 USB工作原理

4.2 USB物理拓扑结构

4.3 USB逻辑拓扑结构

4.4 USB软件架构

4.5 USB数据流模型

4.5.1 USB设备端点

4.5.2 USB管道

4.6 USB即插即用功能

4.6.1 热插拔

4.6.2 枚举

4.7 USB供电方式

4.8 USB数据编解码和位填充

4.9 USB通信方向

4.10 USB设备分类

4.11 USB电平标准和总线状态


1.USB概念

USB全称是 Universal Serial Bus,即通用串行总线,是一种计算机与外围设备进行数据交互的串行通信标准。

USB协议是在1994年底由英特尔、IBM、Microsoft等公司联合提出的,现由USB协会(USB-IF)管理。

USB使用差分信号来传输数据,具有传输速度快、支持热插拔、连接灵活、独立供电、协议向下兼容等优点,目前应用十分广泛。

2.USB协议发展

USB接口自1994年推出以来,经过30年的发展,从USB1.0发展到了现在的USB4.0,传输速率也从最开始的1.5Mbps,大幅提高到了最新的40Gbps。

USB协议按照速度等级和连接方式分可分为7个版本,但是从USB3.0开始,USB-IF对之前的接口标准重命名了,导致协议名称混乱,市场中的习惯叫法和官方命名不一样,现在USB-IF正式的主版本号只有USB 2.0USB 3.2USB4这3个。

原名

提出时间

传输速率

官方主版本号

官方子版本号

USB1.0

1996

1.5Mbps

USB2.0

USB2.0 Low Speed

USB1.1

1998

12Mbps

USB2.0 Full Speed

USB2.0

2000

480Mbps

USB2.0 High Speed

USB3.0

2008

5Gbps

USB3.2

USB3.2 Gen1(SuperSpeed USB)

USB3.1

2013

10Gbps

USB3.2 Gen2x1(SuperSpeed USB 10Gbps)

USB3.2

2017

20Gbps

USB3.2 Gen2x2(SuperSpeed USB 20Gbps)

USB4.0

2019

20Gbps

USB4.0

USB4.0 Gen2x2

40Gbps

USB4.0 Gen3x2

从上表可知,USB2.0根据速度分类,可分为低速(Low Speed)、全速(Full Speed)和高速(High Speed)3个版本。 

3.USB接口类型

USB接口分为插头和插座:

  1. 插头,对应的也叫公口,主要是各种外围设备上;
  2. 插座,对应也叫做母口,一般在PC主机箱上。

USB的接口类型,根据接口形状不同,主要可以分为三大类:

  1. TYPE类型:有TYPE-A、TYPE-B、TYPE-C共3种类型;
  2. Mini类型:有Min A、Min B共2种类型;
  3. Micro类型:有Micro A、Micro B、Micro B superSpeed 共3种类型

3.1 TYPE类型

3.2 Mini类型

3.3 Micro类型

4. USB体系结构和关键概念

4.1 USB工作原理

整个USB总线系统由三个元素组成:

  1. 主机(Host)
  2. 集线器(Hub)
  3. 设备(Func)

主机(Host)是一个提供 USB接口及接口管理能力的硬件、软件及固件的复合体,常见的如PC。从功能角度来看,主机(Host)其实由Host Controller和Root Hub两部分组成,Host Controller主要负责数据处理,Root Hub则负责向上下游提供接口。一个USB系统中仅有一个USB主机。

集线器(Hub)用于连接设备和主机,用户可以将设备或附加的Hub与之相连,这些附加的Hub可以连接其他的设备以及下层 Hub。每个Hub也需要占用地址。

根集线器(Root Hub)是一个特殊的Hub,它Host Controller集成在一起,不占用地址。

下图是我们PC端常见的USB系统: 

USB是主从模式的总线,每次通信都是由主机发起,设备不能主动发起通信,只能被动的应答主机的请求。

USB总线采用轮询机制,主机会对集线器进行轮询以获取其状况,从而知道系统中的设备是连接还是断开的,是否准备好传输数据。每当新的设备连接到集线器时,主机会自动分配一个地址给新设备,该地址写入设备的寄存器中,主机通过该地址读取设备的描述符来了解设备的属性,对设备进行管理和通信。

4.2 USB物理拓扑结构

USB的物理拓扑结构是一个分层的星形拓扑结构,Hub是每个星形拓扑结构的中心,如下图所示。

USB2.0协议中,以 Host-Root Hub为起点,最多支持7层(Tier),也就是说一个USB 系统中最多可以允许 5Hub 级联

每个初始化成功的USB设备(USB设备和USB集线器)都有一个唯一的7位二进制地址,也就是说一个主机最多可以同时支持 128 个地址,由于地址 0 作为默认地址,只在设备枚举期间临时使用,不能被分配给任何一个设备,因此理论上一个USB HOST最多可以同时支持127设备

低层的集线器或设备进行数据传输时,都是共享的上一层集线器的带宽,过多的集线器串联会导致每个设备分配到的带宽变小,同时过多的集线器串联可能会导致每个从机的供电量变小,不正常运行,而 Usb Hub 也是需要占用地址的,所以实际可支持的USB设备的数量将小于 127。

4.3 USB逻辑拓扑结构

逻辑拓扑结构是站在USB HOST的角度来讲的,对USB HOST而言,所有连接到该USB总线上的设备具有同等的地位关系,HOST对这些设备采用相同的方式寻址访问。尽管物理连接上,有的设备需要USB Hub中继访问,有些USB设备是直接访问,但在逻辑上HUB是透明的,所以USB设备和HOST是直接连接的关系。

4.4 USB软件架构

USB软件系统将USB 设备、主机划分为不同的层次和模块,可以分为功能层、设备层总线接口层3个层次,如下图所示。图中的黑箭头表示实际的数据流,灰箭头表示逻辑上的数据流。

每层的功能描述如下:

  • 功能层完成功能级的描述、定义和行为;
  • 设备层则完成从功能层到总线接口层的数据转换,把一次功能层的行为转换为一次一次的基本传输;
  • USB 总线接口层则处理编码后Bit 流,完成数据传输的物理层实现和总线管理。

这些复杂的层次和模块划分主要有两个好处:

  • 一是可以规范设备和主机的行为,消除不同硬件厂商的区别,减少兼容性的问题;
  • 二是可以将 USB 软件开发的工作量细化,硬件工程师可以集中精力设计设备的总线接口层,而软件工程师可以只需要考虑优化用户界面。

4.5 USB数据流模型

下图是一个完整的USB数据传输过程。图中的黑箭头表示实际的数据流,灰箭头表示USB的数据传输机制。

从逻辑上讲 USB数据的传输是通过管道进行的,USB系统软件通过默认控制管(与端点0相对应的管道)管理设备,设备驱动程序通过其它的管道来管理设备的功能接口,实现数据交互。下图是一个简化的USB通信框图,体现了USB通信系统中数据流、端点、主机内存缓冲区和管道之间的关系。

4.5.1 USB设备端点

端点是USB设备端的概念。端点是设备内部的数据传输终点,实际上就是一个数据缓冲区(Buffer),是真实的物理单元。这些端点在设备出厂时就已定义好的,每一个端点都有唯一的地址和属性。

在USB主机看来,每个USB设备就是端点的集合,主机只能通过端点与设备进行通讯。设备支持端点的数量是有限的,除默认端点外(端点0),低速设备最多支持 2 组端点(2 个输入(IN),2 个输出(OUT)), 高速和全速设备最多支持 15 组端点。

USB端点按功能可分为控制端点和数据端点。

  • 控制端点在USB设备端就是0地址端点。每个USB设备都必须包括一个USB控制端点,并且这个端点是双向的,其主要功能是主机实现对设备的配置。
  • 数据端点用于数据的传输,一个 USB 设备可以包括若干个数据端点,不同的端点以端点编号和方向区分,不同的端点有不同的特性,可以支持不同的传输类型、访问间隔以及最大数据包大小等。数据端点只支持一个方向的数据传输。

端点的上述特性通过端点描述符来体现。

4.5.2 USB管道

USB数据的传输,宏观的看来是在主机和设备之间进行;微观的看是在主机软件Buffer和设备端点之间进行,可以认为USB 通讯就是主机软件Buffer和设备端点之间的数据交换,交换的通道即称为管道。

管道是USB在软件层面上的一个抽象概念。管道代表主机软件buffer和设备端点之间移动数据的能力,是对USB设备端点的软件抽象,它包括USB设备端点的所有信息,比如带宽使用、传输类型、传输方向和最大有效数据长度等。

USB管道有两种类型:

  1. 流管道(Stream Pipe):通过管道传输的数据没有USB定义的结构,只支持单向传输,即IN或OUT。流管道支持中断传输、同步传输和批量传输。
  2. 信息管道(Message Pipe):通过管道移动的数据具有一些USB定义的结构。允许数据双向流动并且仅支持控制传输。

管道随着主机和设备的连接的建立而建立,当移除设备时,管道也跟着被移除。任何USB设备一旦上电就存在一个信息管道,即默认控制管道(Default Control Pipe),此管道使用端点0,USB 主机通过该管道来获取设备的描述、配置、状态,并对设备进行配置,USB 设备的即插即用特性即依赖于此。

总结起来,USB端点是物理层面上设备实际执行数据收发工作的硬件实体,而USB管道则是软件层面上抽象出的一种逻辑结构,它封装了与某个特定端点交互的所有细节,使得主机操作系统能够高效地管理和控制与USB设备的数据通信。

4.6 USB即插即用功能

所谓即插即用(Plug & Play)主要包含两个方面的内容:一是热插拔,一是枚举。热插拔由物理层实现,而枚举则主要依靠软件协议实现。

4.6.1 热插拔

热插拔即带电拔插 ,是指设备能够带电接入或者移出正在工作的系统 ,而不影响系统工作的技术。

USB采用四线电缆来传输信号,如上图所示,其中D+ 和 D- 是一对差分信号线,使用3.3V 的电平,VBus 是5V的电源

如图2.4所示,主机的D+与D-都用15K电阻接地,使得在没有设备插入的时候D+与D-上的电平始终为低。全速设备的D+通过1.5K电阻上拉到3.3V,而低速设备的D-通过1.5K电阻上拉到3.3V,这使得在设备插入主机的时候,D+或D-上会产生一个上升沿,如上图2.5所示,主机就是依靠这个上升沿判断出设备的插入和插入设备的类型(全速设备还是低速设备)。

同样的,如上图所示,在设备拔出的过程中主机也会检测到D+或D-上电平的变化(由高到低)然后识别到设备断开。这就是热插拔的原理。

高速设备初始是以一个全速设备的身份出现的,即和全速设备一样,D+线上有一个1.5k的上拉电阻。然后主机和设备通过一系列握手信号确认双方的身份,这里对速度的检测是双向的,只有两者都支持高速模式,后续的通信才会切换到高速模式。

4.6.2 枚举

USB设备枚举一般会经过插入、供电、初始化、分配地址,配置,获取设备描述符、获取配置描述符、获取字符串描述符和配置设备这么几个过程。各过程设备的状态梳理如下表:

总线枚举依靠软件协议实现,主机端在枚举过程中会为设备安装相应的驱动程序,枚举完毕后主机就能与设备进行通讯了。 下图是主机端在枚举过程中,设备状态详细的跳转流程图。

4.7 USB供电方式

USB 支持“总线供电”和“自供电”两种供电模式。

自供电就是由设备自己提供电源,设备不需要从VBus上取得电流,这类设备的功率不受USB 协议的限制。

总线供电模式,设备完全从VBus上取得电流,它们的功率受USB协议的限制,一般不能超过500mA。总线供电时,设备有两种工作状态:一是正常工作(Normal)状态,一是挂起(Suspend)状态。USB 协议规定,如果总线供电时设备在3ms内没有进行总线操作,即总线处于空闲态,设备需要自动进入挂起状态,而挂起的设备从总线上吸收的电流必须小于 500uA。总线供电设备在进入挂起状态以后,可以通过唤醒(Resume) 操作恢复到正常工作状态。

4.8 USB数据编解码和位填充

USB2.0采用NRZI(Non-Return-to-Zero Inverted Code,反向不归零编码)对发送的数据包进行编码:

  1. 输入数据0, 编码成“电平翻转”
  2. 输入数据1, 编码成“电平不变”

 

 USB2.0协议规定,主机在NRZI编码前会对原始数据流进行位填充:数据中每连续六个1后插入一个0,这给USB设备接收器逻辑每七位时间至少一次数据转换。

NZRI编码的每次翻转(每个逻辑0)都是一次同步的过程,接收方通过同步域(SYNC)来计算发送方的频率,以便用这个频率来继续采样,以保证数据和时钟锁定。

4.9 USB通信方向

USB2.0规范中,USB的数据传输仅支持半双工,因为仅有一对差分信号线,数据方向只能是主机->从机或从机->主机。USB是一条轮询总线,在USB体系中,每次传输都是由USB Host发起,数据的传输方向也是USB Host为参考对象来评定的,主机接收(读取)数据叫做IN(IN事务),主机发出(写)数据叫OUT(OUT事务)。

USB2.0的规范中,使用的是小端模式,即低字节在先,高字节在后。

4.10 USB设备分类

为了解决不同厂商的同类设备的兼容性问题 ,USB协议规定了很多标准类 ,同类的设备所有厂商必须按相同的格式传输数据,否则需单独指明驱动程序。下表是常见的USB类,USB类需要在设备描述符中指明。

4.11 USB电平标准和总线状态

下表是USB2.0低速、全速和高速模式下的电平标准。

根据功能和电平状态,USB2.0定义了多种总线状体。

下表7-2显示了USB2.0低速和全速总线信号1、信号0、SE0状态、SE1状态、J状态、K状态、空闲IDLE状态下D+、D-线分别对应的电平信号范围。

下表7-3显示了USB2.0高速总线信号1、信号0、J状态、K状态、Chirp J状态、Chirp K状态、空闲IDLE状态下D+、D-线分别对应的电平信号范围。

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

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

相关文章

linux中的调试工具gdb

目录 1.背景知识补充 2.使用 知识补充 1.背景知识补充 1.gcc下编译默认是release方式发布的,无法直接进行调试 如果要以debug方式发布,需要携带-g 可以使用grep查询 因为携带debug信息,其文件体积要大一些 2.使用 1.gdb 可执行程序 …

【喜报】恭喜云贝两位学员通过Oracle 19c OCP考试

Oracle 19c OCP成绩展示 课程特色 课程训练周期为两个半月,一年内循环听课,直至掌握技能; 专业讲师亲授OCP技能知识点,工作经验分享 课下布置作业(涵盖考点)辅助学生从实践能力上提升水平 理论培训实验操作,以原理和…

Kotlin设计模式:代理模式详解

Kotlin设计模式:代理模式详解 在软件开发中,设计模式是解决常见问题的一种优雅方法。本文将介绍Kotlin中的代理模式(Proxy Pattern),其应用场景,以及如何通过实例代码实现这一模式。 代理模式的目的 代理…

模拟面试之外卖点单系统(高频面试题目mark)

今天跟大家分享一个大家简历中常见的项目-《外卖点单系统》,这是一个很经典的项目,有很多可以考察的知识点和技能点,但大多数同学都是学期项目,没有实际落地,对面试问题准备不充分,回答时抓不到重点&#x…

学会整理电脑,基于小白用户(无关硬件升级)

如果你不想进行硬件升级,就要学会进行整理维护电脑 基于小白用户,每一个操作点我都会在后续整理出流程,软件推荐会选择占用小且实用的软件 主要从三个角度去讨论【如果有新的内容我会随时修改,也希望有补充告诉我,我…

疲劳驾驶智能识别摄像机

疲劳驾驶智能识别摄像机在道路安全管理中扮演着越来越重要的角色。这些先进的设备不仅仅是简单的监控工具,它们通过先进的技术和算法,有效地识别和预防司机疲劳驾驶,从而大大减少了交通事故的风险。 首先,这些智能识别摄像机采用高…

MySQL数据库初学者指南:从安装到常用命令的飞跃!

本文介绍 MySQL 的安装详细图文教程以及常用命令介绍。 1 MySQL 下载 1、官网下载 下载地址:https://dev.mysql.com/downloads/,选择社区版 目前 MySQL 最新版本为 8.0.23,如果想下载之前的版本可以点击 “Looking for previous GA versions?…

利用LabVIEW和数字孪生技术实现PCB电路板测试

利用LabVIEW和数字孪生技术对PCB电路板进行测试,可以通过动画展示实现测试过程的生动、形象和直观。本文详细说明了如何结合LabVIEW与数字孪生技术进行PCB电路板的测试,包括系统架构、实现方法以及具体展示效果,适合对外展示。 在现代电子制造…

C# 唯一性进程的方法封装(Winform/WPF通用)

C#唯一进程封装 C# 唯一性进程的方法封装 public class UniqueProcess{/// <summary>/// 焦点切换指定的窗口&#xff0c;并将其带到前台/// </summary>/// <param name"hWnd"></param>/// <param name"fAltTab"></para…

linux和Win——显卡驱动、Anaconda及pytorch安装(无需单独安装cuda、cudnn)

今天给新电脑的双系统&#xff08;windows11和ubuntu22.04&#xff09;安装了深度学习环境&#xff0c;在此记录一下。 一、Linux系统 &#xff08;一&#xff09;安装显卡驱动 &#xff08;1&#xff09;在安装Nvidia显卡驱动前&#xff0c;一定要点一下下面的“软件更新器…

达梦(DM8)数据库备份与还原(逻辑备份)二

一、达梦数据库的逻辑备份分四种级别的导出&#xff08;dexp&#xff09;与导入&#xff08;dimp&#xff09;的备份 第一种是&#xff1a;数据库级&#xff1a;导出或导入数据库中所有的对象。主要参数是&#xff1a;FULL 第二种是&#xff1a;用户级别&#xff1a;导出或导…

Kotlin 中的数据类型有隐式转换吗?

在 Kotlin 中&#xff0c;数据类型不可隐式转换。在 Java 中&#xff0c;如果数据是从小到大&#xff0c;是可以隐式转换的&#xff0c;数据类型将自动提升。 下面以 int 类型的数据为例&#xff0c;在 Java 中这样写是可以的&#xff1a; int a 2312; long b a;但是在 Kot…

智能电能表如何助力智慧农业

智能电能表作为智能电网数据采集的基本设备之一&#xff0c;不仅具备传统电能表基本用电量的计量功能&#xff0c;还具备双向多种费率计量功能、用户端控制功能、多种数据传输模式的双向数据通信功能以及防窃电功能等智能化的功能。这些功能使得智能电能表在农业领域的应用具有…

不要升级mmkv1.3.5

腾讯有点不负责任的感觉。1.3.5开始直接ban掉了v1.3.5 / 2024-04-24 Drop armv7 & x86 support.&#xff0c;x86和v7a的支持&#xff08;大概率是这个原因&#xff09;。 从打包后的包解压可以看到&#xff0c;只有arm64-v8a和x64目录里面有库。而1.3.4打包解压后&#x…

【话题】分数限制下,选好专业还是选好学校?

目录 引言&#xff1a;一、专业优先的考量二、学校优先的考量三、个人经历与决策四、综合考虑因素五、建议与策略结论文章推荐 引言&#xff1a; 随着24年高考的落幕&#xff0c;考生们迎来了人生中的重要抉择时刻&#xff1a;选择专业还是选择学校&#xff1f;两者皆重要&…

冷静!42.9分还不是SCI?别被影响因子迷了眼!最新JCR变化有哪些?

2024年发布的JCR变化有哪些&#xff1f; 2024年6月20日&#xff0c;科睿唯安正式发布2024年度《期刊引证报告》&#xff08;JCR™&#xff09;。 首先明确几个基本概念&#xff1a; &#xff08;1&#xff09;2024年发布2023JCR &#xff08;2&#xff09;JCR中有254个学科 …

基于FreeRTOS+STM32CubeMX+LCD1602+MCP4162(SPI接口)的数字电位器Proteus仿真

一、仿真原理图: 二、仿真效果: 三、STM32CubeMX配置: 1)、SPI配置: 2)、时钟配置: 四、软件部分: 1)、主函数: /* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : mai…

3)JDK1.8核心Jar包详细详解

JDK1.8核心Jar包详细介绍 JDK1.8包含jar包核心Jar包rt.jar名称含义内容概览功能与作用注意事项 小结 JDK1.8包含jar包 JDK 1.8&#xff08;Java Development Kit 8&#xff09;包含了多个JAR文件&#xff0c;这些JAR文件是Java开发的核心组成部分&#xff0c;提供必要的类库和…

操纵系统的特征

操纵系统的特征 并发&#xff1a; 一个厨师&#xff08;单核CPU&#xff09;快速切换轮流处理三样菜&#xff08;进程&#xff09;&#xff0c;看起来像同时处理 并行&#xff1a; 有多个厨师&#xff08;多核CPU&#xff09;&#xff0c;每个厨师独立处理一样菜&#xff08;进…

Python爬虫从入门到入狱之爬取知乎用户信息

items中的代码主要是我们要爬取的字段的定义 class UserItem(scrapy.Item):id \ Field()name \ Field()account\_status \ Field()allow\_message\ Field()answer\_count \ Field()articles\_count \ Field()avatar\_hue \ Field()avatar\_url \ Field()avatar\_url\_template…