USB基础知识总结

news/2024/11/20 10:36:32/文章来源:https://www.cnblogs.com/bujidao1128/p/18295872

USB基础知识总结

USB基本概念介绍

USB (Universal Serial Bus,通用串行总线)是1995年英特尔和微软等公司联合倡导发起的一种新的** PC 串行通信协议。它基于通用连接技术,实现外设的简单快速连接,达到方便用户、降低成本、扩展 PC 连接外设范围的目的。其最大特点是支持热插拔即插即用最多可串接下127 个外设,它可以向低压设备提供5 伏电源,同时可以减少 PC 机 I/O 接口数量。USB出现之前,计算机领域中的接口太多太繁杂,USB出现之后减少了接口的种类,总的来说就是设计出了一个万能的接口**,各种外设都能用同一种接口,所以才冠以“通用(是Universal)”为名。

USB常用术语

在进行USB系统开发之前,有必要了解USB开发中可能遇到的一些常用术语,USB系统开发分为USB主机开发USB设备开发。在一个USB系统中,某一个时刻只有一个USB主机,其余均为USB设备,但是为了让一个USB系统既有USB主机功能,又有USB从及功能,便出现了USB OTG。因此USB开发主要包括USB主机、USB设备、USB OTG系统开发。下面就一些常用书进行介绍:

USB Host(USB主机):在任何一个USB系统中只有一个USB主机,主机就是USB总线中作主设备角色的设备, 负责管理USB总线中的数据传输及端口管理。USB和主机系统的接口称为主机控制器。比如一个U盘(USB大容量储存设备)和PC通讯, PC在这里就是USB Host。

USB Device(USB设备)USB主机的下行设备,在USB总线中作从设备角色的设备,为系统提供具体功能USB主机最多可以支持127个USB设备

USB OTG:OTG就是On The Go,正在进行中的意思。

USB设备:USB设备按功能分为两部分:集线器(Hub)功能部件

逻辑设备:逻辑设备就是一系列端点的组合,逻辑设备与主机之间的通信发生在一个主机的缓冲区和设备的一个端点之间。

USB Hub(USB集线器):USB Hub可以将一个USB口转换为多个,扩展USB主机所能连接设备的数量,USB Host带有Root Hub,第一个USB设备是一个根集线器(Root_hub)它控制连接到其上的整个USB总线,该控制器是连接PCI总线和USB总线的桥,也是该总线上的第一个USB设备,USB Hub对于上游而言是一个USB Device, 对于下游而言扮演USB Host, 所以USB设备本身不知道自己连接在Hub还是Root Hub上。

PIPEusb通信的最基本形式是通过USB设备里的endpoint,而主机和endpoit之间的数据传输就是通过pipe

端点:主机与设备之间通信的目的或来源。端点是有方向的,主机到从机成为out端点,从机到主机成为in端点控制端点可以双向传输数据,而其他端点只能在单方向上传输数据。主机和设备的通信最终作用于设备的各个端点上,是主机和设备间通信流的一个 逻辑终端,每个USB设备有一个唯一的地址,由主机分配,而设备中的每个端点在设备内部有唯一的端点号。这个端点号是在设计设备时给定的。每个设备必须有端点0,用于设备枚举和对设备进行一些基本的控制功能,除了端点0,其余的端点在设备配置之前不能与主机通信,只有向主机报告这些端点的特性并被确认后才能被激活,端点位于USB系统内部,是一个可寻址的FIFO空间,类似于高速公路收费口的入口或出口,一个端点地对应一个方向。

管道通信方式:pipe中的数据通信方式有两种,一种是stream,一种是message。message要求进出方向必须要求同一个管道,默认就使用ep0作为message管道。

传输方式:USB endpiont有四种类型,分别对应了不同的数据传输方式,分别为control transfers控制传输interrupt transfers中断传输Bluk Data transfers批量传输Isochronous Data Tranfers等时传输,控制传输通常用于配置设备,获取设备信息,发送命令到设备。

接口一个逻辑设备可能包含若干个接口,每个接口包含1个或多个端点每个接口表示一种功能。一个接口对应一个驱动程序。例如usb扬声器就包含一个键盘接口和一个音频流接口。

Class协议:USB协议中除了定义一些通用软硬件电气特性,还包含各种各样的class协议,用来为不同的功能定义各自的标准接口和具体总线上的数据交互内容和格式。例如u盘的Mass storage class、通用数据交换CDC class。

