USB学习(1):USB基础之接口类型、协议标准、引脚分布、架构、时序和数据格式
连接计算机外围设备最简单的方法是通过USB(通用串行总线
)。USB是即插即用接口,可以将扫描仪、打印机、数码相机、闪存驱动器等计算机外围设备连接到计算机上。本篇文章就来介绍一下USB的一些基础知识,包括。
文章目录
- 1 接口类型和标准规范
- 2 引脚分布
- 3 USB体系架构和工作原理
- 4 USB时序
- 5 USB数据格式
1 接口类型和标准规范
USB接口有不同的形状和设计,最初只有两种USB类型:USB-A和USB-B。现在,又衍生出了更多地接口类型,包括USB-C、USB Micro、USB Mini和Lightning Cable,如下图所示:
(1)USB-A:最常见的USB类型,主要应用于有线鼠标、键盘和U盘。它的线缆端较宽,由于该连接器没有旋转对称性,两端不同,对应不同类型的端口。
(2)USB-B:中间为小矩形孔形状。它通常不用于现代计算机,但在打印机、路由器和扫描仪上常见。
(3)USB-C:有一个更扁平、更小的公口,中间的孔是扁平的椭圆形,适合小型连接器针脚插入。它是取代USB-A和USB-B的新标准,更适用于较薄的设备,如MacBook和手机。
(4)USB Micro:USB-A和USB-B都有Micro大小的版本。Micro USB是如今许多智能手机中非常常见的USB连接器。然而,随着USB Type C的出现,Micro USB正在慢慢被淘汰,不再用于新款高端智能手机。但Micro USB仍然广泛应用于全球的廉价智能手机和其他电子设备中。
(5)USB Mini:同样有两种分为USB Mini A和USB Mini B。它们是Type A和Type B USB连接器的缩小版,一般用于便携式相机、游戏控制器和一些老款移动电话中。
(6)Lightning Cable:主要用于iPhone和iPad,采用完全不同类型的USB连接器,即Lightning cable。这种线缆的一端有一个薄的矩形连接器,另一端是Type C连接器。Lightning cables没有正反面的区分,不用担心插入的正反。
USB支持三种速度:低速(1.5Mbps)、全速(12Mbps)和高速(480Mbps)。
(1)USB 2.0标准:高速USB,最大数据传输速度为480Mbps,支持所有类型的连接器,最大电缆长度为5米,最大充电功率为15瓦。
(2)USB 3.2标准(第一代):超高速USB,最大数据传输速度为5Gbps,支持USB-A 3.0、USB-B 3.0和USB-C等不同连接器,最大电缆长度为3米,最大充电功率为15瓦。
(3)USB 3.2标准(第二代):同样是超高速USB,最大数据传输速度为10Gbps,最大电缆长度为1米,支持不同类型的连接器,最大充电功率为100瓦。
(4)USB 3.2标准(第2×2代):超高速USB,最大数据传输速度为20Gbps,最大电缆长度为1米,支持USB连接器,最大充电功率为100瓦。
(5)Thunderbolt 3标准:最大数据传输速度高达40Gbps,最大电缆长度为2米(主动电缆,即包括放大和补偿信号的芯片转换的电缆)和0.8米(被动电缆),支持USB连接器,最大充电功率为100瓦。
(6)USB 4标准:也称为Thunderbolt 4,最大数据传输速度高达40 Gbps,最大电缆长度为2米(主动电缆)和0.8米(被动电缆),支持USB连接器,最大充电功率为100瓦。
- USB 4的标准和Thunderbolt 3几乎一样,因为Thunderbolt 3由Intel开发,通常受特定的厂商支持,而USB4则是一个开房标准,不受制造商限制,任何厂商都可以实现USB 4,而不需要特定的许可
2 引脚分布
USB2.0共4条线,其中数据通过D+
和D-
连接器传输,而Vbus
和GND
为USB设备供电。下图为USB-A和USB-B的引脚图:
将USB-A的线剪开,如下图所示:
USB3.0的引脚如下:
可以看到USB3.0多了5个引脚:两根高速发送引脚、两根高速接收引脚和参考地。之所以预留原来的4个引脚是为了兼容USB2.0。
3 USB体系架构和工作原理
下图是USB协议结构的概述,一旦各种I/O设备通过USB连接到计算机,它们就会构成一个树状结构。在这种USB结构中,每个I/O设备都会进行点对点连接,通过串行传输格式来传输数据。
在这种架构中,I/O设备通过USB连接到计算机,USB也被称为集线器。架构中的集线器是I/O设备与计算机之间的连接点。该架构中的根集线器用于将整个结构连接到主机计算机。
USB协议的工作基于轮询机制,CPU会持续检查输入/输出设备是否准备好传输数据。因此,I/O设备无需向处理器更新它们的状况。每当新的设备连接到集线器时,它会被分配一个地址,第一个设备的地址为0。正常情况下,主机会对集线器进行轮询以获取其状况,从而使主机知道系统中的I/O设备是连接还是断开的。
一旦主机响应新设备,它通过读取设备的USB接口的特定内存中的可用数据来了解设备的容量。然后,主机使用适当的驱动程序与设备通信。接着,主机分配一个地址给新设备,该地址写入设备寄存器。通过这个功能,USB提供了即插即用的功能,允许主机自动识别新的可用I/O设备。
USB协议的另一个特点是“热插拔”,这意味着可以在不关闭或重启的情况下连接或断开I/O设备,因此当I/O设备连接或断开时,系统可以持续运行。
USB协议还可以支持等时传输,即数据在预定的时间间隔内传输。相比同步和异步数据传输,等时数据传输的传输速度非常快。为了保持等时的传输,根集线器通过USB发送一系列位,这些位指定了等时数据的开始,实际的数据可以在这一系列位之后传输。
4 USB时序
对于USB来说,它的数据传输仅依靠一对差分的D+和D-,而没有时钟线,那么它是怎么实现时间的同步的呢?USB采用反向不归零编码(NRZI
)来传输数据:当下一个电平为0时,电平反转;当下一个电平为1时,电平不变。
每个USB数据包,最开始都有一个同步域(SYNC
),接受者通过此包来计算出发送者的USB数据的频率。同时由于遇到逻辑0时比特位会翻转,接收者也一直在根据这个特性在调整USB的同步频率。但还是有一个问题,就是计算出来的频率不准确或自身的采样时钟无法完全与发送者的完全一致,所以如果连续出现多个逻辑1的话,很有可能造成数据传输的不一致。所以如果数据出现6个逻辑1,则会在这后面填充一个逻辑0,如上图所示中的Suffered Bit
。接收端采样数据时只需要把这个填充位去掉即可。
5 USB数据格式
主设备之间进行有效通信非常重要。一旦外设通过USB连接到计算机,计算机会识别它是什么类型的设备,并自动加载允许设备正常工作的驱动程序。在这两个设备之间传输的少量数据称为数据包,每个数据包传输一个数字信息单元。USB协议中常见的4种数据包如下图所示:
(1)SYNC(Syncronize
,同步字段):USB协议中,每个USB数据包都以SYNC
字段开始,通常用于确保发送者和接收者保持时钟同步。在低速或全速USB系统中,SYNC
字段为10101011
。在高速USB系统中,SYNC
字段为10101010 10101010 10101010 10101011
。最后2位固定为11
,用于指示PID
字段的起始位置。
(2)PID字段(Packet Identifier
,包标识符字段):用于识别正在传输的数据包类型以及数据包数据格式。该字段长8位,其中前4位识别数据包类型,后4位是前4位的按位补码。
(3)Address(地址字段):指示数据包主要用于哪个设备。这个7位长的字段允许最多支持127个设备。地址为零的设备是无效的,因为尚未分配地址的任何设备都应该对零地址的传输数据包做出响应。
(4)Endpoint(端点字段):端点字段长4位,允许更灵活地进行寻址。通常,这些字段用于指示数据是输入还是输出。端点’0’是一个特殊情况,被称为控制端点,每个设备都包括一个端点0。
(4)Data(数据字段):数据字段的长度不是固定的,可以从0到8192bit,但必须以字节为单位。
(5)CRC字段(Cyclic Redundancy Checks
):CRC是在数据包有效负载中的数据上执行的,所有令牌数据包(用来启动一次USB传输)和帧起始数据包使用5位CRC,而数据数据包使用16位CRC。
(6)EOP字段(End of the Packet
,数据包结束字段):每个数据包都以EOP字段结束。
相关文章:

