前言:本篇博客为手把手教学的 USB 2.0 协议栈类精品博客,该专栏博客侧重针对 USB 2.0 协议进行讲解。Universal Serial Bus 作为如今最常见的通信接口,被广泛应用于:Keyboard、Mouse、Communication Device Class 和 Mass Storage Class 等电子产品中。本专栏将利用 USB 2.0 协议内容与 MCU 工作代码为各位读者进行教学。USB 协议栈是嵌入式工程研发过程中很大的坑,USB 协议栈非常冗杂且深奥,但它在工程项目中却至关重要,希望这篇博文能给读者朋友的工程项目给予些许帮助,Respect!
Universal Serial Bus 版本:
Universal Serial Bus 衍生产品:
推荐网址
USB官网:Front Page | USB-IF
USB中文网:USB中文网 (usbzh.com)
沁恒WCH官网:首页 - 南京沁恒微电子股份有限公司 (wch.cn)
一、USB 协议栈
Universal Serial Bus 协议栈是一种软件层,它实现了 Universal Serial Bus (USB) 规范,允许计算机与外部设备进行通信。USB 协议栈分为主机协议栈和设备协议栈,各自负责不同的功能。以下是一些关于 USB 协议栈的详细信息:
(1)、Universal Serial Bus 协议栈
- 主机协议栈:运行在计算机或类似主机设备上,负责管理 USB 设备连接、枚举、配置和通信。
- 设备协议栈:位于 USB 设备上,响应主机的请求,管理数据传输,并处理设备特定的功能。
(2)、Universal Serial Bus 协议栈的功能
- 设备枚举:当 USB 设备连接到主机时,主机通过一系列步骤识别设备,并为其分配资源。
- 数据传输:协议栈支持多种数据传输类型,包括控制传输、批量传输、中断传输和同步传输。
- 电源管理:管理 USB 设备的供电状态,包括挂起和恢复操作。
- 错误处理:检测并响应数据传输过程中的错误。
(3)、Universal Serial Bus 协议栈的关键特性
- 模块化设计:USB 协议栈通常设计成模块化,便于在不同设备和操作系统之间移植。
- 兼容性:支持不同版本的USB规范,如 USB 1.x、USB 2.0、USB 3.x 等。
- 性能优化:通过直接内存访问(DMA)、零拷贝等技术优化数据传输性能。
1.1 USB 1.0
Universal Serial Bus 1.0 是通用串行总线(USB)的第一个主要版本,于 1996 年发布。这一版本标志着 USB 标准的首次重大推出,其具有以下特点:
1、数据传输速率:USB 1.0提供了两种数据传输速率,分别是低速1.5 Mbps和全速12 Mbps。
2、热插拔和即插即用:USB 1.0支持热插拔功能,允许用户在不关闭计算机的情况下直接插入或拔出USB设备。此外,它还支持即插即用,意味着当设备插入时,主机可以自动侦测并加载所需的驱动程序。
3、标准化连接器:USB 1.0 规范了 A 型和 B 型 USB 连接器的使用。
USB 1.0 作为首款商用 USB 版本并未得到广泛采用,但它的推出为后来 USB 标准的普及铺平了道路。USB 1.0 的出现简化并优化了早期 90 年代计算机系统中复杂的互连过程和数据传输的缓慢问题。在此之前,计算机制造商使用串行和并行端口以及专有插头、连接器和电缆来实现数据传输,这些方式常常需要专门的驱动程序和卡片,且数据传输速率较慢。
1.2 USB 2.0
Universal Serial Bus 2.0(通用串行总线 2.0)是 USB 标准的一个重要升级版本,它在 1998 年发布,以提高数据传输速度,满足高速外设如硬盘、数码相机等的需求。USB 2.0 的主要特点包括:
1、高速数据传输:USB 2.0 支持高达 480 Mbps 的数据传输速度,这是 USB 1.1 全速版本的 40 倍。
2、兼容性:USB 2.0 完全兼容 USB 1.1,支持全速和低速模式。
3、多种传输模式:USB 2.0 支持低速(1.5 Mbps)、全速(12 Mbps)和高速(480 Mbps)三种传输模式。
4、即插即用和热插拔:用户可以在不关闭计算机的情况下直接插入或拔出 USB 设备,并且设备可以自动识别和配置。
5、供电方式:USB 2.0 为设备提供 5V 电源,减少了对外接电源的需求。
6、多种设备支持:USB 2.0 支持多种类型的设备,如键盘、鼠标、打印机、外部硬盘等。
7、拓扑结构:USB 2.0 采用主从结构,主机负责发起通信,设备负责接收和响应。
8、数据传输机制:USB 2.0 的数据传输基于包(packet)和事务(transaction)的机制,包括令牌包、数据包和握手包。
USB 2.0 的推出极大地提高了计算机与外部设备之间的数据传输效率,对于当时的数字存储和带宽需求的增长起到了关键作用。随着技术的进步,USB 2.0 逐渐被更高速度的 USB 3.0 和 USB 3.1 等标准所取代,但 USB 2.0 仍然在许多设备和应用中得到广泛使用 。
1.3 USB 3.0
Universal Serial Bus 3.0,也被称为 SuperSpeed USB,是通用串行总线(USB)的第三个主要版本,于 2008 年 11 月 17 日正式发布。它代表了 USB 技术的一个重要进步,特别是在数据传输速度方面。以下是 USB 3.0 的主要特点和功能:
1、高速数据传输:USB 3.0 提供高达 5 Gbps(500MB/s)的理论传输速率,这是 USB 2.0 全速模式的10倍。
2、双总线架构:USB 3.0 采用了双总线架构,可以同时支持超高速和非超高速(USB 2.0速度)的数据传输。
3、电源管理:USB 3.0 提供了更好的电源管理,能够为需要更大电力支持的设备提供更好的支持。
4、全双工数据通信:USB 3.0 实现了全双工数据通信,简化了数据传输过程,提高了效率。
5、兼容性:USB 3.0 保持了与 USB 2.0 的兼容性,可以与 USB 2.0 和 USB 1.1 设备一起使用。
6、物理接口:USB 3. 0 的线缆和插座后向兼容于 USB 2.0,但 USB 3.0 的插头和插座强制要求标准着色,以帮助用户区分。
7、电源供应:USB 3.0 提供 5V 的供电电压和 900mA 的供电电流。
8、连接模型:USB 3.0 的连接模型允许根据设备支持的最高信号速度、主机和设备之间所有集线器的最高速度以及当前主机能力和配置来发现和配置 USB 设备。
USB 3.0 的出现极大地提高了计算机与外部设备之间的数据传输效率,满足了高清视频、大容量存储设备等日益增长的数据传输需求。随着技术的不断进步,USB 3.0 也得到了广泛的采用和应用。
二、USB 硬件接口
USB 接口分为标准 USB 接口、Mini USB 接口和 Micro USB 接口三种类型。
如今,绝大多数的手机接口都已经统一为 USB Type-C,USB Type-C 注定成为新时代的宠儿!
2.1 标准 USB 接口
标准 USB 接口分为 Type-A 和 Type-B 两种,样貌如下:
其中 Type-A 和 Type-B 根据支持的 USB 标准不同,又可以分为 USB 2.0 和 USB 3.0 标准 USB 接口。根据接口的颜色,我们很容易区分该接口是支持 USB 2.0 还是支持 USB 3.0 的。Type-A 型接口也是我们日常生活中最常见的 USB 接口,广泛应用于鼠标、键盘、U盘等设备上,Type-B 型则常用于打印机、特殊显示器等设备上。
2.2 Mini USB 接口
Mini USB 接口,是一种小型的 USB 接口,其指标与标准 USB 相同,但是加入了 ID 针脚(用于区分设备是主机还是外设),以支持 OTG(On The Go,该功能允许在没有主机的情况下,实现设备间的数据传送)功能。Mini USB 接口主要分为 Mini-A 和 Mini-B 两种,样貌如下:
Mini USB 接口由于相对较小的体型,常见于一些小型设备上,比如 MP3、MP4、收音机等,某些型号的手机也采用了该接口。
2.3 Micro USB 接口
Micro USB 接口,属于 Mini USB 的下一代规格接口,Micro USB 接口的插头采用了不锈钢材料,插拔寿命提高为 10000 次,相比 Mini USB 接口,在宽度几乎不变的情况下,高度减半,更为小巧。Micro USB 接口也可分为 Micro-A 和 Micro-B 两种,样貌如下:
Micro-B 类型的 USB 接口,相信大家都认识,只是不知道它的专业名称,在智能手机发展的前期,绝大多数的智能手机(iphone 除外,iphone 为 Lighting 接口,iphone15 则为 Type-C)都采用了 Micro-B 型接口作为充电和数据接口。在 USB 3.0 标准发布后,Micro-B 接口也有了新的造型,相信大家也不陌生,我们购买的支持 USB 3.0 的移动硬盘盒大部分就采用了该接口。
2.4 Type-C 接口
Type-C 接口,是近几年出现的新型 USB 接口,该接口对于使用者来说,相信最大的好处就是可以正反插拔了吧。
据统计,平均每人每年在插 USB 上浪费的时间是 30 分钟!第一次插总是插不进去的,多次插拔到怀疑人生时,最后发现还是第一次的才是对的,后面的N次尝试不过是人生中的小小曲折,有了 type-C 接口后终于可以一次搞定了。Type-C 接口的样貌如下:
最新的 USB 4.0 标准目前仅支持 Type-C 接口,同时 USB 4.0 采用了 Thunderbolt 协议(俗称雷电接口协议,是由Intel主导开发的接口协议,具有速度快,供电强,可同时兼容雷电、USB、Display Port、PCIe 等多种接口/协议的特点),因此,支持 USB 4.0 标准的 Type-C 接口也是可以兼容雷电接口的。如此看来,Type-C 接口已是大势所趋了。
三、简述 USB 传输
本篇博客将先给各位读者简述一下 USB 协议学习过程中需要了解和熟知的内容,后续博客将对这些部分进行详细讲解,各位读者朋友们不必太过着急!
3.1 USB 概述
1、USB 接口特点
2、USB 协议标准历程
3、USB 速度与针点
3.2 USB 知识概述
1、USB 编码格式
NRZI(Non-Return-to-Zero Inverted)编码:
1、USB 1.1 和 USB 2.0 使用 NRZI 编码来传输数据。
2、在 NRZI 编码中,数据位的值不是通过电压的高低直接表示,而是通过电压是否改变来表示。逻辑 “0” 表示信号电平不变,而逻辑 “1” 表示信号电平发生改变。
2、USB 帧的概念
1、帧(Macroframe):
对于低速和全速 USB 设备,帧就是宏帧,它们没有微帧的概念,通常是 1 ms;
2、微帧(Microframe):
针对高速 USB 设备,一个帧被进一步划分为 8 个微帧,每个微帧持续 125 微秒,微帧使得高速USB能够更有效地利用带宽。
3、USB 的 4 种传输
1、控制传输(Control Transfers): 控制传输用于设备与主机之间的配置和控制消息交换。 它们通常用于设备的枚举过程,即在设备连接到主机时对其进行识别和配置。 控制传输是可靠的双向传输,具有固定的数据大小(最多 64 字节对于全速和高速设备,最多 8 字节对于低速设备)。 控制传输包括三个阶段:设置阶段(SETUP)、数据阶段(可选)和状态阶段。
2、批量传输(Bulk Transfers): 批量传输用于传输大量数据,例如文件传输。 它们不保证固定的传输速率,但是保证数据的完整性。 批量传输是可靠的双向传输,但是没有固定的传输时间,因为 USB 会根据总线上的其他活动动态分配带宽。 批量传输适用于对时间要求不是特别严格的场合。
3、中断传输(Interrupt Transfers):中断传输用于传输小量数据,并且这些数据需要定期或及时传输,如鼠标和键盘的数据。 它们提供了保证的传输速率,即在一定的最大延迟时间内完成传输。 中断传输是可靠的单向传输,通常用于周期性的数据传输。
4、等时/同步传输(Isochronous Transfers): 同步传输用于需要恒定速率传输的数据,如音频和视频流。 它们不保证数据的完整性,但是保证在特定的时间间隔内传输数据。 同步传输是单向传输,数据可能在传输过程中丢失,但是不会影响整体的数据流。
四、作者有话
4.1 博客寄语
Universal Serial Bus 协议的意义在于它提供了一种统一、标准化的接口规范,极大地简化了计算机与外部设备之间的连接和数据交换过程。自 1996 年发布以来,Universal Serial Bus 协议已成为现代计算机和消费电子产品中最为普及和重要的连接标准之一。
如今,Universal Serial Bus协议栈已经进入到了 USB 4.0 时代,但目前大部分嵌入式产品还是以 USB 2.0 和 USB 3.0 的电子产品为主。USB 协议是非常繁杂且难学的,但 USB 协议的出现对人类电子产品的进步是极具意义的。日常生活中的 Keyboard、Mouse、Communication Device Class(CDC)、Mass Storage Class(MSC)等电子产品都严重依赖于 USB 协议。USB 协议正是因为其学习成本和门槛的存在,所以才值得深入去探究和挖掘。故此,USB 的学习是嵌入式工程师职业生涯很值得选择的道路之一!!!
4.2 粉丝群
嵌入式交流群 1 群:958820627(可能已满);嵌入式交流群 2 群:876919359(可能已满);嵌入式交流群 3 群:957431539(推荐加入)。欢迎加群,有问题可以群内分享技术交流,秋招和春招会有诸多大厂内推码或者内推名额推荐。希望大家友好讨论技术知识!!!