USB是我们生活非常普遍的技术,通过USB,我们可以连接各种身边的电子设备,比如手机、音箱、打印机、扩展坞、有线网卡,无线网卡、鼠标、键盘、U盘等等,想插就插,不用就直接拔了,非常的方便与快捷。那么大家是否也好奇这么灵活的USB,它到底有些神秘的地方呢,本文就给大家揭开它神秘的面纱。

USB(Universal Serial Bus)全称通用串口总线,设计初衷为解决即插即用需求而诞生,支持即插即用和热插拔。它的原理是设计一个外部总线标准,用于规范电脑与外部设备的连接和通讯,支持127种外设的连接与数据传输。USB是由英特尔等几家互联网公司于1996年联合推出, 经过了三十多年的时间,基本取代和并口和串口。随着生活中电子设备种类的繁多,为了适应不同类型设备对传输速率和功耗的需要,USB协议版本从最初的USB1.0,逐渐升级为USB1.1、USB2.0、USB3.1以及现在大家熟知的Type-C协议。

在USB1.0与USB1.1的时代,USB接口仅支持 1.5Mb/s的低速模式和12Mb/bs的全速模式,USB2.0以后,速率得到了大幅度的提升,达到了 480Mb/s的高速模式,USB3.0更是有了质的变化,传输速度理论上可以达到5Gb/s,但事实上由于编码和协议的开销,速度接近4Gb/s,这样的速度已经完全可以适应我们生活中的大多数电子设备了。这里可能很多朋友会问,既然USB3.0的速度已经基本可以满足我们的日常使用,为什么会推出Type-C接口呢?TYPE-C是在USB3.1的基础上开发的,传输数据更加的快速和稳定,并且接口更加薄,还支持正反插入,能够给用户带来更好的体验,除了这些特点,它还支持3.0A的电流,最大可提供100w的电力,这就是大家熟悉的快充。

虽然,USB接口可以连接的设备非常的多,但其实大体分为四类:HID、MSC、CDC、Audio/Video。

HID类:主要用于人机交互设备,外部设备通过USB连接后实现对计算机的控制,比如鼠标、键盘、摇杆、方向盘等等;

MSC类:大容量USB设备,依赖于USB2.0,3.0协议提供的高速传输速率,比如U盘、移动硬盘等;

CDC类:USB组织定义的一类专门给各种通讯设备使用的USB子类,这是一个非常大的USB子类协议簇,根据USB类所针对的设备不同划分为不同的通讯模型(如USB转串口),比如有线网卡、无线网卡、蓝牙、扩展坞(USB HUB)类设备等;

Audio/Video: 用于传输声音和视频等信号、比如USB音响和摄像头等;

最后,我们来简单介绍一下USB设备的通信原理。

USB接口的结构

比较简单,一个四四方方金属插口,里面有一个塑料块,中间有四个小的金属片。USB2.0有4根线,2根信号线和2根电源线,中间塑料块为蓝色,USB3.0,有5根线,加了一条地线,中间塑料块为蓝色。外部设备通过USB接口插入计算机后,大致会经过四个阶段:

  1. 先通过复位操作,将设备的通讯地址临时设置为0;然后计算机会往地质为0的设备发送一个获取设备描述信息的请求,设备收到请求后将设备描述信息发送给主机;
  2. 主机获取到设备描述信息后,如果信息正常解析并无误的话,就会再次给设备分配一个正式的地址,同时会发送一个ACK确认请求;
  3. 主机如果正常收到ACK请求,就会向设备获取完整的描述信息的请求;
  4. 主机会再次让设备获取描述符,如果能够收到正确的反馈,那么我们的USB设备就可以正常与主机通信了。

PS:从上面建立连接的过程,我们不免会发现,其实主机和设备的关系是主从模式的;这里之所以多次向设备获取描述信息,其实一方面为了确保通信链路的畅通,另一个描述信息是一串标准的定义,可以帮助主机知道连接进来的设备是什么,需要有哪些配置,后续如何通信。

USB传输协议

USB的传输协议也有四种,分别满足不同的场景。

  1. 批量传输:非周期性,突发性,主要场景比如扫描仪,打印机还有U盘和移动硬盘等设备(MSC类)。
  2. 中断传输:周期性、低频率,主要场景像我们鼠标、键盘都属于这一类设备(HID类)。
  3. 等时传输:持续传输、周期性,这个就跟时效有关,比如我们音响、摄像头等等。
  4. 控制传输:非周期性、突发性,这一块主要是用于命令控制和状态获取、比如设备的连接、断开、保持等检测。