USB协议版本

  • USB 1.0(low speed),传输速率最大为1.5Mbps
  • USB 1.1(full speed),传输速率最大为12Mbps
  • USB 2.0(high speed),传输速率最大480Mbps
  • USB 3.0(super speed),传输速率最大5Gbps

USB的电气特性

USB 连接器包含四条线2 条用于电源供电( VBUS 和 GND)2 条用于 USB 数据传输D+ (USB数据正信号线,USB Data Positive,即USB-DP线,简写为D+)和 D-(USB数据负信号线,USB Data Minus, 即USB-DM线,简写为D-)。VBUS 提供 5V 电源,电流可达 500mA。D+ 和 D- 为双向信号线,信号传输速率为 12Mbps (每位 83ns)。D+ 和 D- 信号电平为 3.3V 。

USB OTG 接口中有 5 条线:** 2 条用来传送数据(D+ 、D-); 1 条是电源线(VBUS); 1 条则是接地线(GND)1 条是 ID 线**。
USB信号使用分别标记为D+和D- 的双绞线传输,它们各自使用半双工的差分信号并协同工作,以抵消长导线的电磁干扰。

USB硬件接口

USB的特点

  • 可以热插拔,即插即用
  • 携带方便。USB 设备大多以“小、轻、薄”见长,对用户来说,随身携带大量数据时,很方便。当然 USB 硬盘是首要之选了。
  • 标准统一。大家常见的是 IDE 接口的硬盘,串口的鼠标键盘,并口的打印机扫描仪,可是有了 USB 之后,这些应用外设统统可以用同样的标准与个人电脑连接,这时就有了 USB 硬盘、USB 鼠标、USB 打印机等等。
  • 可以连接多个设备。USB 在个人电脑上往往具有多个接口,可以同时连接几个设备,如果接上一个有四个端口的 USB HUB 时,就可以再连上;四个 USB 设备,以此类推,尽可以连下去,将你家的设备都同时连在一台个人电脑上而不会有任何问题(注:最高可连接至 127 个设备)。

USB的拓扑结构

USB 的总线结构是采用阶梯式星形(tiered star)的拓扑(topology)结构,如下图所示。每一个星形的中心是集线器,而每一个设备可以通过集线器上的接口来加以连接。从图中可以看到 USB 的设备包含了两种类型USB 集线器与** USB 设备。位于最顶端的就是Host(主机端)。从 Host 的联机往下连接至 Hub(集线器),再由集线器按阶梯式以一层或一阶的方式往下扩展出去,连接在下一层的设备或另一个集线器上。事实上,集线器也可视为一种设备。而其中最大层数为 6 层((包括最后一级设备后共7层))。每一个星形的外接点的数目可加以变化,一般集线器具有 2、4 或 7 个接口
USB 的拓扑体系由 3 种元素组成 :
主机(Root Hub** 与** USB 主机控制器是绑定在一起的)、Hub 和设备。在 PC 平台上的 USB 中,PC 就是主机和根 Hub**,用户可以将设备和下级 Hub 与之连接。而这些附加的 Hub 又可以连接更下一级的 Hub 和设备,从而构成了星形结构。

图中的** Hub 是一类特殊的 USB 设备,它是一组 USB 的连接点主机中有一个被嵌入的 Hub 叫根 Hub(root Hub)主机通过根 Hub 提供若干个连接点**。为了防止环状连接,采用星形连接来体现层次性。
USB架构中, hub负责检测设备的连接和断开,利用其中断IN端点(Interrupt IN Endpoint)来向主机(Host)报告。在系统启动时,主机轮询它的根hub(Root Hub)的状态看是否有设备(包括子hub和子hub上的设备)连接。

USB总线的总体结构

整个** USB 总线可以分为 3 个部分进行描述:USB 连接USB 设备USB 主机**。

USB 主机
在 USB 总线中只有一个主机。USB 总线与计算机主机系统的接口部分就是主机控制器,它可被看做一个硬件、固件和软件的结合体。主机系统中集成了一个根 hub 来提供一个或多个连接点

