USB基本概念介绍

时间:2024-01-30 20:07:16

1、什么是USB

USB是Universal Serial Bus的缩写,翻译为中文就是通用串行总线。在USB出现之前,计算机领域已经存在很多的接口,这些接口互相都有自己的应用领域,并且之间互不兼容,用户为了使用不同的应用,需要配置不同的硬件接口。USB的出现就是为了解决这些问题,通过单个的USB接口,同时支持不同的应用,方便不同设备的互联。说白了,USB就相当于在众多接口之上,设计出一个万能的USB接口,以后各种外设都可以使用这种接口。

2、USB相关的硬件

2.1 USB主机控制器

USB设备,从物理上的结构来看,包含了主机Host端和设备Device端。其中,主机端有对应的USB的主机控制器Host Controller,而设备端,对应的是USB设备。例如,我们日常使用的台式电脑的机箱上的USB接口就属于主机控制器一种,用以存储资料的U盘属于USB设备一种。

由于历史原因,USB的主机控制器有多种不同的类型,分为OHCI和UHCI、EHCI和XHCI。尽管不同的USB主控类型有着不同的特点,但他们都符合对应的USB规范,都实现了USB规范中所规定的USB主控所要实现的内容。不同类型USB控制器之间简要概括可以如下表所示:

USB主机控制器类型共同点区别
对应的USB的协议和支持的速率创立者功能划分常用于
OHCI 都实现了对应的USB的规范中所要求的功能 USB 1.1=Low Speed和Full Speed Compaq,Microsoft和National Semiconductor 硬件功能 > 软件功能⇒硬件做的事情更多,所以实现对应的软件驱动的任务,就相对较简单 扩展卡,嵌入式开发板的USB主控
UHCI Intel 软件功能 > 硬件功能⇒软件的任务重,可以使用较便宜的硬件的USB控制器 PC端的主板上的USB主控
EHCI USB 2.0=High Speed Intel 定义了USB 2.0主控中所要实现何种功能,以及如何实现 各种USB 2.0主控
xHCI USB 3.0=Super Speed Intel 定义了USB 3.0主控中所要实现何种功能,以及如何实现 各种USB 3.0主控

2.2 USB接口的引脚定义

USB 1.x/2.x共有4个引脚,分别为VBUS、D-、D+、GND

  • VBUS:+5V电源引脚
  • D-:data-,数据线,与D+构成差分信号
  • D+:data+,数据线,与D-构成差分信号
  • GND:Ground,地线

在USB主机端的每个端口的D+和D-上,分别接了一个15K欧姆的下拉电阻到地。这样,在USB主机端的端口悬空时,就被这两个下拉电阻拉到了低电平。而在USB设备端,在D+或者D-上接了1.5K欧姆上拉电阻。对于全速和高速设备,上拉电阻是接在D+上,而低速设备则是上拉电阻接在D-上,连接方式如下图所示:

这样,当设备插入到主机端的端口上时,由1.5K的上拉电阻和15K的下拉电阻分压,结果就将差分数据线中的一条拉高了。主机控制器检测到这个状态后,它就报告给USB主控制器,这样就检测到设备的插入了。USB高速设备先是被识别为全速设备,然后通过HOST和DEVICE两者之间的确认,再切换到高速模式的。在高速模式下,是电流传输模式,这时将D+上的上拉电阻断开。

2.3 USB的连接端口类型

USB的连接端口类型,即指各种不同的插头插座。插座被称为母头,也就是主机端的用于等待设备连接的端口;插头即公头,设备用于连接主机端的接口。

由于USB的产生就是为了支持众多种应用的,而由于各种应用中,对于硬件接口的大小也有一些限制,比如有些小型设备或者移动式设备中,接口不能太大等,所以而设计出多种类型的接口,用于不同的应用。

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

  1. 普通的硬件直接叫做Type
  2. 然后有小型版本的叫Mini迷你的
  3. 和更加小的,叫做Micro微小的

3、USB的传输方式

USB共有4大传输方式,分别为控制传输、中断传输、批量传输、实时传输。

控制传输(control)

