news 2026/5/27 21:27:34

【分享贴】一文带你搞懂USB 2.0协议

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【分享贴】一文带你搞懂USB 2.0协议

1 USB 2.0硬件链接和接口

USB2.0使用4线传输信号和电源,在每个点对点的传输过程中,信号通过D+、D-两根线进行传输。

USB系统中设备和主机的链接方式采用的是星形连接,需要注意协议规定最大支持5级HUB (HUB 会增加delay, 还会影响设备接收到SYNC长度)。如下图。

2 USB 2.0 PHY的工作模式

USB 2.0的应用广泛,设备按照速率可分为如下几类

Low-Speed mode(LS-MODE)低速传输速率1.5Mb/s

Full-Speed mode(FS-MODE)全速传输速率12Mb/s

High-Speed mode(HS-MODE)高速传输速率480Mb/s

2.1 LS/FS-MODE

LS/FS模式下,使用的是3.3V的IO,D+、D-单端摆幅0-3.3V。发射端的输出阻抗28~44Ω,如果LS/FS复用HS-driver,输出阻抗范围40.5~49.5Ω。这里说一下支持HS-MODE的PHY不一定需要支持LS-MODE但是一定需要支持FS-MODE。

在LS/FS 模式下,HOST始终有15K 下拉电阻。DEVICE在LS模式下会在DM上拉1.5K电阻。DEVICE在FS模式下会在DP上拉1.5K电阻。

2.2 HS-MODE

在支持HS-MODE的设备中,需要进行握手确认,都支持HS-MODE,才能进入HS-MODE的工作模式。握手总是紧随RESET 之后

驱动的差分输出阻抗为90Ω±15%单端输出阻抗45Ω±15%,单端信号摆幅400mV±10%。

HS模式下,发射端的单端输出阻抗是45Ω , 接收端同样也有匹配的终端电阻45欧姆 。因此在DP或者DM上看到的等效DC阻抗为22.5Ω。见下图。

2.3 CHIRP-MODE

首先明确一个概念,LS/FS模式没有CHIRP-MODE这个概念,LS/FS模式的进入是通过判断DM、DP线上高电平,从而判断进入不同的模式。CHIRP模式的作用是帮助支持HS-MODE的HOST和DEVICE进行协商进入HS-MODE。

CHIRP-MODE仅仅在RESET之后的握手动作中使用,CHIRP-MODE时,只打开自身的45Ω对地电阻,因此CHIRP-MODE的信号幅度是HS-MODE信号幅度的两倍。

2.4 NRZI编码和“J”“K”状态

USB采用NRZI的编码方式传送数据。在NRZI 编码中,当遇到“0” 时,信号电平发生翻转,遇到“1” 信号电平保持上一个状态不变。如下图所示

USB协议规定连续 6 个 '1' 之后自动插入一个 '0'(Bit Stuffing)(填充位,接收端会丢弃这个填充的0)。这个填充的 '0' 会在NRZI中产生一次翻转,强制接收端可以重新同步时钟。

USB 协议规定通过判断总线上D+\D-两条线上相对地的实际电平来判断状态“J”和“K”。

在LS-MODE下,D-电平> D+电平定义为状态“J”,D+电平> D-电平定义为状态“K”。

在FS-MODE下,D+电平> D-电平定义为状态“J”,D-电平> D+电平定义为状态“K”。

在HS-MODE下,D+电平> D-电平定义为状态“J”,D-电平> D+电平定义为状态“K”。

通过上面可以发现LS-MODE和FS-MODE的“J” “K”状态是相反的。为什么会这样呢?

因为LS/FS-MODE的“J”状态定义为总线空闲时的状态。

LS空闲时:D-被上拉到高电平 → 所以“D-高、D+低”被定义为“J”。

FS空闲时:D+被上拉到高电平 → 所以“D+高、D-低”被定义为“J”。

2.5 SE0信号&同步信号&EOP

USB协议中定义当D+、D-都是“0”电平时为SE0。LS/FS模式的空闲状态是“J“,HS模式的空闲状态是SE0。

