USB 模块 全面解析(一)

news2025/3/5 8:42:40

本文是我整理的一些 USB 的学习心得,希望能对大家有所帮助。

文章目录

  • 前言
  • 🍒 USB 基本概述
  • 🍒 USB 结构框架
      • 🍉硬件框架
      • 🍉 软件框架
  • 🍒 USB 电气信号
      • 🍉 USB 硬件线路
      • 🍉 信号电平
      • 🍉 断连状态
      • 🍉 数据包的结构
      • 🍉 NRZI 与位填充
  • 总结

前言

这篇文章为大家介绍 USB模块的基本概述,结构框架 以及 相关电气信号。

USB 模块 全面解析(二)


🍒 USB 基本概述

USB(Universal Serial Bus,通用串行总线)是一种广泛使用的连接标准,用于在计算机、外围设备和其他电子设备之间传输数据和供电。它最初由一群公司(包括Intel、Microsoft、Compaq等)在1996年推出,旨在简化设备连接、提高传输速度,并取代传统的串行端口(Serial Port)和并行端口(Parallel Port)。

1. USB 接口特点:

  • 即插即用:设备连接后可自动识别和配置
  • 热插拔:可在不关闭设备的情况下连接或断开
  • 供电能力:能够为连接的设备提供电源
  • 高速传输:根据不同版本提供不同的数据传输速率

2. USB 类型:
Type-A,Type-B,Mini-USB,Micro-USB,Type-C。

在这里插入图片描述
在这里插入图片描述

3. 为什么有些项目使用 USB 而不使用串口?

虽然串口(Serial Port)仍在某些特定的应用中使用,但是在许多情况下,USB 已经取代了串口:

  • 速度 :USB 的速度远高于串口。穿的典型速度为 115200 bps(bit per second), 而 USB 2.0 的速度为 480 Mbps, USB 3.0 的速度为 5Gbps, USB 3.1 的速度为 10Gbps, USB 4的速度可达 40G bps.
  • 易用性: USB 设备通常支持即插即用。串口需要手动配置波特率,数据位,停止位,校验位等参数。
  • 支持多种设备: USB 支持通过 USB 集线器 (USB Hub)连接多个设备。串口只能一对一的连接。

🍒 USB 结构框架

🍉硬件框架

先介绍 USB 系统中的 2 个硬件概念:

① USB Host : USB Host 是 USB 系统中的主机端,负责 管理 和 控制 USB 总线上的所有设备。每个 USB Host 控制器中都集成了一个 Root Hub(根集线器) 。Root Hub 是 USB 拓扑结构的起点,提供了物理连接 USB 设备的端口。

② USB Device : (分为 两类 设备)
a. Hub :集线器,用来扩展 两类 接口。
b. Function : 普通的 USB 设备,比如 U盘,声卡等。
在这里插入图片描述
可以看到上图的 USB设备 是通过 Hub(集线器) 连接到USB总线上。这里 Hub 相当于一个扩展坞,可以连接多个 USB 设备。

例如:USB 设备插到电脑上去,对于USB 设备接触到的是 USB控制器 内嵌的 root hub.

🍉 软件框架

APP 可以通过 USB设备驱动 访问 USB设备;APP也可以使用 libusb 库 直接通过USB 控制器驱动 访问 USB 设备。 在 libusb 库中 封装了很多 API 函数,进而可以更 便捷的访问 USB 设备。
在这里插入图片描述


🍒 USB 电气信号

接下来 我们将从软件工程师的角度去了解我们需要知道的 USB 电气信号。

USB 2.0 协议支持 3 种速率:低速(1.5Mbps),全速 (12Mbps), 高速 (480Mbps).

USB Hub, USB 设备 也分为 低速, 全速, 高速三种类型。一个 USB 设备 可能兼容 低速和全速,也可能兼容 高速和全速。但是,不会同时兼容 低速和高速

USB 设备的状态装切换图:

在这里插入图片描述

🍉 USB 硬件线路

下图是一个 USB 设备连接到 Hub 端口的电路图。

