USB总线-USB协议简介(一)

article/2025/9/21 6:31:02

1.简介

USB是通用串行总线(Universal Serial Bus)的缩写。在USB总线出现之前,计算机与键盘、鼠标、扫描仪、打印机都使用专用的接口连接,不同设备的接口不能互用,扩展性很差,每次插拔设备都要关闭计算机,不支持热插拔,且通信速率很低。为了解决上述问题,USB总线诞生了。USB总线就好像一条管道,管道里流过的东西只要符合USB协议,至于具体流的是什么东西,USB总线并不关心,可以是自来水,可以是污水,可以是天然气,也可以是石油。对应具体的设备上,只要是支持USB协议的设备,都可以连接计算机,如USB键盘、USB鼠标、USB摄像头、USB音箱等。USB的出现简化了计算机与外围设备的连接,增强了扩展性,支持热插拔,且通信速度很快。

2.USB协议版本

从USB协议诞生至今,出现了多个USB协议版本,如USB1.0、USB1.1、USB2.0、USB3.0、USB3.1、USB3.2。最新的是USB4协议,使用Type-C接口,最大速度可达80Gbps,支持PD快充协议,最大供电功率240瓦,符合最新的DP、PCIe规范。

USB协议版本速率称号最大速率编码类型电源特点推出时间
USB1.0Low-Speed1.5MbpsNRZI5V/500mA半双工1996年1月
USB1.1Full-Speed12MbpsNRZI5V/500mA半双工1998年9月
USB2.0High-Speed480MbpsNRZI5V/500mA半双工2000年4月
USB3.2 Gen1SuperSpeed USB 5Gbps5Gbps8b/10b5V/900mA全双工2008年月11月
USB3.2 Gen2SuperSpeed USB 10Gbps10Gbps128b/132b20V/5A全双工2013年月7月
USB3.2 Gen2x2SuperSpeed USB 20Gbps20Gbps128b/132b20V/5A全双工2017年月9月
USB4 Gen3USB4™ 20Gbps20Gbps128b/132bPD全双工,兼容Thunderbolt3/42019年月8月
USB4 Gen4USB4™ 40Gbps40Gbps128b/130bPD全双工,兼容Thunderbolt3/42019年月8月

注:USB3.2推出时,USB-IF公布了新的命名规范,将USB3.0改名为USB3.2 Gen1,USB3.1改名为USB3.2 Gen2,而将能够使用两个USB Type-C Rx/Tx针脚的USB3.2改名为USB3.2 Gen2×2。

下图(未找到此图的源出处)是各个版本USB协议使用的标志及接口,USB3.2以后,只使用Type-C接口,包括图中未画出的USB4.0和Thunderbolt3。
USB版本及使用的接口
下图是USB3.2协议使用的标志,此标志是USB-IF网站上最新的。
USB3.2协议标志
下图是USB4.0协议使用的标志,USB4.0使用Gen3 lane,single-lane可达到20Gps,dual-lane为40Gps。USB4™ 20Gbps使用single-lane,USB4™ 40Gbps使用dual-lane。

USB4.0协议标志

3.USB总线特点

3.1.主从模式

USB是主从模式的总线,主机称为Host,从机(也称为设备)称为Device。从机与从机之间、主机与主机之间(不包括USB4.0),不能互联。每次通信都是由主机发起,从机不能主动发起通信,只能被动的应答主机的请求。USB3.0及以后的USB协议,主机也可以和集线器(Hub)通信。为了增加灵活性,又出现了USB OTG(On The Go),USB OTG支持主从切换,同一个设备,在不同场合下,可以在主机和从机之间切换。USB OTG线中增加了一根USB ID线,当USB ID线上拉时,处于从机(设备)模式,当USB ID线接地时,处于主机模式。

3.2.总线结构

如下图所示,USB总线呈现出树状的拓扑结构。树的根节点是USB Host控制器,连接在USB Host控制器上的是USB根集线器(Root Hub)。USB集线器(Hub)可以将一个USB接口扩展成多个USB接口,扩展出的USB接口又可以通过USB集线器(Hub)扩展,每个USB接口都可以接USB设备。集线器只能扩展出更多的USB接口,而不能扩展出更多的带宽,所有USB设备共享USB Host控制器的带宽,当有多个USB设备需要较大带宽时,可以考虑将他们接到不同USB Host控制器上的根集线器上,以避免带宽不足。

USB总线拓扑结构

3.3.电气特性

