USB Overview
1.概述
USB(Universal Serial Bus) 是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,可以用来支持通信和供电,被广泛地应用于个人电脑和移动设备等信息通讯产品,并扩展至摄影器材、数字电视(机顶盒)、游戏机等其它相关领域, 也取代了很多原有的接口,例如串口、并口.
相比于其他外设连接, USB的优势如下:
从使用者的角度来说:
USB接口可以自动配置, 不需要使用者去设置usb设备的速度, 数据格式, 或者配置中断, 输入/输出地址, 直接访问内存的通道等等.
USB设备的插头都是标准化的
USB可以根据使用情况自动调节功耗, 在空闲的状态下做到节能.
USB设备支持热插拔(插入新设备或者把设备从一个接口换到另一个接口, 不需要重启主机).
USB接口可以支持小型USB设备的供电, 不需要额外的供电.
因为使用USB logo需要经过承诺测试, 通过测试的设备不会进行一些使用者不知情的设置或配置, 可以放心使用.
USB接口有能力修复一些常见问题, 让使用更加稳定可靠.
安装USB设备做到了最大程度的方便易用. 当一个USB设备插入到一台运行的主机上, 有时可以自动匹配到合适的驱动并安装; 有时会弹出一些合适的驱动供用户选择, 选择之后的安装过程完全自动化, 不需要用户的操作.
从制造商的角度来说
USB的标准化让制造商免去了很多设计工作.
USB接口的传输速度既能支持一些简单设备, 例如鼠标键盘, 也可以支持视频设备传输大量流媒体数据.
USB接口可以被设计成实时反馈也可以在后台传输不占用系统资源.
USB接口不会出现一条信号线只提供单一功能的情况.
2.接口类型和发展历史
USB1.x
1996年第一次发布的USB1.0,传输速率是1.5 Mbit/s。
1998年进行了升级,推出了USB1.1,速度可以达到12 Mbit/s。
USB2.0
2000年的时候,USB进行了大升级,推出了USB2.0,速度可以达到480 Mbit/s,被称作高速USB(named High Speed or High Bandwidth)。
USB3.x
2008年发布的USB3.0,速度可以达到5.0 Gbit/s,是USB2.0速度的10倍。
2013年又发布了USB3.1,速度可以达到10 Gbit/s。
2017年发布的USB3.2,速度达到了20 Gbit/s。
USB4.0
2019年的USB4,是目前最快的版本,速度为 40 Gbit/s。
由于连接的设备不同,USB线的接口形状也不太相同。
Type A
Type-A是标准USB接口,其他接口只是它的衍生物,一般连接pc端的都是type Aj接口。
Type B
Type B接口是方形设计,顶部带有斜角。主要是打印机和麦克风在用。
还有一种mini版本的Type B,叫做mini B,很少见,主要用在比较旧的手机上。
Micro B是mini B的后续版本,体型更轻薄,可以用在更薄的设备上,所以使用也更广泛。
Type B 3.0比上面提到的Type B接口多了5个引脚,支持USB3.0协议,传输速度更快,而且还能给设备供电。
Type B micro 3.0也是支持USB3.0协议,体型也薄,在移动硬盘设备上比较常见。
Type C
上面的Type B设备目前都被2014发布的Type C逐渐取代,这种接口没有上下、正反之分,可以实现盲插。据统计,平均每人每年在插USB上浪费的时间是30分钟!第一次插总是插不进去的,多次插拔到怀疑人生时,最后发现还是第一次的才是对的,后面的N次尝试不过是人生中的小小曲折,有了type-C接口后终于可以一次搞定了。
下图总结了我们提到的历史和不同类型的接口。
3.物理拓扑结构
主机和USB设备通过USB总线连接的, USB的物理连接是一个树状结构, 在集线器(Hub)上可以连接其他集线器或者设备, 如下图所示. 由于数据传输时间的限制, 树的最大层数是7层.
这棵树主要包括USB连接, USB host controller和USB设备三部分, 其中USB设备包括hub和功能设备(也就是图中的func).
USB连接
USB连接指的是连接USB设备和主机或hub的四条电缆, 其中包括VBUS用于供电, GND接地, D+和D-两条数据线提供差分信号.
Host controller
Host controller是USB主控制器, 用于控制USB设备的通信. 计算机的CPU不会直接和USB设备打交道, 如果CPU需要USB设备做什么事, 它会告诉控制器, 然后不用管下面的事了, 由控制器去完成剩下的事情, 事情办完后再通知CPU.
USB设备
USB设备包括我们常见的键盘 鼠标 u盘等功能设备, 给系统提供特定的功能; 也包括hub, 用于连接功能设备或者下一级的hub形成树状结构. 在上图中的塔顶位置, USB控制器和一个特殊的hub绑定在一起, 这个hub被称作root hub, 一台主机上所有的USB设备都是由root hub这里延伸出去的.
有两种特殊的设备: compound device 和 composite device
如下图所示, compound device是将hub和连在hub上的设备封装在一起所组成的设备,它里面包含的hub 和各个设备都会有自己独立的地址; 而composite device是包含彼此独立的多个接口的设备(参考下面对接口的介绍), 一个composite device 里不管有多少接口, 它都只有一个地址.
4.设备 配置 接口 端点 管道
5.1 介绍
在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。
设备(device):
一个设备里包含了不同级别的配置,可以有一个或者多个配置。
配置(configuration):
USB接口被捆绑为配置。一个USB设备可以有多个配置,而且可以在配置之间切换以改变设备的状态,但一个时刻只能激活一个配置。
接口(interface):
USB接口代表一个基本功能, 只处理一种USB逻辑,例如鼠标,键盘或者音频流. 一些USB设备具有多个接口,例如一个USB声卡有两个接口,一个用来播放声音,一个用来录音。每个USB接口都需要一个USB驱动程序控制,因此,以上述USB声卡为例,需要两个不同的驱动程序来处理一个硬件设备。
端点(endpoint):
端点(endpoint)是USB通信的最基本的形式,每个USB设备在主机看来就是一个端点的集合。主机只能通过USB端点只能往一个方向传送数据,从主机到设备(称为输出端点out)或者从设备到主机(称为输入端点in). 需要注意的是每个USB设备都有一个名为“端点0”的控制端点, 用于初始化设备等功能, 只要设备连上USB接口, 端点0就能被访问. 端点1 2等用于数据端点, 存放主机设备间的数据.
管道(pipe)
主机和端点之间的数据通过管道传输, 一端是主机上的数据缓冲区, 另一端是设备上的端点.
5.2 描述符
USB协议定义了一套描述设备功能和属性的有固定结构的描述符,用来描述上述的设备、配置、接口、端点等,在文档USB传输协议 里有具体介绍。