在FS/LS-MODE中,用3对KJ+1对K来表示同步头(SYNC),共计8个bit,用2个bit宽度的SE0+1个bit“J”来表示EOP。对于大于2.5us的SE0被定义为RESET。对于FS模式,SE0的宽度为160ns-175ns之间, 对于LS 模式,SE0的宽度为1.25us-1.5us之间。SE0的时间长度必须小于2个LS模式的bit (<2.5us),否则会被认为是RESET。

在HS-MODE中,用15对KJ+1对K来表示同步头(SYNC),共计32bit。需要注意的是,USB 最大支持5级HUB 链接,每经过一级HUB ,是允许HUB 丢掉4个bit的SYNC头,也就是两对KJ。因此实际上最差情况下,接收端收到的最短SYNC头是5对JK加上一对K, 也就是12个bit。

HS模式的EOP和LS/FS模式不一样,它是用“011111111”表示,上文有说过NRZI的编码是“0”发生信号翻转,“1”不发生信号翻转。所以EOP的电平,取决于EOP之前数据最后一位是“J”还是“K” 如果前一次是“J”,那么EOP=KKKKKKKK. 如果前一次是“K”,那么EOP=JJJJJJJJ。

协议中规定EOP不需要大于连续6个“1”之间插入0,所以位填充错误也会被认为是EOP。如下图所示:

对于HS-MODE来说,小于3ms的SE0为IDLE 状态。大于3ms的SE0, 如果仍然为强驱动(45Ω到地),那么为RESET;大于3ms的SE0,如果为弱驱动(15K到地),那么为Suspend。

2.6 各种模式电阻的情况

如下是模式识别时,Host和Device电阻控制总结

3 HS-MODE典型接口时序

3.1 HS Suspend 检测

DEVICE在HS-MODE情况下检测到超过3ms的SE0状态后,Device马上切成FS模式,也就是撤销接收端45Ω到地电阻,并在DP上挂上1.5K上拉电阻。此时HOST发出的是弱驱动SE0,即去掉45Ω到地电阻,改成15K下拉电阻,过程如下图。

3.2 RESET检测

在LS/FS-MODE,DEVICE检测到>2.5us的SE0,就会进入RESET。如下图。

在HS-MODE情况下DEVICE检测到超过3ms 的SE0状态后,将马上切成FS模式,也就是撤销接收端45Ω到地电阻,并在DP上挂上1.5K上拉电阻。此时HOST发出的是强驱动SE0,即HOST对地45Ω还在。(本质就是判断SE0大于3ms以后是否为强驱动):

3.3 HS-MODE握手检测

支持HS-MODE的DEVICE,在下面三种情况下会进入握手过程。

1)DEVICE处在LS/FS-MODE,检测到超过2.5us的SE0,DEVICE进入RESET,开始握手过程。

2)DEVICE已经处在Suspend的模式下后(FS-J),一旦检测到SE0, 说明线上是强驱动的SE0,DEVICE进入RESET ,开始握手过程。

3)DEVICE处于HS-MODE,并且检测到大于3ms的SE0. 这个时候有可能是HOST发起的RESET进入握手,也有可能是HOST发起的Suspend 。在这种情况下DEVICE通过切到FS-MODE,判断线上的SE0是否为强驱动。如果发现是强驱动,说明这是HOST发起的RESET,开始握手过程。

上面三种情况,可以看出握手都是以线上有强驱动的SE0开始的,都是以DEVICE进入RESET为标准。

3.4 HOST或者DEVICE握手的过程

1)DEVICE(支持HS-MODE的DEVICE)在检测到HOST发起的RESET之后,会切换成CHIRP-MODE(发射或者接收都使用HS的driver 和receiver, 但是使用FS terminal电阻)。

2)DEVICE发出至少1ms长度的Chirp K。并等待HOST的回应。

3)如果HOST支持HS-MODE,在2)完成后,HOST将发出至少三对Chirp KJ对。

4)DEVICE在检测到HOST发出的三对Chirp KJ对后,进入HS-MODE,45Ω对地电阻打开。等待正常的HS 通信数据。