USB学习(1):USB基础之接口类型、协议标准、引脚分布、架构、时序和数据格式
连接计算机外围设备最简单的方法是通过USB(通用串行总线)。USB是即插即用接口,可以将扫描仪、打印机、数码相机、闪存驱动器等计算机外围设备连接到计算机上。本篇文章就来介绍一下USB的一些基础知识,包括。 文章目录 1 接口类型和标准规范2 引脚分布3 …...
less和scss语法详解
比较好的博客文章:Less使用语法(详细):https://blog.csdn.net/weixin_44646763/article/details/114193426 SCSS基本语法:https://www.jianshu.com/p/4efaac23cdb6 总结:我理解的点: 1、符号声…...

【计算机网络笔记】TCP/IP参考模型基本概念,包括五层参考模型
系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…...
RSA加密与签名的区别
文章目录 一、签名验签原理二 RSAUtils 工具类三、通过x509Certificate来获取CA证书的基本信息四、 通过公钥获取公钥长度 一、签名验签原理 签名的本质其实就是加密,但是由于签名无需还原成明文,因此可以在加密前进行哈希处理。所以签名其实就是哈希加…...

arcgis js api 4.x通过TileLayer类加载arcgis server10.2发布的切片服务跨域问题的解决办法
1.错误复现 2.解决办法 2.1去https://github.com/Esri/resource-proxy 网站下载代理配置文件,我下载的是最新的1.1.2版本,这里根据后台服务器配置情况不同有三种配置文件,此次我用到的是DotNet和Java. 2.2 DotNet配置 2.2.1 对proxy文件增加…...
如何让chatGPT给出高质量的回答?
如何让chatGPT给出高质量的回答? ChatGPT从入门到进阶教程合集_哔哩哔哩_bilibili 公式 【指令词】【背景】【输入】【输出要求】 1. 指令词 ——精准任务or命令 如:简述、解释、翻译、总结、润色 2. 背景 ——补充信息 如:简述一篇讲解…...
Java后端开发(八)-- idea(2022版)将commit(未push)的 本地仓库 的 单条commit记录 进行撤销
目录 1.修改Test01类后,提交到本地仓库 。 2.commit成功后,在Git =》Log中会显示,commit记录...

