USB
USB(通用串行总线)是 Intel、Microsoft 等厂商为解决计算机外设种类的日益增加与有限的主板插槽和端口之间的矛盾而于 1995 年提出的,它具有数据传输率高、易扩展、支持即插即用和热插拔的优点,目前已得到广泛应用。
USB 1.1 包含全速和低速两种模式,低速方式的速率为 1.5Mbit/s,支持一些不需要很大数据吞吐量和很高实时性的设备,如鼠标等。全速模式为 12Mbit/s,可以外接速率更高的外设。
USB 2.0 中,增加了一种高速方式,数据传输率达到 480Mbit/s,半双工,可以满足更高速外设的需要。
USB 3.0(也被认为是 Super Speed USB)的最大传输带宽高达 5.0Gbit/s(即 640MB/s),全双工。
USB 2.0 总线的机械连接非常简单,采用 4 芯的屏蔽线,一对差分线(D+、D-)传送信号,另一对(VBUS、电源地)传送 +5V 的直流电。
USB 3.0 线缆则设计了 8 条内部线路,除VBUS、电源地之外,其余 3 对均为数据传输线路。其中保留了 D+ 与 D- 这两条兼容 USB 2.0 的线路,新增了 SSRX 与 SSTX 专为 USB 3.0 所设的线路。
在嵌入式系统中,电路板若需要挂接 USB 设备,则需提供 USB 主机(Host)控制器和连接器;若电路板需要作为 USB 设备,则需提供 USB 设备适配器和连接器。目前,大多数SoC 集成了 USB 主机控制器(以连接 USB 外设)和设备适配器(以将本嵌入式系统作为其他计算机系统的 USB 外设,如手机充当 U 盘)。
由 USB 主机、设备和 Hub 组成的 USB 系统的物理拓扑结构如下图所示
每一个 USB 设备会有一个或者多个逻辑连接点在里面,每个连接点叫端点。USB 提供
了多种传输方式以适应各种设备的需要,一个端点可以选择如下一种传输方式。
-
控制(Control)传输方式
控制传输是双向传输,数据量通常较小,主要用来进行查询、配置和给 USB 设备发送通用命令。所有 USB 设备必须支持标准请求(Standard Request),控制传输方式和端点 0。 -
同步(Isochronous)传输方式
同步传输提供了确定的带宽和间隔时间,它用于时间要求严格并具有较强容错性的流数据传输,或者用于要求恒定数据传送率的即时应用。例如进行语音业务传输时,使用同步传输方式是很好的选择。同步传输也常称为“Streaming Real-time”传输。 -
中断(Interrupt)传输方式
中断方式传送是单向的,对于 USB 主机而言,只有输入。中断传输方式主要用于定时查询设备是否有中断数据要传送,该传输方式应用在少量分散的、不可预测的数据传输场合,键盘、游戏杆和鼠标属于这一类型。 -
批量(Bulk)传输方式
批量传输主要应用在没有带宽、间隔时间要求的批量数据的传送和接收中,它要求保证传输。打印机和扫描仪属于这种类型。
而 USB 3.0 则增加了一种 Bulk Streams 传输模式,USB 2.0 的 Bulk 模式只支持 1 个数据流,而 Bulk Streams 传输模式则可以支持多个数据流,每个数据流被分配一个 Stream ID(SID),每个 SID 与一个主机缓冲区对应。
USB 架构中,集线器负责检测设备的连接和断开,利用其中断 IN 端点(Interrupt IN Endpoint)来向主机报告。一旦获悉有新设备连接上来,主机就会发送一系列请求给设备所挂载的集线器,再由集线器建立起一条连接主机和设备之间的通信通道。然后主机以控制传输的方式,通过端点 0 对设备发送各种请求,设备收到主机发来的请求后回复相应的信息,进行枚举Enumerate操作。因此 USB 总线具备热插拔的能力
上文摘抄自《Linux设备驱动开发详解:基于最新的Linux 4.0内核》