上面这种情况,是HOST和DEVICE都支持HS-MODE 情况下的正常回应。如果DEVICE 不支持HS-MODE,上面过程不会进入2), DEVICE在检测的RESET之后不会发出Chirp-K。如果HOST不支持HS-MODE,那么不会进入到3)。HOST不会回应DEVICE发出的Chirp-K。所以下面只给出两种情况的时序图。HS-HOST+ HS-DEVICE和FS-HOST+HS-DEVICE。

3.4.1 HS-HOST/HS-DEVICE 握手

3.4.2 FS-HOST /HS-DEVICE 握手

3.5 工作状态恢复

DEVICE在进入Suspend mode之后,可以发起恢复请求,HOST也可以主动发起恢复。下面介绍DEVICE在HS-MODE进入Suspend之后的恢复时序。

DEVICE发起的恢复:DEVICE发出一个FS-K,等待HOST 检测后并维持这个FS-K后,随后HOST会发出FS的SE0 RESET,DEVICE在检测到该SE0后,恢复HS-MODE。

HOST发起的恢复:HOST发出一个FS-K,DEVICE 在检测到有FS-J 到FS-K 的变化时,就会上电,撤销Suspend。准备等待SE0,在检测到1.33us SE0之后,恢复HS-MODE。

3.6 HS-DEVICE 的插入

DEVICE在检测的VBUS插入后,默认进入的是FS-MODE。HOST在检测到线上面由于DEVICE挂起的FS-J 后会发出FS的SE0的RESET。然后进入前面所述的握手操作。如下图所示。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/27 21:27:20

如何彻底解决网盘下载慢问题:LinkSwift八大网盘直链下载神器完全指南

如何彻底解决网盘下载慢问题&#xff1a;LinkSwift八大网盘直链下载神器完全指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移…

作者头像 李华
网站建设 2026/5/27 21:26:33

《2026 年 5 月中国居住地新政研究报告》

《2026 年 5 月中国居住地新政研究报告》概要2026 年 5 月 22 日&#xff0c;国务院正式印发《关于推行常住地提供基本公共服务的实施意见》&#xff08;国发〔2026〕11 号&#xff0c;以下简称 “新政”&#xff09;&#xff0c;这是继 2024 年《深入实施以人为本的新型城镇化…

作者头像 李华
网站建设 2026/5/27 21:17:06

从游戏角色移动到UI布局:定比分点公式在Unity和前端开发中的实战应用

从游戏角色移动到UI布局&#xff1a;定比分点公式在Unity和前端开发中的实战应用在游戏开发和前端工程中&#xff0c;我们经常需要处理空间中的点与点之间的关系。无论是让游戏角色沿着预定路径平滑移动&#xff0c;还是在前端界面中实现元素基于特定比例的精准定位&#xff0c…

作者头像 李华
网站建设 2026/5/27 21:15:33

TinyML赋能RIS:在MCU上实现智能波束赋形的量化部署与优化

1. 项目概述&#xff1a;当RIS遇见TinyML&#xff0c;在MCU上实现智能波束赋形在无线通信领域&#xff0c;可重构智能表面&#xff08;RIS&#xff09;正迅速从一个前沿概念走向实际部署。它的核心魅力在于&#xff0c;无需昂贵的射频链路和复杂的有源器件&#xff0c;仅通过成…

作者头像 李华
网站建设 2026/5/27 21:15:31

从Docker Hub发布看开源工具交付:asqav-mcp镜像实战解析

1. 项目概述&#xff1a;从Docker Hub发布看开源工具的交付演进如果你是一名开发者&#xff0c;或者正在管理一个技术团队&#xff0c;那么“如何让一个工具或服务被更多人方便、稳定地使用”这个问题&#xff0c;几乎每天都会遇到。尤其是在开源领域&#xff0c;一个项目从代码…

作者头像 李华
网站建设 2026/5/27 21:15:04

熊猫侠 AI 导航,一个无广告、高精选的 AI 工具集合站

熊猫侠 AI 导航站」&#xff0c;是一个专注于为创作者、办公人群和 AI 爱好者打造的无广告、高精选AI 工具导航平台。这里没有杂乱弹窗&#xff0c;也没有无效链接&#xff0c;所有工具都经过人工筛选&#xff0c;目的就是帮你快速找到好用的 AI 工具&#xff0c;不用再全网瞎找…

作者头像 李华