下图是USB3.2线缆的示意图,同时兼容USB2.0。USB使用差分信号传输数据,下图中的D+和D-是一对差分线,SSTX+和SSTX-是一对差分线,SSRX+和SSRX-是一对差分线。USB2.0只有一对差分线,即下图中的D+、D-,因此USB2.0是半双工的,不能同时收发数据。USB3.2拥有两对差分线,即SSTX+和SSTX及SSRX+和SSRX,因此USB3.2是全双工的,可同时收发数据。USB3.2和USB2.0使用不同的差分线传输数据,两者互不干扰,可同时工作。USB3.2线缆中保留了USB2.0的数据传输通道,实现了对USB2.0的兼容。USB主机可通过VBUS线向设备供电,最大可输出20V/5A。GND是地线。

USB3.1_Cable

下图是USB3.2线缆的横截面示意图。红色Power线是VBUS,绿色和灰色UTP是D+和D-,青色的两对差分线是SSRX+、SSRX、SSTX+、SSTX。黑色是GND。除此之外,还有一些编织层和屏蔽层。

USB3.1线缆

4.USB传输基础

4.1.传输类型

  • 控制传输(Control Transaction)
    控制传输用于配置设备、获取设备信息、发送命令到设备、获取设备的状态。每个USB设备都有端点0的控制端点,当USB设备插入到USB主机拓扑网络中时,USB主机就通过端点0与USB设备通信,对USB设备进行配置,便于后续的数据传输。USB协议保证控制传输有足够的带宽。控制传输可靠,时间有保证,但传输的数据量不大。如USB设备的枚举过程就采用的是控制传输。
  • 中断传输(Interrupt Transaction)
    当USB主机请求USB设备传输数据时,中断传输以一个固定的速率传送少量的数据。中断端点的数据传输方式为中断传输,数据传输可靠,实时性高,这里的中断并不是USB设备产生中断,而是USB主机每隔一个固定的时间主动查询USB设备是否有数据要传输,以轮询的方式提高实时性。如USB鼠标采用的是中断传输。
  • 批量传输(Bulk Transaction)
    批量传输用于传输大量数据。USB协议不保证这些数据传输可以在特定的时间内完成,但保证数据的准确性。如果总线上的带宽不足以发送整个批量包,则将数据拆分为多个包传输。批量传输数据可靠,但实时性较低。如USB硬盘、打印机等设备就采用的是批量传输方式。
  • 等时传输(Isochronous Transaction)
    等时传输也可以传输大量数据,但数据的可靠性无法保证。采用等时传输的USB设备更加注重保持一个恒定的数据传输速度,对数据的可靠性要求不高。如USB摄像头就使用的是等时传输方式。

4.2.传输要素

USB2.0主机控制器通过把时间在低速、全速模式下分成1毫秒宽的帧(frame),在高速模式下分成125微妙宽的微帧(microfranme),以此来管理传输。主机控制器将每个帧或微帧的一部分分配给各个传输。每个帧(或微帧)以带有时序参考的帧(Start-of-Frame,SOF)开始。超高速总线不使用SOF,但主机控制器仍可以在125微妙的总线时间内安排超高速传输。
USB传输可以安排在1个或多个帧或微帧中,每个传输包含多个事务,每个事务又进一步含有多个信息包(packets)。信息包必须在一个帧或微帧中传输完毕,不能跨帧或微帧。信息包分为4类,令牌类信息包确认事务类型,数据类信息包携带数据和状态代码,握手类信息包携带状态代码,最后一种是特殊类信息包。
USB传输由一个或多个事务(transaction)组成,这些事务可将数据载入端点或从端点取出。USB2.0事务开始于主机在总线上发送的令牌信息包(token packet)。令牌信息包含有目标端点号和方向。IN令牌信息包表示向端点请求数据信息包。OUT令牌信息包则是主机派发数据信息包的先行信息。除了数据,每个数据包还含有错误检查位和一个带有数据顺序值的信息包ID(PID)。许多事务还拥有握手信息包(handshake packet),数据的接收端用它来报告事务成功或失败。对于超高速传输事务,信息包类型和协议有所不同,但却含有相同的地址、错误检查和与数据相配合的数据顺序值。

信息包类型PID名字取值(二进制)传输类型来源说明
令牌OUT0001全部主机IN事务中需要的设备和端点地址
令牌IN1001全部主机IN事务中需要的设备和端点地址
令牌SOF0101帧开始主机SOF标识符和帧号
令牌SETUP1101控制主机用于Setup事务的设备和端点地址
数据DATA00011全部主机、设备数据交替或数据PID序列
数据DATA11011全部主机、设备数据交替或数据PID序列
数据DATA20111等时主机、设备数据PID序列
数据MDATA1111等时、分割事务主机、设备数据PID序列
握手ACK0010控制、批量、中断主机、设备接收端接收到正确的数据信息包
握手NAK1010控制、批量、中断设备接收端不能接收数据,或者发送端无法发送数据或无数据要发送
握手STALL1110控制、批量、中断设备控制请求不被支持或端点被停止
握手NYET0110控制写、批量、OUT、分割事务设备正确的接收了数据信息包,但还没准备好接收下一个,或集线器还没有将数据信息包分割完成
特殊PRE1100控制、中断主机主机发出的先行信号
特殊ERR1100全部集线器由集线器返回的错误
特殊SPLIT1000全部主机分割事务
特殊PING0100控制写、批量、OUT主机PING测试
特殊EXT0000主机扩展,未使用

