初次接触USB的同学,可能会被里面各种名词给搞晕,下面就来梳理一下这些知识,希望能帮助大家理解USB。
一,从最常见的名词说起
1.1 什么是USB
这个我就不多解释了,直译就是通用串行总线。再不明白的就百度。
1.2 USB协议版本
- USB 1.0/1.1(low/full speed),传输速率最大为12Mbps
- USB 2.0(high speed),传输速率最大480Mbps
- USB 3.0(super speed),传输速率最大5Gbps
协议版本向下兼容
1.3 USB接口分类
- Type A,即使我们电脑上的那种接口。
- Type B,不太常见,比较方正的T型接口,有的嵌入式开发板会用。
- Type C,现在开始流行起来了,最大的好处就是可以盲插,而不用区分正反。
- Micro/mini,手机上比较常见。
不管哪种接口,用的线都是4根,只是形状不同而已。
1.4 PIPE
usb通信的最基本形式是通过USB设备里的endpoint,而主机和endpoit之间的数据传输就是通过pipe
1.5 endpoint
端点是有方向的,主机到从机成为out端点,从机到主机成为in端点。从这个说明看出端点是单方向的。(除了0端点)
1.6 管道通信方式
pipe中的数据通信方式有两种,一种是stream
一种是message
。message
要求进出进出方向必须要求同一个管道,默认就使用ep0
作为message
管道
1.7 传输方式
USB endpiont有四种类型,分别对应了不同的数据传输方式,分别为control transfers控制传输
、interrupt transfers中断传输
、Bluk Data transfers批量传输
、Isochronous Data Tranfers等时传输
控制传输
通常用于配置设备,获取设备信息,发送命令到设备
1.7 逻辑设备
逻辑设备就是一系列端点的组合,逻辑设备与主机之间的通信发生在一个主机的缓冲区和设备的一个端点之间。
1.8 interface
一个逻辑设备可能包含若干个接口,每个接口包含1个或多个端点。每个接口表示一种功能。一个接口对应一个驱动程序。例如usb扬声器就包含一个键盘接口和一个音频流接口
1.9 class协议
USB协议中除了定义一些通用软硬件电气特性,还包含各种各样的class协议,用来为不同的功能定义各自的标准接口
和具体总线上的数据交互内容和格式
。例如u盘的Mass storage class
、通用数据交换CDC class
1.10 host/device
二,USB框架/拓扑结构
USB架构中, hub负责检测设备的连接和断开,利用其中断IN端点(Interrupt IN Endpoint)来向主机(Host)报告。在系统启动时,主机轮询它的根hub(Root Hub)的状态看是否有设备(包括子hub和子hub上的设备)连接。
三. 重要概念
3.1 描述符(description)
谈到USB描述符,不得不说USB最强悍的地方就在这里。一个口可以插很多的设备,可以插U盘、上网卡、音频设备、还有的是复合设备,一个设备插上后可以虚拟出多个设备出来
主设备之所以能区分不同的从设备&#x