USB 2.0 协议专栏之 USB 2.0 概述(一)

news2024/11/19 18:34:06

前言:本篇博客为手把手教学的 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.0USB 3.0 的电子产品为主。USB 协议是非常繁杂且难学的,但 USB 协议的出现对人类电子产品的进步是极具意义的。日常生活中的 KeyboardMouseCommunication Device ClassCDC)、Mass Storage ClassMSC等电子产品都严重依赖于 USB 协议。USB 协议正是因为其学习成本和门槛的存在,所以才值得深入去探究和挖掘。故此,USB 的学习是嵌入式工程师职业生涯很值得选择的道路之一!!!

4.2 粉丝群

嵌入式交流群 1 群:958820627(可能已满);嵌入式交流群 2 群:876919359(可能已满);嵌入式交流群 3 群:957431539(推荐加入)。欢迎加群,有问题可以群内分享技术交流,秋招和春招会有诸多大厂内推码或者内推名额推荐。希望大家友好讨论技术知识!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1955103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Scrapy + Django爬虫可视化项目实战(一)

目录 一、项目介绍 (一) 项目背景 (二) 项目介绍 二、系统实现 (一) 爬虫 1. 实现步骤 一、爬取字段 二、分析页面 三、具体实现 2. 爬虫结果 系列文章 Python升级打怪—Django入门 Python升级打怪—Scrapy零基础小白入门 实现技术 ScrapyDjangoEcharts 一、项目…

物联网精密空调监控指标解读:松越_TCP7022EX_精密空调

监控易是一款专业的IT和物联网设备监控软件,能够实时监控各类IT资源和物联网设备的运行状态,确保系统的稳定运行。在物联网精密空调领域,监控易对松越_TCP7022EX_精密空调进行了全面的监控,以下是对其监控指标的详细解读。 监控指…

2. Class 文件的组成

16 进制打开class文件 可以通过Notepad下载一个HexEditor插件,下载好该插件后可以以16进制的方式打开class看,打开后我们可以看到如下所示的图片: class 文件的组成 class 文件的组成部分为:魔数,版本号,…

Springboot与SpringSecurity使用(1):介绍、登录验证