对于 Hub端口,在Data+和Data-是没有上拉电阻的,但是有 2 个15K的下拉电阻 Rpd。下面的这个 USB 设备的 Data+ 有一个1.5K的上拉电阻,表明该 USB 设备是全速/高速设备。如果USB 设备的 Data- 有一个1.5K的上拉电阻,表明该 USB 设备是低速设备。
在这里插入图片描述
简单来讲,对于 USB 设备只需要 4 条线:电源(5V),GND, Data+, Data-。 只通过 Data+, Data- 这两条线传输数据。

数据线 D+ 和 D- 只能表示 4 种状态,在 USB 协议中 就是使用这两条线路 实现了 空闲(Idle),开始(start),传输数据(Data),结束(EOP) 等功能。
在这里插入图片描述

🍉 信号电平

这里只介绍 低速/全速信号电平, D+ ,D- 就是数据线 Data+ 和 Data-。

4 种基础状态:

- Differential "1" (差分状态 1) :通常,D+ 比 D- 高至少 200mV。
- Differential "0" (差分状态 0):通常,D- 比 D+ 高至少 200mV。
- SE0 (单端0) : D+ = D- = 低电平,常用于总线复位 。
- SE1 (单端1) : D+ = D- = 高电平 ,常用于错误检测,若检测到SE1,接收端会标记为错误。

衍生出的几种状态:

- Data J State (J 状态)
- Data K State (K 状态)
- Idle state (空闲) :对于 低/全 设备,空闲态时都处于 J 状态。
- Resest 复位:  通过 SE0 状态维持10ms来触发复位。
- SOP 是 “包” 开始的信号。 EOP 是 “包” 结束的信号。 这些后面会详细讲解。

在这里插入图片描述

🍉 断连状态

Hub 端口的 D+,D- 分别连接 15K的下拉电阻。对于 全/高速 设备 D+ 端连接 1.5K 的上拉电阻,而对于 低速 设备 D- 端连接 1.5K的上拉电阻,不同速率的 USB 设备连接到 Hub 端口时会导致 Hub 的 D+或 D- 电平变化。可以根据Hub 引脚的电平变化 来判断是什么设备的连接。

设备的连接:

  1. 全/高速设备 连接时,D+ 电平由低 -> 高:(高速设备 起初 是作为 全速设备被识别的)
    在这里插入图片描述

  2. 低速设备 连接时,D- 电平由低 -> 高
    在这里插入图片描述

设备的断开:

  1. 全速 设备 断开时, D+ 电平由高 -> 低
    低速 设备 断开时, D- 电平由高 -> 低

  2. 对于 高速 设备,是作为 全速 设备被发现的。

当 主机 确定连接的 USB 设备支持 全速时,就会触发 高速协商。如果 USB设备支持 高速, 并且主机也支持 高速,那就转换为 高速传输(即断开USB设备 D+的上拉电阻)。如果不支持高速,那还是保持全速传输。

高速协商:

Hub 端口发出 SE0 信号,就是复位信号。USB设备检测到 SE0 信号后,就会发出 高速握手信号(Chirp K 信号)。Hub 端检测到 K 信号后 就会发出 " Chirp K " " Chirp J " 信号去告诉USB设备 Hub 端也可以支持 高速传输。

在这里插入图片描述

🍉 数据包的结构

在USB设备中,数据传输的基本单位是 “ 包 ” ,下图是一个 “包” 的基本结构。
在这里插入图片描述

  1. SOP :Start Of Packet, 包的开始。即 Hub 驱动 D+, D- 两条线路从 Idle 状态变为 K 状态。

上面在信号电平处 提到了对于 全/低速设备 Idle状态 是 J 状态。而 J 状态和 K 状态的电平是相反的。所以当电平状态 处于由 J -> K 的交点时 是 SOP。
在这里插入图片描述

  1. SYNC : 用于接收端时钟同步。SOP 中转变的 K 状态 就是 SYNC 的 第一位数据, SYNC 的格式是 3对 KJ + 2个K。

  2. Packet Content : 数据包。包含 PID(包类型) + 地址/帧号/数据 + CRC(校验)。这里的 地址,帧号,数据 不会同时存在。

  3. EOP : End of Packet,包的结束。D+,D- 先设置位 SE0 状态并保持 2 位时间,再设置位 J 状态 并维持 1 位时间,最后 D+, D- 变成高阻状态,这时由线路的上下拉电阻使得总线进入 Idle 状态。
    在这里插入图片描述

