USB协议简介

1.USB简介

USB,是英文 Universal Serial BUS (通用串行总线)的缩写,其中文简称“通串线”,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在 PC 领域的接口技术。USB 接口支持设备的即插即用和热插拔功能。 USB 是在 1994 年底由英特尔、康柏、 IBM、Microsoft 等多家公司联合提出的。

2.USB的特点

(1) 简化计算机与外围设备的连接;
(2) 即插即用 PnP(Plug and Play)(在计算机运行过程中随意地接入,并且立刻就能正常投入工作),支持热插拔(在系统不重启,不断电的情况下可以更换设备);
(3) 传输速度快,在 USB1.0 和 USB1.1 版本中,只支持 1.5Mb/s 的低速模式和 12Mb/s 的全速模式。在 USB2.0 中,又加入了速度更快 480Mb/s 的高速模式,USB3.0 协议高速模式达 5Gb/s。

这里写图片描述

3.USB的缺点

(1) 传输距离短;
(2) 开发、调试难度大。

4.USB接口定义

标准 USB 共四根线组成,除 VCC/GND 外,另外为 D+(DP,Data Positive),D-(DM,Data Minus); 这两根数据线采用的是差分电压的方式进行数据传输的。在 USB 主机上, D+ 和 D- 都是接了 15K 的电阻到地的,所以在没有设备接入的时候, D+、 D- 均是低电平。而在 USB 设备中,如果是高速设备,则会在 D+上接一个 1.5K 的电阻到 VCC,而如果是低速设备,则会在 D-上接一个 1.5K 的电阻到 VCC。这样当设备接入主机的时候,主机就可以判断是否有设备接入,并能判断设备是高速设备还是低速设备。
这里写图片描述

5.USB描述符的作用

USB 只是一个总线,只提供一个数据通路而已。USB 总线驱动程序并不知道一个设备具体如何操作,有哪些行为。具体的一个设备实现什么功能,要由设备自己来决定。那么USB主机是如何知道一个设备的功能以及行为呢?这就要通过描述符来实现了。描述符中记录了设备的类型、厂商ID和产品ID(通常依靠它们来加载对应的驱动程序)、断点情况、版本号等众多信息。
USB 2.0 协议定义的标准描述符有:

  • 设备描述符(Device Descriptor)
  • 配置描述符(Configuration Descriptor)
  • 接口描述符(Interface Descriptor)
  • 端点描述符(Endpoint Descriptor)
  • 字符串描述符(String Descriptor)
  • Device Qualifier Descriptor
  • Other Speed Configuration Descriptor
  • 还有一些特殊描述符、厂商自定义描述符等。

(1)设备描述符主要记录的信息有:设备所使用的USB版本号、设备类型、端点0的最大包大小、厂商ID(VID)和产品ID(PID)、设备版本号、厂商字符串索引、产品字符串索引、设备序列号索引、可能的配置数等。
(2)配置描述符主要记录的信息有:配置所包含的接口数、配置的编号、供电方式、是否支持远程唤醒、电流需求量等。
(3)接口描述符主要记录的信息有:接口的编号、接口的端点数、接口所使用的类、子类、协议等。
(4)端点描述符主要记录的信息有:端点号及方向、端点的传输类型、最大包长度、查寻时间间隔等。
(5)字符串描述符主要是提供一些方便人们阅读的信息,它不是必需的。

6.USB四种传输类型

  • 控制传输(Control Transfers):非周期性,突发,用于命令和状态的传输
  • 大容量数据传输(Bulk Transfers):非周期性,突发,大容量数据的通信,数据可以占用任意带宽,并容忍延迟
  • 同步传输(Isochronous Transfers):周期性,持续性的传输,用于传输与时效相关的信息,并且在数据中保存时间戳的信息。
  • 中断传输(Interrupt Transfers):周期性,低频率,允许有限延迟的通信。

7.USB设备枚举

USB主机在检测到USB设备插入后,就要对设备进行枚举了。什么是枚举呢?枚举就是从设备读取各种描述符信息,这样主机就可以根据这些信息来加载合适的驱动程序,从而知道设备是什么样的设备,如何进行通信等。
这里写图片描述

8.当设备连上以后

这里写图片描述

9.USB拓扑结构

  • USB总线基于分层的星状拓扑结构
  • 以Hub为中心,连接周围设备
  • 总线上最多可连接127个设备
  • Hub串联数量最多5个
  • 线缆长度最长5米
    这里写图片描述

9.USB数据传输过程

首先由USB主控制器发出命令和数据,通过根集线器,再通过下面的集线器(如果有)发给USB设备;设备对接收到的数据进行处理后,返回一些信息或者数据,它首先到达其上一层的集线器,上层的集线器再交给更上层的集线器,一直到USB主控制器为止;最终,USB主控制器将数据交给计算机的CPU处理。在标注的PC上,USB主控制器是挂接在PCI总线上的。在Windows中,由各种USB功能驱动程序负责产生和管理USB功能设备(FDO)。这就是我们最终所看到的实际设备。我们的应用程序可以通过Windows提供的一些API函数来访问USB设备,例如 CreateFile(),ReadFile()等。

猜你喜欢

转载自blog.csdn.net/xinghuanmeiying/article/details/79710156