每一个USB设备必须支持的,通常用来获取设备描述符、设置设备的状态等。一个USB设备从插入到最后的拔出这个过程一定会产生控制传输,即便这个USB设备不能被这个系统支持。

中断传输(interrupt)

支持中断传输的典型设备有USB鼠标、 USB键盘等。中断传输并不是我的设备真正触发主机进入中断,然后主机会来读取数据,它其实是一种轮询的方式来完成数据的通信。USB设备会在设备驱动程序中设置一个参数叫做interval,它是endpoint的一个成员。 interval是间隔时间的意思,表示我这个设备希望主机多长时间来轮询自己,只要这个值确定了之后,我主机就会周期性的来查看有没有数据需要处理。

批量传输(bulk)

支持批量传输最典型的设备就是U盘,它进行大数量的数据传输,能够保证数据的准确性,但是时间不是固定的。

实时传输(isochronous)

USB摄像头就是实时传输设备的典型代表,它同样进行大数量的数据传输,数据的准确性无法保证,但是对传输延迟非常敏感,也就是说对实时性要求比较高

4、USB相关术语

4.1  Class

前面讲过,USB被设计的目的之一是为了实现用单一的USB接口取代之前种类繁多的各种其他接口。为了能取代之前的接口,意味着USB可以实现或支持之前的各种接口的各种功能,协议中对这些功能进行相关的定义。因此,就出现了各种USB Class,协议中定义的class如下表所示:

Base ClassDescriptor UsageDescription
00h Device Use class information in the Interface Descriptors
01h Interface Audio
02h Both Communications and CDC Control
03h Interface HID (Human Interface Device)
05h Interface Physical
06h Interface Image
07h Interface Printer
08h Interface Mass Storage
09h Device Hub
0Ah Interface CDC-Data
0Bh Interface Smart Card
0Dh Interface Content Security
0Eh Interface Video
0Fh Interface Personal Healthcare
DCh Both Diagnostic Device
E0h Interface Wireless Controller
EFh Both Miscellaneous
FEh Interface Application Specific
FFh Both Vendor Specific

USB class是根据功能进行划分的,不同的class实现不同的功能,适用于相应的设备。如HID(Human Interface Device),人体学输入设备,包含我们经常使用的鼠标和键盘;Mass Storage,包含我们日常使用的U盘等存储介质

4.2 枚举(Enumerate)

USB枚举,USB Emulation,从字面意思看,就是去列举USB,而列举是什么意思呢?其实就是USB的初始化

简单来说,USB的枚举,对应的就是USB的Host和Device之间的对话,即Host根据Device所报告上来的参数,得知USB的device是什么类型的,具有什么功能,然后初始化相关参数

接下来,就USB Device就可以正常工作了

所以,可以简单的理解为,USB枚举,就是USB设备的初始化(init)

4.3 端点(Endpoint)

端点是USB的传输对象,是USB设备通信的基本单位,所有通信几乎都是从端点发起的

比如我们说"读U盘"、"写U盘",可以细化为:把数据写到U盘的端点1,从U盘的端点2里读出数据。

除了端点0外,每一个端点只支持一个方向的数据传输,端点0用于控制传输,既能输出也能输入

设备中端点的编号是任意的。枚举期间外设向主机报告其端点号和特征

4.4 接口(Interface)

接口由多个端点组成,代表一个基本的功能,是USB设备驱动程序控制的对象,一个功能复杂的USB设备可以具有多个接口。

每个Interface模拟一个设备功能,比如集成了键盘和鼠标的USB设备,里面就是两个interface,一个是键盘,另一个是鼠标。Interface之间通常是隔离的,互相不干扰。

4.5 集线器(Hub)

集线器扩展了USB主机所能连接设备的数量。主机控制器内置一个集线器,负责完成一些底层USB功能,如检测设备的插入或拔出。

集线器以全速或高速连接到上行端口(到PC),以低速、全速或高速连接到下行端口(到外设)。PC的根集线器可为每个A型连接器提供5V、500mA。一个总线供电的外部集线器可为每端口提供100mA电流。由于USB为外部集线器电路分配100mA电流,因此,一个总线供电的集线器可以有四个下行端口。如果集线器有自己的电源(自供电),每个下行端口可提供高达500mA电流。