大家可以先了解一下 “ 包 ” 的结构,下一篇文章将详细讲解各个部分。

🍉 NRZI 与位填充

位填充规则:

  • 在发送数据时,如果连续出现 5 个 1,发送端会自动插入一个 0
  • 接收端在检测到连续 5 个 1 后,会检查第 6 位。如果是 0,则将其移除;如果是 1,则视为错误。
作用:防止数据中出现过长的连续 1,从而提高传输的可靠性。

例: 
原数据 1111110(连续 6 个 1)
现数据 11111010

NRZI (反向不归零编码)规则:

  • 对于数据 0,波形翻转;对于数据 1,波形不变。

可观察下图,当下一个数据是 0 时,电平翻转。当下一个数据是 1 时, 电平不变。
在这里插入图片描述
先 位填充,再 反向不归零反转


总结

下一篇文章 继续为大家介绍 USB 的协议层数据格式 以及 USB 描述符 。

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

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

相关文章

xr-frame 3D Marker识别,扬州古牌坊 3D识别技术稳定调研

目录 识别物体规范 3D Marker 识别目标文件 map 生成 生成任务状态解析 服务耗时: 对传入的视频有如下要求: 对传入的视频建议: 识别物体规范 为提高Marker质量,保证算法识别效果,可参考Marker规范文档 Marker规…

拆一拆吉利普及高阶智驾的盲盒

吉利银河后续所有的全新和改款车型都会搭载千里浩瀚不同级别的智驾系统; 既然银河都标配了,定位更高的领克大概率也会全系标配; 加上极氪从去年下半年就是全系标配。 这样一来,就是吉利版的「全民智驾」。 一、 「千里浩瀚」&a…

2024四川大学计算机考研复试上机真题

2024四川大学计算机考研复试上机真题 2024四川大学计算机考研复试机试真题 历年四川大学计算机考研复试机试真题 在线评测:https://app2098.acapp.acwing.com.cn/ 分数求和 题目描述 有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13… 求出这个数列的前 …

基于提示驱动的潜在领域泛化的医学图像分类方法(Python实现代码和数据分析)

摘要 医学图像分析中的深度学习模型易受数据集伪影偏差、相机差异、成像设备差异等导致的分布偏移影响,导致在真实临床环境中诊断不可靠。领域泛化(Domain Generalization, DG)方法旨在通过多领域训练提升模型在未知领域的性能,但…

深度学习-大白话解释循环神经网络RNN

目录 一、RNN的思想 二、RNN的基本结构 网络架构 ​关键点 三、RNN的前向传播 四、RNN的挑战:梯度爆炸和梯度消失 问题分析 ​示例推导 五、LSTM:RNN的改进 核心组件 ​网络架构 3. LSTM 的工作流程 4. 数学公式总结 5. LSTM 的优缺点 ​优点 ​缺点 6. LSTM 的…

Spring统一格式返回

目录 一:统一结果返回 1:统一结果返回写法 2:String类型报错问题 解决方法 二:统一异常返回 统一异常返回写法 三:总结 同志们,今天咱来讲一讲统一格式返回啊,也是好久没有讲过统一格式返…

软件测试基础:功能测试知识总结

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、测试项目启动与研读需求文档 (一) 组建测试团队 1、测试团队中的角色 2、测试团队的基本责任 尽早地发现软件程序、系统或产品中…

wheel_legged_genesis 开源项目复现与问题记录

Reinforcement learning of wheel-legged robots based on Genesis System Requirements Ubuntu 20.04/22.04/24.04 python > 3.10 开始配置环境! 点击releases后进入,下载对应最新版本的代码: 将下载后的代码包解压到你的自定义路径下&…

qt实践教学(编写一个代码生成工具)持续更新至完成———