4.2.区别

在框架上,超高速是向后兼容USB2.0的,但是二者在协议上还是有一些重大的不同,主要区别如下:

  • USB2.0的信息包分为令牌、数据和握手,超高速也是这三种类型,但是用法不同;超高速令牌包集成在头包和DPH中,各种类型的握手包都是TP包形式;对于OUT事务,令牌被合并在数据包中;对于IN事务,令牌被握手包代替
  • USB2.0不支持突发(bursting)传输,超高速支持持续突发传输,一个微帧内最多可以传输16个信息包
  • USB2.0是半双工(half-duplex)总线,超高速是全双工(dual-simplex)总线,支持同时收发数据
  • USB2.0使用轮询模式,超高速使用异步通知方式
  • USB2.0不支持流能力,超高速支持批量(bulk)端点的流(Stream)方式
  • USB2.0在同步传输(isochronous)间隔中没有进入低功耗状态的机制,超高速则允许同步传输服务间隔中自动进入低功耗状态(不服务的时间段进入低功耗状态);超高速主机控制器在服务间隔前发送一个PING包到设备,以使设备在传输之前转变成活动状态
  • USB2.0设备无法通知主机控制器自己在进入低耗电状态前可容忍的延迟时间(设备通知主机自己进入低功耗状态的最长延迟时间),超高速设备则提供可容忍的延迟时间(Latency Tolerance)消息
  • USB2.0以固定的1ms(全速)/125us(高速)间隔传输帧/微帧。超高速设备可以发送间隔调整(Interval Adjustment)消息给主机,以调整帧间隔
  • USB2.0电源管理总是主机导向(主机初始化)的;超高速链路两端都支持电源管理,因此不管何时需要空闲,需要退出,需要通信,每个链路能独立的进入低功耗状态
  • USB2.0的信息包是广播方式,每个连接的设备解析每个信息包的地址、端点、方向信息来决定自己是否应该响应;超高速信息包有路由信息,HUB决定信息包要送达那个设备,只有一个例外,等时时间戳包(Isochronous Timestamp Packet,ITP)广播到每一个设备

参考资料

  1. Universal Serial Bus Specification Revision 2.0
  2. Universal Serial Bus 3.2 Specification
  3. USB开发大全 第四版
  4. 圈圈教你玩USB
  5. Linux那些事之我是USB
  6. https://blog.csdn.net/raynorxyx/article/details/82980066
  7. https://pc.poppur.com/peijian/8820.html

http://chatgpt.dhexx.cn/article/NHsNyBcd.shtml

相关文章

USB 协议整理 二:USB概述及协议基础(一)

一、USB 版本 二、USB是什么 USB是一种接口技术,真正的即插即用,英文全称是Universal Serial Bus,USB就是简写,中文叫通用串行总线。USB 的出现简化了个人计算机与外围设备的连接,增加了易用性。 USB 是主从模式。 …

强大的USB协议分析工具

2020年最后一天了,感谢大家一年来对我文章的支持,有你们的支持就是我强大的动力。 今天来给大家介绍一个USB 协议分析软件LeCroy USB Advisor,软件安装包下载连接如下: 链接:https://pan.baidu.com/s/12qBCOjuy4i8kr1M…

USB 充电协议

文章目录 锂电子电池电池的发展史锂电子电池充电过程充电物理公式充电器接口 USB协议慢充USB-IF BC1.2 快充QCOM QCOPPO VOOCUSB-IF PDMTK PE USB 充电市场 锂电子电池 电池的发展史 USB充电,都是充的 锂离子电池https://blog.csdn.net/u012719256/article/details/72627022 …

USB 协议分析(含基本协议和 USB 请求和设备枚举)