Mysql架构解析,InnoDB架构概述。
MySQL架构解析 Mysql整体架构 MySQL整体架构如下图所示: MySQL逻辑系统架构分为4层: 应用层MySQL服务层存储引擎层系统文件层 下面将对各层的功能和组件进行介绍,并探讨一条语句的执行过程。 应用层 应用层是MySQL体系架构的最上层,它…...

jmeter如何测试websocket接口?
jmeter做接口测试,很多人都是做http协议的接口,就有很多人问websocket的接口怎么测试啊? 首先,我们要明白,websocket接口是什么接口。 然后,我们怎么用jmeter测试? jmeter要测试websocket接口…...

15 Transformer 框架概述
整体框架 机器翻译流程(Transformer) 通过机器翻译来做解释 给一个输入,给出一个输出(输出是输入的翻译的结果) “我是一个学生” --》(通过 Transformer) I am a student 流程 1 编码器和解…...

[架构之路-241]:目标系统 - 纵向分层 - 企业信息化与企业信息系统(多台企业应用单机组成的企业信息网络)
目录 前言: 一、什么是信息系统:计算机软件硬件系统 1.1 什么是信息 1.2 什么是信息系统 1.3 什么是信息技术 1.4 什么是信息化与信息化转型 1.5 什么是数字化与数字化转型(信息化的前提) 1.6 数字化与信息化的比较 1.7 …...
flink中使用异步函数的几个注意事项
背景 在flink系统中,我们为了补充某个流事件成一个完整的记录,经常需要调用外部接口获取一些配置数据,流事件结合这些配置数据就可以组合成一条完整的记录,然而如果同步调用外部系统接口来实现,那么会有很大的性能瓶颈…...

QML之Repeater 控件使用
Repeater 控件是 重复作用 根据 model中的index 数量进行重复 废话不说 直接看如何用 当model 为数字时 Rectangle{height: 1200width: 500visible: trueanchors.fill: parentColumn{spacing: 20Repeater{model: 10delegate: Rectangle{width: 60height: 20color: index%2 …...
哈希树讲解
哈希树(HashTree)是哈希(Hash)算法的一种延续。传统数据结构中对如何避免哈希冲突都有一定的描述和解释,但是这些描述和解释都是泛泛而谈,并没有提出比较好的解决方案。这里所提到的哈希树(HashTree)算法就是要提供一种在理论上和实际应用中均能有效地处…...
vue 项目启动后一直不断的刷新停不下来
新建的vue 项目,配置了代理后项目一直刷新,停不下来,各种查找最后发现是vue.config.js 中的热更新配置项目开启的原因 const {defineConfig } require(vue/cli-service) const AutoImport require(unplugin-auto-import/webpack) const Co…...

makesense在线yolov5标注
文章目录 一、创建图片文件夹和label.txt二、在线标注数据 参考文章博主:风吹落叶花飘荡 一、创建图片文件夹和label.txt 创建一个放置图片的文件夹images,存放需要标注的图片(图片最好重命名为1,2,3…避免后面混淆) 创建label.t…...

python 之 矩阵相关操作
文章目录 1. **创建矩阵**:2. **矩阵加法**:3. **矩阵乘法**:4. **矩阵转置**:5. **元素级操作**:6. **汇总统计**:7. **逻辑操作**: 理解你的需求,我将为每个功能写一个单独的代码块…...
敢问路在何方
从2022年进入软件行业到现在,二十二年眨眼之间过去了,依然奋斗在编码第一线,挣扎在第一线,借此程序员佳节之际回顾一下这许多年的历程。 由于本人混得实在不好,工作过的地方都用某单位某公司来代替实际的,到…...

复习mysql中的事务
一个事务的开始和结尾必须是 start transaction | commit; rollback 事务特性 1.原子性:多个操作打包成一个整体,要么全部执行,要么一个都不执行。 不过这里的“一个都不执行”并不是真正的全不执行,只是看起来与没执行一样。…...

力扣刷题 day52:10-22
1.数组拆分 给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。 返回该 最大总和 。 方法一:排序 #方法一:排序 def arrayPai…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...

PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...