前言: 我的想法是搭建一个和STM32cubemux类似的图形化代码生成工具,可以把我平时用到的代码整合一下全部放入这个软件中,做一个我自己专门的代码生成工具,我初步的想法是在下拉选框中拉取需要配置的功能,然后就弹出对…

设置 CursorRules 规则

为什么要设置CursorRules? 设置 CursorRules 可以帮助优化代码生成和开发流程,提升工作效率。具体的好处包括: 1、自动化代码生成 :通过定义规则,Cursor 可以根据你的开发需求自动生成符合规定的代码模板&#xff0c…

AI 芯片全解析:定义、市场趋势与主流芯片对比

1. 引言:什么是 AI 芯片? 随着人工智能(AI)的快速发展,AI 计算的需求不断增长,从云计算到边缘计算,AI 芯片成为推动智能化时代的核心动力。那么,什么样的芯片才算 AI 芯片&#xff…

Axure高保真Element框架元件库

点击下载《Axure高保真Element框架元件库》 原型效果:https://axhub.im/ax9/9da2109b9c68749a/#g1 摘要 本文详细阐述了在 Axure 环境下打造的一套高度还原 Element 框架的组件元件集。通过对 Element 框架组件的深入剖析,结合 Axure 的强大功能&#…

21.<基于Spring图书管理系统②(图书列表+删除图书+更改图书)(非强制登录版本完结)>

PS: 开闭原则 定义和背景 开闭原则(Open-Closed Principle, OCP),也称为开放封闭原则,是面向对象设计中的一个基本原则。该原则强调软件中的模块、类或函数应该对扩展开放,对修改封闭。这意味着一个软件实体…

【2025年后端开发终极指南:云原生、AI融合与性能优化实战】

一、2025年后端开发的五大核心趋势 1. 云原生架构的全面普及 云原生(Cloud Native)已经成为企业级应用的核心底座。通过容器化技术(DockerKubernetes)和微服务架构,开发者能够实现应用的快速部署、弹性伸缩和故障自愈…

机器学习(五)

一,多类(Multiclass) 多类是指输出不止有两个输出标签,想要对多个种类进行分类。 Softmax回归算法: Softmax回归算法是Logistic回归在多类问题上的推广,和线性回归一样,将输入的特征与权重进行…

DeepSeek搭配Excel,制作自定义按钮,实现办公自动化!

今天跟大家分享下我们如何将DeepSeek生成的VBA代码,做成按钮,将其永久保存在我们的Excel表格中,下次遇到类似的问题,直接在Excel中点击按钮,就能10秒搞定,操作也非常的简单. 一、代码准备 代码可以直接询问…

利用Git和wget批量下载网页数据

一、Git的下载(参考文章) 二. wget下载(网上很多链接) 三、git和wget结合使用 1.先建立一个文本,将代码写入文本(代码如下),将txt后缀改为sh(download_ssebop.sh&#xf…

人工智能之数学基础:线性代数中的行列式的介绍

本文重点 行列式是一种重要的数学工具,更是连接众多数学概念和实际应用的桥梁。本文将介绍矩阵的行列式,你可以把它看成对方阵的一种运算,将方阵映射成一个标量。 行列式的定义 行列式是一个由数值组成的方阵所确定的一个标量值。对于一个n*n的矩阵A=(aij),其行列式记为d…

[自然语言处理]pytorch概述--什么是张量(Tensor)和基本操作

pytorch概述 PyTorch 是⼀个开源的深度学习框架,由 Facebook 的⼈⼯智能研究团队开发和维护,于2017年在GitHub上开源,在学术界和⼯业界都得到了⼴泛应⽤ pytorch能做什么 GPU加速自动求导常用网络层 pytorch基础 量的概念 标量&#xf…

电商主图3秒法则

‌1. 基础铁律‌ ▸ 首图点击率曝光量/点击量 ▸ 黄金3秒:触发冲动 > 信息堆砌 ‌2. 必守三原则‌ ✔ ‌单点爆破‌ → 1核心功能 > 10卖点叠加(反例:电子类目点击率↓18%) ✔ ‌场景植入‌ → 带场景主图点击率↑34%(数据源:20…