USB 设备
首先 USB 设备可被分为两大类:hub 类(提供附加 USB 接入点的设备)和功能设备类(为系统实现某些功能的设备,如 ISDN 适配器、数字游戏杆等)。
按照功能,USB 设备又可分为很多类,如:音频、人机交互、显示、通信、电源、打印机、海量存储、物理反馈等设备。每个 USB 设备都必须提供自鉴定信息和通用的设置 
USB 设备都有一个标准的USB接口,它的作用为:解释 USB 协议对标准 USB 操作的响应,如挂起和设置等;提供设备的一些描述信息
在实际的设计应用中,USB 设备的接口有自已的特点。USB 接口的正确设计与设备的性能紧密相关,在 USB接口设计之前必须要对设备的功能、指标进行详细的分析。
连接在 USB 接口上的设备通过基于令牌和主机控制的协议来共同享用整个 USB 带宽。在其它设备正常工作的前提下,USB 允许某设备连接、设置、运行和断开连接。

USB 连接
USB 连接是指 USB 主机和 USB 设备的通信方式与方法,包括:总线拓扑(USB主机和设备之间的连接方式);层内关系(USB总线每一层中的任务);数据流模式(数据在USB总线上的流动方式);USB 调度( USB 提供一个共享的服从调度的互连)
USB 设备是通过 USB 总线连接到 USB 主机上的。USB总线上的物理连接是一个分层的星形拓扑处于每个星形拓扑中央的是 hub(USB 集线器)。在主机和一个hub或者一个应用之间以及在 hub 和其它 hub 或应用之间都是一个点对点的连接。

USB传输方式

USB endpiont有四种类型,分别对应了不同的数据传输方式,分别为control transfers控制传输、interrupt transfers中断传输、Bluk Data transfers批量传输、Isochronous Data Tranfers等时传输。

控制传输:控制传输是双向传输数据量通常比较小,通常用于配置设备,获取设备信息,发送命令到设备。
批量传输主要应用在数据大量传输,同时又没有带宽和间隔时间要求的情况下,进行可靠传输。比如:U盘拷贝数据。
中断传输:中断传输主要用于定时查询设备是否有中断数据要传输设备的端点模式器的结构决定了它的查询频率,从1到255ms之间。这种传输方式典型的应用在少量的、分散的、不可预测数据的传输,比如,键盘和鼠标就属于这一类型。中断传输是单向的并且对于host来说只有输入的方式。
等时传输:等时传输提供了确定的带宽和间隔时间,它被用于时间严格并具有较强容错性的流数据传输,或者用于要求恒定的数据传输率的即时应用中。比如:USB摄像头。

USB的数据传输方式

USB总线是串行总线(跟串口一样),数据是一位一位地在数据线上进行传输的。LSB在前,最低位先发出,接下来是次低位,最后才是最高位(MSB)。

USB设备开发流程

  1. 首先确定USB系统的开发类型,是USB主机、USB从机还是USB OTG。
  2. 如果确定是USB设备,必须确定设备类型:HID、UDIO、CDC、HUB、IMAGE等。
  3. 查找相关设备手册,确定其描述符。
  4. 完成描述符后,编写USB枚举程序,观察是否枚举成功,如果枚举成功了,此设备开发已经完成大部分。
  5. 编写应用程序,在枚举成功后,主要是进行数据处理,编写应用程序。

如何区分USB2.0与USB3.0

电脑上的USB接口是3.0还是2.0可以通过三个方法区分:颜色区分法触片法区分法标识区分法
1、USB3.0与USB2.0外观区别,观察USB(本身)的插口和电脑上USB插口,中间的塑料片颜色:USB3.0——蓝色;USB2.0——黑色或者白色。

2、不能通过颜色区分,也可以看接口针脚数。USB3.0相较于USB2.0多了几个针脚,在Type-A接口上,接口的里面多了5个针脚,Type-B接口则在接口上方多了一块。

USB3.0采用的是两排共9个针脚的设计。

3、标识区分法,根据在插口旁边的符号来区分,如下图。USB3.0的“SS”代表着“SuperSpeed”。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

es6-string-html vscode插件 js里面template的高亮插件 无构建vue使用

es6-string-html vscode插件 js里面template的高亮插件 无构建vue使用 这个插件可以让js里面的template的字符串高亮,前面加 /*html*/Refference: 无构建和打包,浏览器直接吃上Vue全家桶? https://juejin.cn/post/7399094428343959552-------------------------------------…

mesh组网

