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上。
PIPE:usb通信的最基本形式是通过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设备开发流程
- 首先确定USB系统的开发类型,是USB主机、USB从机还是USB OTG。
- 如果确定是USB设备,必须确定设备类型:HID、UDIO、CDC、HUB、IMAGE等。
- 查找相关设备手册,确定其描述符。
- 完成描述符后,编写USB枚举程序,观察是否枚举成功,如果枚举成功了,此设备开发已经完成大部分。
- 编写应用程序,在枚举成功后,主要是进行数据处理,编写应用程序。
如何区分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”。