一、介绍 Spring 是非常流行和成功的 Java 应用开发框架,Spring Security 正是 Spring 家族中的成员。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。Web 应用的安全性包括用户认证(Authentication&#xff09…

Linux网络:传输层协议TCP(三)滑动窗口及流量控制

目录 一、关于滑动窗口在TCP中的应用 1.1什么是滑动窗口,为什么要有滑动窗口 1.2滑动窗口的实现 1.3滑动窗口针对丢包重传的处理机制 二、流量控制 一、关于滑动窗口在TCP中的应用 1.1什么是滑动窗口,为什么要有滑动窗口 在上一篇博文中博主阐述了…

植物神经紊乱拜拜啦! 6招让你心情美美哒,放松到飞起~

Hey宝贝们,是不是有时候觉得心里的小宇宙🌌乱糟糟的,像是有一群小精灵🧚‍♀️在跳舞,却偏偏踩不到点上?没错,这可能就是植物神经紊乱在作祟啦!别怕,我这就给你支几招&am…

Nginx系列-12 Nginx使用Lua脚本进行JWT校验

背景 本文介绍Nginx中Lua模块使用方式,并结合案例进行介绍。案例介绍通过lua脚本提取HTTP请求头中的token字段,经过JWT校验并提取id和name信息,设置到http请求头中发向后段服务器。 默认情况下,Nginx自身不携带lua模块&#xff0…

Transformer中的Multi-head Attention机制解析——从单一到多元的关注效益最大化

Transformer中的Multi-head Attention机制解析——从单一到多元的关注效益最大化 Multi-head Attention的核心作用 组件/步骤描述多头注意力机制(Multi-head Attention)Transformer模型中的关键组件,用于处理序列数据功能允许模型同时关注到…

Vue2从基础到实战(指令篇)

Vue中的常用指令! 概念:指令(Directives)是 Vue 提供的带有 v- 前缀 的 特殊 标签属性。 vue 中的指令按照不同的用途可以分为如下 6 大类: 内容渲染指令(v-html、v-text) 条件渲染指令&…

昇思25天学习打卡营第1天|快速入门-构建基于MNIST数据集的手写数字识别模型

非常感谢华为昇思大模型平台和CSDN邀请体验昇思大模型!从今天起,我将以打卡的方式,结合原文搬运和个人思考,分享25天的学习内容与成果。为了提升文章质量和阅读体验,我会将思考部分放在最后,供大家探索讨论…

04 | 深入浅出索引(上)

此系列文章为极客时间课程《MySQL 实战 45 讲》的学习笔记! 索引的常见模型 可以提供查询效率的数据结构有很多,常见的有三种:哈希表、有序数组、搜索数。 哈希表是一种以 key-value 形式存储的数据结构。输入一个 key,通过固定…

Markdown使用~~pandoc插件安装

目录 1.两大秘密武器 2.vscode创作 3.Typora的安装 4.pandoc安装 4.1百度网盘 4.2按照说明安装 4.3到达github里面下载 4.4选择对应版本 4.5进入偏好设置 4.6对于导出的路径进行配置 5.Typora和vscode的对比 6.如何正确的学习这个Typora软件 7.一点相关的说明 1.两…

做一个能和你互动玩耍的智能机器人之三

内容节选自英特尔的开源项目openbot的body目录下diy下的readme,这是一个组装和连线方式的说明文档,接线需要配合firmware固件使用,固件代码的接线柱是对应的。 body目录内部十分丰富,主要介绍了这个项目的背景和硬件以及如何让他…

datawhale逻辑推理赛题01

跟着datawhale参加了逻辑推理赛题,这个是一个大模型比赛入门非常好的比赛,可以帮助我们更快的上手大模型相关的业务 我参加的是天池的这个比赛,跟着datawhale官方的baseline01已经上分0.6498,是一个非常好的开始 后续我讲继续跟着…

java项目中添加SDK项目作为依赖使用(无需上传Maven)

需求: 当需要多次调用某个函数或算法时,不想每次调用接口都自己编写,可以将该项目打包,以添加依赖的方式实现调用 适用于: 无需上线的项目,仅公司或团队内部使用的项目 操作步骤: 以下面这…

Linux---进程(2)

目录 查看进程 查看进程pid 系统目录查看 理解当前工作目录用途 fork创建进程 存在问题 问题解决 问题一 问题二 本文介绍进程标识符的相关知识以及创建子进程。 查看进程 指令就是可执行程序,每次运行时,都需要被加载到内存,运行…

动物之森-小红书2024笔试(codefun2000)

题目链接 动物之森-小红书2024笔试(codefun2000) 题目内容 塔子哥最近在玩一款叫做“动物之森”的四字开放游戏世界。由于塔子哥氪金了,所以他在游戏中拥有很多个宝箱,每个宝箱里都装着一些他收集的宝石。每一种类型的宝石都有不同的作用。 有一天&…

java--jvm虚拟机(都是要点)

请带着以下问题,学习并理解jvm 问题一: 为什么fullGC会对系统性能有影响?youngGC却几乎没有? 问题二: outofmemory是什么异常?什么时候会出现?如何处理? 问题三: 线程…

鸿蒙 HarmonyOS NEXT端云一体化开发-云函数篇

前言 TODO:新建项目和应用,开通云函数服务(AGC)端侧开发:Arkts界面开发云测开发:云函数、认证服务、云存储、云数据库 一、登录 地址:https://id1.cloud.huawei.com/CAS/portal/loginAuth.htm…

Nginx周末部署

背景 Nginx是本人学习的一类中间件,上次完成了vue的搭建,所以顺便把项目加入Nginx吧 1. 镜像拉取与测试 查询dockerHub,选择最新最稳定的版本 docker pull nginx:stable-perl 执行下载 docker run -d --name mynginx -p 8080:80 -v D:\IM…