转自Wi-Fi mesh技术介绍 (qq.com) 什么是FTTR FTTR是光纤到房间(Fiber to The Room)的缩写 十兆时代,光纤到楼,FTTB(Fiber to The Building) 百兆时代,光纤到户,FTTH(Fiber to The Home) 千兆时代,光纤到房间,FTTR(Fiber to The Room) FTTR是千兆时代家庭网络的…

js拖动调整元素宽度

dom结构,一个盒子中包含左中右是三个元素,resize为拖动元素,左侧固定宽度,右侧元素flex:1 css部分,拖动元素的样式,左右两边按实际情况修改 js部分:const handleResize = (leftMinWidth = 0, rightMinWidth = 200) => { const leftDom = document.getElementById(…

亮点功能 | 企业数据传输限速,应对多种场景,当然要精、准、稳!

企业在进行数据和文件传输时,会尽量提升传输速度来提高业务效率,但在一些特定情况下,传输速度并非越快越好,反之要对其进行限制、控制在一定范围内,这便是传输限速需求。传输限速需求普遍存在于不同领域和企业中,如云服务提供商、电信运营商、大型企业、事业单位以及金融…

LabVIEW的ActorFramework笔记

1 前置知识储备 自分布式计算出现以来,业界已经开始广泛研究基于消息传递编程模型的解决方案。关于消息传递,Wikipedia 描述其广泛定义主要包括:远程过程调用(Remote Procedure Calls, RPC) 和 消息传递接口(Message Passing Interface, MPI)。但是,如今我们所谈到的消…

数据跨境传输的安全合规风险如何规避?获取免费解决方案白皮书!

在全球化的背景下,企业进行有 效的资源整合,学习海外市场的先进技术和管理经验,寻找新的增长点,实现业务的多元化和 可持续发展,不仅有利于开辟新市场,更有助于巩固和增强企业在全球中的地位。在这种前景 下,越来越多的企业寻求更深度的跨国业务及合作,因此,企业数据跨…

IC设计企业如何真正实现便捷又高效地云租户文件传输?

越来越多的IC设计企业选择开通云租户的方式进行半导体芯片的设计和验证工作,也即在HPC环境中进行芯片设计流程,对于IC设计企业而言,使用云租户有明显的好处和优势: 资源分配:云平台会根据租户的需求分配相应的资源,如独立的身份ID、虚拟私有云(VPC)等。每个租户都拥有自…

给我5分钟,保证教会你在vue3中动态加载远程组件

前言 在一些特殊的场景中(比如低代码、减少小程序包体积、类似于APP的热更新),我们需要从服务端动态加载.vue文件,然后将动态加载的远程vue组件渲染到我们的项目中。今天这篇文章我将带你学会,在vue3中如何去动态加载远程组件。 欧阳写了一本开源电子书vue3编译原理揭秘,…

结合实例看 maven 传递依赖与优先级,难顶也得上丫

开心一刻 想买摩托车了,但是钱不够,想找老爸借点 我:老爸,我想买一辆摩托车,上下班也方便 老爸:你表哥上个月骑摩托车摔走了,你不知道?还要买摩托车? 我:对不起,我不买了 老板:就是啊,骑你表哥那辆得了呗,买啥新的先抛问题 关于 maven 的依赖(dependency),我相…

EmpireCMS_V7.5 sql注入漏洞

没有什么好说的侵权声明 本文章中的所有内容(包括但不限于文字、图像和其他媒体)仅供教育和参考目的。如果在本文章中使用了任何受版权保护的材料,我们满怀敬意地承认该内容的版权归原作者所有。 如果您是版权持有人,并且认为您的作品被侵犯,请通过以下方式与我们联系: […

增强用户体验:2个功能强大的.NET控制台应用帮助库

前言 对于.NET开发者而言,构建控制台应用程序时,如何提升用户交互的流畅性和满意度,是一个持续探索与优化的话题。今天大姚给大家分享2个功能强大的.NET控制台应用帮助库,希望可以帮助大家能够快速的构建漂亮、强交互性、丰富功能的控制台应用程序。 Terminal.Gui Terminal…

2024牛客暑期多校训练营7

你说的对但是今天是伟大的御阿礼之子第九代稗田阿求同志的三十华诞目录写在前面JIKDCH写在最后 写在前面 比赛地址:https://ac.nowcoder.com/acm/contest/81602#question 以下按个人难度向排序。 dztlb 大神回去补办身份证了,于是单刷,打的像史。 呃呃抽象场。 J 签到。 手玩…