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

目录

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-线分别对应的电平信号范围。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高晓松音频 百度网盘,高晓松音频 百度网盘资源,百度云大全

讲座主要围绕分享了自己的心得和体会,以及对产业现状的深刻洞察。认为,不仅是一种艺术形式,更是一种生活方式。他鼓励年轻人要勇于追求自己的音乐梦想,同时也要关注音乐产业的发展趋势,为音乐产业的繁荣贡献自己的力量…

自动预约申购 i茅台工具完善

自动预约申购茅台工具 概述新的改变界面预览 概述 今天刷到一个windows自动刷茅台的工具,是用wpf实现的,看到作者最后是2023年更新的,评论中有好多人提出一些需求,刚才在学习wpf,就试着完善了一下。 工具下载&#x…

分布式系列之限流组件

概述 在高并发场景下,请求量瞬间到达,后端服务器即使有缓存、集群主备、分库分表、容错降级等措施,也有可能扛不住这请求量,因此可考虑引入限流组件。限流的目的:防止恶意请求流量或流量超出系统承载。 应用场景&…

DEtection TRansformer (DETR)与YOLO在目标检测方面的比较

1. 概述 计算机视觉中的目标检测是一个复杂而有趣的领域,它涉及到让计算机能够识别图像中的物体,并确定它们的位置。下面是DETR和YOLO这两种目标检测方法简单比较: 1.1 YOLO YOLO是一种非常流行的目标检测算法,它的核心思想是将…

IDEA 2024.01版本 git分支merge合并

使用idea工具来进行merge合并 1、拉取远端分支信息 2、我的分支是sprint-240627,我要将test分支合并到我这个分支上 找到test分支 3、选择【Merge origin/test into sprint-240627】 从test合并到我们要合并得分支上,结束 4、如果有冲突,就解决冲突即可…

5. zabbix分布式监控

zabbix分布式监控 一、zabbix分布式监控二、zabbix分布式监控部署1、环境描述2、zabbix proxy的部署2.1 安装zabbix proxy相关的软件2.2 创建proxy需要的库、导入表2.3 编辑zabbix proxy配置文件,指定数据库连接2.4 启动zabbix proxy 3、在zabbix server添加代理4、…

基于 ROS 的 Terraform 托管服务轻松部署文本转语音系统 ChatTTS

介绍 ChatTTS是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。ChatTTS webUI & API 为 ChatTTS 提供了网页界面和API服务。 资源编排服务(Resource Orc…

竞赛选题 python opencv 深度学习 指纹识别算法实现

1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 python opencv 深度学习 指纹识别算法实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:4分创新点:4分 该项目较为新颖…

.locked勒索病毒详解 | 防御措施 | 恢复数据

引言 在数字化飞速发展的今天,我们享受着信息技术带来的便捷与高效,然而,网络安全问题也随之而来,且日益严重。其中,勒索病毒以其狡猾的传播方式和巨大的破坏性,成为了网络安全领域中的一大难题。.locked勒…

创新、引领、发展——SAMPE中国2024年会在京盛大开幕

绿树阴浓夏日长,在这个色彩缤纷的季节,SAMPE中国2024年会暨第十九届国际先进复合材料制品原材料、工装及工程应用展览会在中国国际展览中心(北京朝阳馆)隆重开幕。新老朋友共聚一堂,把酒话桑麻。 为期4天的国际学术会…

TensorRT-LLM加速框架的基本使用

TensorRT-LLM是英伟达发布的针对大模型的加速框架,TensorRT-LLM是TensorRT的延申。TensorRT-LLM的GitHub地址是 https://github.com/NVIDIA/TensorRT-LLM 这个框架在0.8版本有一个比较大的更新,原先的逻辑被统一了,所以早期的版本就不介绍了…

使用鸿蒙HarmonyOs NEXT 开发b站的卡片效果 手把手教学

资源准备: 需要4张图片:分别是页面图,播放图标,评论图标,更多图标 1.实现效果显示: 2.教学视频: 使用鸿蒙HarmonyOs NEXT 开发b站卡片_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1…

FPGA的基础仿真项目--七段数码管设计显示学号

一、设计实验目的 1. 了解数码管显示模块的工作原理。 2. 熟悉VHDL 硬件描述语言及自顶向下的设计思想。 3. 掌握利用FPGA设计6位数码管扫描显示驱动电路的方法。 二、实验设备 1. PC机 2.Cyclone IV FPGA开发板 三、扫描原理 下图所…

git检查别人提交的PR(pull requests)并在本地验证,然后合并

可以看官方流程:Checking out pull requests locally - GitHub Docs 当别人给你的开源仓库提交了pull request,你该怎么检查别人提交的代码是否可用,然后合并上去呢?今天我就遇到了,就在前不久开源项目douyin-live失败…

Day5 —— 电商日志数据分析项目

项目二 _____(电商日志数据分析项目) 引言需求分析详细思路统计页面浏览量Map阶段Reduce阶段 日志的ETL操作Map阶段Reduce阶段 统计各个省份的浏览量Map阶段Reduce阶段 具体步骤统计页面浏览量日志的ETL操作统计各个省份的浏览量工具类(utils…

mac鼠标和触摸屏单独设置滚动方向

引言:mac很好用,但是外接鼠标的滚动方向和win不一样,总有点不习惯。于是想要设置一下,当打开设置,搜索鼠标时,将“自然滚动”取消,就可以更改了。 问题:但触摸屏又不好用了。 原因&a…

无线麦克风哪个好?分享口碑最好的麦克风品牌

在这个自媒体时代,给了普通人很多的机会,尤其短视频的兴起更是让无数热情,有创作之心的人跃跃欲试。于是乎越来越多的人纷纷拿起了手机到各个平台去展示自己的才华,或者通过vlog记录分享自己的简单生活。可是在分享和创作的输出时…

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index.…

Spring底层原理之bean的加载方式一 用XML方式声明bean 自定义bean及加载第三方bean 2024详解

目录 用XML方式声明bean 首先我们创建一个空的java工程 我们要导入一个spring的依赖 注意在maven工程里瞅一眼 我们创建一个业务层接口 还有四个实现类 我们最初的spingboot生命bean的方式是通过xml声明 我们在resources文件夹下创建一个配置文件 我们书写代码 首先初…

移动硬盘盒:便携与交互的完美结合 PD 充电IC

在数字化时代的浪潮中,数据已成为我们生活中不可或缺的一部分。随着数据的不断增长,人们对于数据存储的需求也在不断增加。传统的存储设备如U盘、光盘等,虽然具有一定的便携性,但在容量和稳定性方面往往难以满足现代人的需求。而移…