1. 物理特性 1.1 引脚 一条USB传输线分别由地线、电源线、D和D-四条线构成,D和D-是差分输入线,它使用的是3.3V的电压(与CMOS的5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500mA(可以在编程中设置)。 引脚标号信号名…

1.USB协议简介

最近学习usb相关的知识,一直感觉入不了门,看《linux那些事儿之我是usb》,对usb协议也不是很熟悉,没能坚持看下去,直到看了《圈圈教你玩usb》一书,把自己的兴趣立马提了起来,大牛圈圈用51单片机实…

USB协议基础篇

初次接触USB的同学,可能会被里面各种名词给搞晕,下面就来梳理一下这些知识,希望能帮助大家理解USB。 目录 一,从最常见的名词说起 1.1 什么是USB 1.2 USB协议版本 1.3 USB接口分类 1.4 PIPE 1.5 endpoint 1.6 管道通信方式…

USB协议简介

1.USB协议简介 https://blog.csdn.net/songze_lee/article/details/77658094 2017年08月28日 23:20:16 songze_lee 阅读数:22978 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/songze_lee/article/details/7…

USB协议详解

本博客整理自网络,仅供学习参考,如有侵权,联系删除。邮箱:rom100163.com 一个transfer(传输)由一个或多个transaction(事务)构成,一个transaction(事务)由一个或多个packet(包)构成,一个packet(包)由一个或…

简单说说USB协议(一)

目录 USB是什么 USB协议的传输结构 USB的电气特性 拓扑结构 编码方式 描述符 USB是什么 USB,通用串行总线,是一种计算机与外围设备进行数据交互的通信协议。 任何东西的出现都是有理可循的,在以前计算机刚兴起的时候,要连接…

USB协议介绍

目录 前言 1、概述 1.1 USB协议 1.2 USB充电协议 1.3 USB接口 1.3.1 type-a 1.3.2 Type-C 1.3.3 USB2.0/3.0/3.1/3.2速率 1.3.4 ULPI/UTMI 前言 开始整理USB相关基础概念,仅用于基础介绍、USB概念入门。更深入的内容请参考USB协议手册。部分图文来自参考文…

usb 传输协议

USB,是英文Universal Serial Bus(通用串行总线)、支持设备的即插即用和热插拔功能。在1994年底由英特尔、IBM、Microsoft等公司联合提出的,在此之前PC的接口杂乱,扩展能力差,热拔插不支持等。USB正是为了解…

USB协议(1)USB基础知识

USB(Universal Serial Bus)是通用串行总线的缩写,它是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品,并扩展至摄影器材、数…

linux免费的内网穿透

参考:https://www.cpolar.com/blog/how-to-install-cpolar-under-android-termux-hyper-terminal 下载包:https://www.cpolar.com/download 由于我的linux版本是装在安卓手机上的Alpine linux,所以下载的是如下图版本 下载后使用xftp工具上传到服务器&…

钉钉内网穿透 免费内网穿透工具 让你的电脑成为web服务器

什么是内网穿透? 就是让你个人电脑内建立的网站,在外网可以访问,例如你的手机,其他电脑等。 例如你在电脑部署了一个web服务器,你在浏览器访问127.0.0.1可以打开这个网站,但是你用手机访问127.0.0.1却打不…

免费的内网穿透(钉钉)

1.简介 阿里钉钉提供的免费内网穿透,是基于ngrok 的,可以实现 Http 穿透,可以将我们本地服务暴露给外部访问,可以用作我们调试一些回调接口,或者共享一些文件。 优点:网速快,估计是台带宽为100…

免费 内网穿透工具 实测好用

花生壳:已卸载 免费的版本根本不支持http协议,只支持TCP。 星空内网穿透:已卸载 需要注册账号 需要加入QQ群 需要实名认证,填写身份证号 钉钉内网穿透: 没试验,只记录在此 Utools中的内网穿透&#x…

推荐一款真正永久免费的内网穿透

神卓互联内网穿透,是一款真正的永久免费的内网穿透,每月不限流量、访问地址固定不变。 目录 1. 安装神卓互联内网穿透工具 神卓互联内网穿透客户端 控制台-界面清洁-一目了然 2.添加本地web项目-创建映射规则 3.神卓互联-增加通道检测功能&#xff0…

(不打广告)推荐这款永久免费内网穿透软件-神卓互联

内网穿透是一种将内部网络中的应用程序公开到公共网络上的技术。在许多情况下,由于网络安全限制或配置问题,内部网络中的应用程序可能无法通过公共网络访问。这时,内网穿透技术就可以解决这个问题,使得我们可以在没有公共 IP 地址…

内网穿透工具(全免费)

文章目录 前言一、NATAPP是什么?二、使用步骤1.访问官网注册2.客户端下载3 登录,配置参数1 登录,购买免费隧道2 配置参数3 根据authtoken 运行 natapp.exe 4 试试效果 总结 前言 平时开发微信公众号,小程序, 或者给他人演示项目等,难免会遇到需要开通外网的情况,作…

无需设置路由器,无需公网ip 实现永久免费内网穿透

用网云穿在 N1 盒子上实现 Openwrt 的内网穿透 软路由器情况 N1(已经刷入 Armbian) 中使用 docker 创建 Openwrt 容器作为旁路由。 我的内网 ip 信息 内网 IP 因人而异,以下是我自己的设置 Armbian:192.168.123.2 Openwrt:192.168.123.10 思路 N1 的 Armbian 中部…