近期在给客户做一个降本项目,其中涉及到USB输入设备相关的一些知识,问题排查过程会需要一些USB硬件结构的知识,此处对USB硬件基础做一个简单的整理。

USB相关的软件功能涉及 USB 存储、USB 输入设备(内置、外置) 相关模块,之前对于此部分没有具体的理解和封装,项目问题处理起来相对棘手,耗费的时间久,排查的方式相对有限。

目前相关问题解决的差不多了,考虑到这快的内容相对有价值(USB是嵌入式开发中比较常用的一种通信协议,学习IIC、SPI、UART、USB等通信协议是很有必要),值此契机,规整下 USB 相关的知识。

此次,先介绍下 USB 的基础,大致介绍一下其组成、类别、标准、软件架构、常见术语。

一、USB 组成:

USB实际上就是由四根线组成的分别是两根供电,两根差分传输数据的,如下图。

android 数据线有几种 安卓数据线构造_数据

编号1、编号4:为USB的电信号线,连接到 USB 接口的主机后,由主机向外置设备进行供电。

编号2、编号3:为USB的数据传输线,编号2为负信号线,USB Data Minus, 即USB-DM线,简写为D-;编号3为正信号线,USB Data Positive,即USB-DP线,简写为D+。

USB的结构决定了他的一些特性,比如热拔插,其实现的原理就是和这四根线相关的:

 1. USB插入时,USB 主机先向从属设备供电,而后两者才能进行数据方面的传输;

 2. USB拔出时,USB 主从设备先终止的是数据传输,再断开了主机与从属设备的供电。

二、USB 类别:

USB日常见得USB接口有很多种,但是实际上只有A、B、C三种,他们是根据不同设备而产生的的,还可以更细区分比如有mini头的、micro头的,分类大致可以如下图展示。

android 数据线有几种 安卓数据线构造_android 数据线有几种_02

 

三、USB 标准规范:

了解一下USB的规范也是很有帮助的,USB总成是通用串行总线,使得计算机上添加串行设备十分容易,将设别插入计算机USB端口中,系统就可以自动识别和配置。

需要注意的是USB3.0的规范引入的全双工数据传输,5根线两根传输数据两根发送数据,一根GND,此时就可以同步全速的进行读写操作了。

下面这个表可以明确的表示USB规范发展的历程:

USB版本

上线时间

最大传输速率

特性

应用

速率简称

最大输出电流

USB 1.0

1996年1月

1.5Mbps(192KB/s)

  1. 成本低
  2. 易于使用
  3. 热插拔
  4. 同时使用多个外设

交互式设备:

  1. 键盘、鼠标、手写笔
  2. 游戏手柄、操作摇杆等外设
  3. 虚拟设备

低速(Low-Speed)

5V/500mA

USB 1.1

1998年9月

12Mbps(1.5MB/s)

  1. 包含USB 1.0 的完整特性
  2. 可保证的带宽
  3. 可保证的延迟

电话、音频类、压缩的视频类

  1. 话音
  2. 宽带
  3. 音频
  4. 麦克风

全速(Full-Speed)

5V/500mA

USB 2.0

2000年4月

480Mbps(60MB/s)

  1. 包含USB 1.1 的完整特性
  2. 高带宽

视频、大容量存储

  1. 视频
  2. 大容量存储
  3. 图像
  4. 宽带

高速(High-Speed)

5V/500mA

USB 3.0

2008年11月

5Gbps(500MB/s)

  1. 包含USB 2.0 的完整特性
  2. 极大的提高带宽,高达5Gbps全双工(USB2.0则为480Mbps半双工)
  3. 实现更好的电源管理功能
  4. usb 3.0让主机更快的识别硬件且为硬件提供更高的功率
  5. 全新的协议提高数据处理效率

应用广泛,深受各大PC厂商的认可

超高速(Super-Speed)

5V/900mA

USB 3.1

2013年12月

10Gbps(1280MB/s)

  1. 包含USB 3.0 的完整特性
  2. 数据吞吐量有效率较 USB 3.0 提升1倍以上
  3. 接口向下兼容
  1. 手机充电
  2. 数据传输
  3. 显示输出领域

超高速+(Super-Speed+)

20V/5A

四、USB 系统架构:

USB系统是由三个逻辑层组成:功能层、USB设备层、USB总线接口层,并且每一层都是由主机和USB设备不同的功能模块组成如下图所示:

android 数据线有几种 安卓数据线构造_android 数据线有几种_03

 

  1. 功能层:由客户软件和设备方的功能单元组成,其能够实现USB设备传输的特定功能,通过功能层可以直观的理解USB传输的数据内容。功能单元对于客户软件,可视为接口的集合
  2. 设备层:由USB系统软件和USB设备的USB逻辑设备组成,实现主机与USB设备之间传输的具体配置,USB逻辑设备对于USB系统软件可以视为端点的集合。
  3. 总线接口层:由主机的USB主控制器和设备的USB总线接口组成,实现了实际的数据传输。

USB 主机:由客户软件、USB系统软件和USB总线接口组成。

                   客户软件负责和USB设备的功能单元进行通信,以实现特定的功能,客户软件与USB总线不能直接相连,客户软件包括USB设备驱动程序和界面应用程序两部分。

                   USB系统软件负责和USB逻辑设备进行配置通信,并管理客户软件启动的数据,一般包括USB总线驱动程序,USB主控制驱动程序和USB主机软件三个部分,由系统提供。

                   USB总线接口包括主控制器跟集线器两部分,其中主控制器是负责完成主机和USB设备间的数据实际传输。

设备部分:由三个功能模块组成,分别是USB总线接口、USB逻辑设备、功能单元。 

                  功能单元看作是一个接口的集合;

                  USB 逻辑设备被USB系统软件看作一个端点的集合;

                  USB总线接口是USB设备中的串行接口引擎(SIE)。

五、常见术语:

  1. 设备:设备代表USB设备,它由一个或多个配置组成,设备描述符用于说明设备的总体信息,并指出其所包含配置的个数。
  2. 配置:使用USB设备前,必须为其选择一个合适的配置,如USB高消耗、低消耗模式分别对应一个配置,配置描述符用于说明USB设备中各个配置的特性
  3. 接口:一个接口可以包含一个或多个接口,接口就是一个端点的集合,接口描述符用于说明USB设备中各个接口的特性
  4. 端点:端点是USB设备中实际物理单元,USB传输就是在主机和USB设备各个端点之间进行的。
  5. 管道:主机软件(数据缓冲区)和USB设备的各个端点之间的数据传输链接,它是两者之间通信流的抽象。然而,实际的数据传输是由USB总线接口层来完成的管道和USB设备中的端点一一对应,并且各个管道的数据传输是相互独立的