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主机控制器类
型OHCIUHCIEHCIxHCI
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微⼩的
都实现了对应的USB的规范中所要求的功
能
区别
共同点
对应的USB的协议和⽀持的速率USB 1.1=LowSpeed和FullSpeedUSB 2.0=High
SpeedUSB 3.0=Super
Speed
创⽴者
功能划分
常⽤于
Compaq,Microsoft和扩展卡,嵌⼊式
硬件功能 > 软件功能⇒硬件做的事情更多,所
National开发板的USB主
以实现对应的软件驱动的任务,就相对较简单
Semiconductor控
IntelIntelIntel
软件功能 > 硬件功能⇒软件的任务重,可以使PC端的主板上的
⽤较便宜的硬件的USB控制器USB主控定义了USB 2.0主控中所要实现何种功能,以各种USB 2.0主
及如何实现控定义了USB 3.0主控中所要实现何种功能,以各种USB 3.0主及如何实现控
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 Usage00h01h02h03h05h06h07h08h09h0Ah0Bh0Dh0Eh0FhDChE0hEFhFEhFFh
DeviceInterfaceBothInterfaceInterfaceInterfaceInterfaceInterfaceDeviceInterfaceInterfaceInterfaceInterfaceInterfaceBothInterfaceBothInterfaceBoth
Audio
Communications and CDC ControlHID (Human Interface Device)PhysicalImagePrinterMass StorageHubCDC-DataSmart CardContent SecurityVideo
Personal HealthcareDiagnostic DeviceWireless ControllerMiscellaneousApplication SpecificVendor Specific
Description
Use class information in the Interface Descriptors
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电流。
因篇幅问题不能全部显示,请点此查看更多更全内容