【硬件_USB2.0】一文讲透USB2.0硬件工作原理
1. USB2.0概述USB 2.0 是通用串行总线第二代标准2000年正式发布至今仍是外设、嵌入式设备、工控场景最常用的接口之一。1.1. USB2.0硬件物理接口USB2.0使用4线传输信号和电源在每个点对点的传输过程中信号通过D、D-两根线进行传输。所有USB2.0均为4芯线缆无额外高速差分线高速模式下依靠 D/D‑差分信号 传输抗干扰更好默认配置5V / 500mA功率 2.5W可通过协议协商提升电流最高可达 5V / 1.5A部分设备支持无快充协议充电速度远低于 USB‑PD、QC 等快充标准引脚编号信号名称功能说明1VBUS5V 电源2D‑差分数据负3D差分数据正4GND信号地常见接口形态如下接口名称外观特点主要用途Type‑A长方形扁平口最通用电脑、HUB、充电器、主机端Type‑B方形大口打印机、扫描仪、大型外设Mini‑USB梯形小接口上下不对称早期相机、MP3、老款行车记录仪Micro‑USB更扁的梯形一侧有斜角旧安卓手机、充电宝、蓝牙设备1.2. USB2.0星形拓扑连接方式USB 2.0 标准拓扑结构为星形层级拓扑树型星形以主机为中心向外辐射依靠 USB HUB 实现扩展。只有一个主设备Host通常是电脑、工控主机所有通信由主机发起外设不能主动发送数据HUB 作为星形分支节点主机 → 一级HUB → 二级HUB → 外设呈层级星形展开级联层数限制USB 2.0 最多允许 5 层拓扑深度含主机实际可用最多串联 4 个HUB设备总数上限整个总线最多挂载 127 个设备含HUB本身2. USB2.0 PHY工作模式USB 2.0 包含三种工作模式硬件向下兼容 USB 1.1模式名称英文名称理论速率典型应用场景高速High‑Speed480 MbpsU盘、移动硬盘、高清摄像头、打印机全速Full‑Speed12 Mbps普通键鼠、读卡器、音频外设低速Low‑Speed1.5 Mbps简单按键、老式鼠标、小型传感器2.1. 低速/全速模式LS/FS模式下使用的是3.3V的IOD、D-单端摆幅0-3.3V。发射端的输出阻抗28~44Ω如果LS/FS复用HS-driver输出阻抗范围40.5~49.5Ω。这里说一下支持HS-MODE的PHY不一定需要支持LS-MODE但是一定需要支持FS-MODE。1. 信号边沿速率低速信号跳变更平缓抗干扰弱用于简单低速率外设全速信号边沿更快满足中等速度数据传输2. 主机识别方式靠 D / D‑ 上拉电阻 区分模式全速设备上电时在 D 接 1.5kΩ 上拉电阻低速设备上电时在 D‑ 接 1.5kΩ 上拉电阻主机检测到上拉位置自动切换对应速率。3. 核心参数项目低速 Low‑Speed全速 Full‑Speed理论速率1.5 Mbps12 Mbps差分信号半速差分边沿更缓标准差分典型设备老式鼠标、简易按键、小型传感器普通键鼠、USB声卡、读卡器传输距离最长 3m最长 5m编码方式NRZI 不归零反转编码NRZI 不归零反转编码2.2. 高速模式在支持HS-MODE的设备中需要进行握手确认都支持HS-MODE才能进入HS-MODE的工作模式。握手总是紧随RESET 之后。驱动的差分输出阻抗为90Ω±15%单端输出阻抗45Ω±15%单端信号摆幅400mV±10%HS模式下发射端的单端输出阻抗是45Ω , 接收端同样也有匹配的终端电阻45欧姆 。因此在DP或者DM上看到的等效DC阻抗为22.5Ω。1. 速率协商机制主机先以全速12 Mbps握手设备再发出高速检测信号协商成功后切换到 480 Mbps协商失败则降级为全速运行2. 信号与电气特性依旧是 D / D‑ 差分信号提高跳变频率实现高速必须用带屏蔽的 USB 2.03. 核心参数项目高速模式 High‑Speed理论传输速率480 Mbps编码方式同样采用 NRZI 编码比特率更高识别方式设备握手协商非单纯靠上拉电阻最大传输距离5 m线缆要求必须使用屏蔽双绞线普通线无法稳定跑高速2.3. CHIRP模式CHIRP‑MODE 是 USB 2.0 设备进入高速模式的握手信号机制用来让主机和设备从全速切换到 480Mbps 高速。LS/FS模式没有CHIRP-MODE这个概念LS/FS模式的进入是通过判断DM、DP线上高电平从而判断进入不同的模式CHIRP模式的作用是帮助支持HS-MODE的HOST和DEVICE进行协商进入HS-MODECHIRP-MODE仅仅在RESET之后的握手动作中使用CHIRP-MODE时只打开自身的45Ω对地电阻因此CHIRP-MODE的信号幅度是HS-MODE信号幅度的两倍CHIRP模式协商流程设备上电先默认以 全速 12 Mbps 启动设备发出 CHIRP‑K 信号D‑ 为高D 为低主机检测到 CHIRP 后回复交替的 K‑J 序列设备收到主机应答双方确认切换到 480 Mbps 高速模式协商失败 → 保持全速 12 Mbps 运行2.4. NRZI编码和“J”“K”状态2.4.1. NRZI编码NRZINon‑Return‑to‑Zero Inverted反转不归零编码编码规则遇到数据位 1电平保持不变遇到数据位 0电平发生翻转。USB采用NRZI的编码方式传送数据。在NRZI编码中当遇到“0” 时信号电平发生翻转遇到“1” 信号电平保持上一个状态不变。USB协议规定连续 6 个 1 之后自动插入一个 0Bit Stuffing填充位接收端会丢弃这个填充的0。这个填充的 0 会在NRZI中产生一次翻转强制接收端可以重新同步时钟。2.4.2. JK状态USB 协议规定通过判断总线上D\D-两条线上相对地的实际电平来判断状态“J”和“K”。工作模式J 态定义K 态定义LS‑Mode 低速1.5MbpsD‑ DD D‑FS‑Mode 全速12MbpsD D‑D‑ DHS‑Mode 高速480MbpsD D‑D‑ D2.5. SE0信号同步信号EOP在FS/LS-MODE中用3对KJ1对K来表示同步头SYNC共计8个bit用2个bit宽度的SE01个bit“J”来表示EOP。对于大于2.5us的SE0被定义为RESET。对于FS模式SE0的宽度为160ns-175ns之间对于LS 模式SE0的宽度为1.25us-1.5us之间。SE0的时间长度必须小于2个LS模式的bit (2.5us)否则会被认为是RESET。2.5.1. SE0信号SE0定义USB协议中定义当D、D-都是“0”电平时为SE0。LS/FS模式的空闲状态是“J“HS模式的空闲状态是SE0。SE0信号核心作用总线复位Reset持续较长时间的 SE0≥10ms主机下发复位信号设备重新初始化包结束信号EOPEnd of Packet数据包末尾用两个位时间的 SE0 一个位时间 J 态表示包结束总线空闲短时间 SE0 后回到 J 态代表总线空闲2.5.2. 同步信号同步信号作用USB 数据包最开头的一段固定序列用于接收端同步时钟、锁定比特速率保证收发双方采样对齐。同步信号格式高速模式标准同步头15 对 KJ 1 个 K1 对 KJ 2 bit总比特数15*2 2 32bit工作模式同步字段长度同步序列主要作用低速 LS / 全速 FS8 bitK‑J‑K‑J‑K‑J‑K‑K位时钟同步锁定采样时刻高速 HS32bit15 组 K‑J 交替 K‑K高速下更充分的时钟同步2.5.3. EOP信号高速模式 EOP 比特固定为0 1 1 1 1 1 1 1 1共 9bit区别于低速/全速的 SE0 电平结束包HS 依靠 NRZI 编码跳变特征识别 EOP。对比项低速 / 全速LS/FS1.5M/12Mbps高速HS480Mbps识别方式物理电平 SE0 判定NRZI 编码比特流判定EOP 比特/电平格式2 bit SE0 1 bit JSE0, SE0, J固定 9bit 序列总线实际波形D、D‑ 同时拉低SE0连续 8 位 J 或 连续 8 位 K电平由什么决定固定 SE0 电平与前序数据无关由数据包最后一位电平决定末位J → 8个K末位K → 8个J位填充规则不涉及位填充不受 6 个连续 1 必须插 0 的规则约束接收端判断逻辑检测到连续两个 SE0 即判定 EOP检测到超过 6 个连续 1直接判定为 EOP3. 高速模式时序3.1. HS Suspend 检测设备工作在高速HS‑MODE时若检测到总线上持续 SE0 电平超过 3ms进入挂起流程并自动切换为全速FS状态。项目设备端Device主机端Host触发条件HS 模式下检测到 SE0 持续超过 3ms主动进入挂起发出弱驱动 SE0终端电阻变化撤销 DP/DM 45Ω 对地电阻DP 引脚接入 1.5kΩ 上拉电阻移除 45Ω 驱动电阻DP/DM 改为 15kΩ 下拉电阻工作模式切换由 HS 模式切换为 FS 模式停止 HS 强驱动进入低功耗待机总线驱动类型切换为 FS 设备电气特性输出弱 SE0维持低功耗总线状态3.2. RESET检测在LS/FS-MODEDEVICE检测到2.5us的SE0就会进入RESET 。在HS-MODE情况下DEVICE检测到超过3ms 的SE0状态后将马上切成FS模式也就是撤销接收端45Ω到地电阻并在DP上挂上1.5K上拉电阻。此时HOST发出的是强驱动SE0即HOST对地45Ω还在。本质就是判断SE0大于3ms以后是否为强驱动3.3. HS-MODE握手检测支持高速模式的设备检测到强驱动 SE0、进入复位状态后启动 HS 握手协商分为三种场景序号设备当前工作状态触发事件设备行为最终判定1LS / FS 模式检测到 SE0 持续 2.5 μs进入复位RESET启动握手流程主机发起总线复位开始 HS 握手2挂起 SuspendFS‑J 状态检测到 SE0判定为强驱动 SE0进入复位启动握手主机复位唤醒开始 HS 握手3HS 高速模式检测到 SE0 持续 3 ms先切换为 FS 电气模式再判断 SE0 驱动强度强 SE0 复位握手弱 SE0 进入挂起HS 握手的必要前提设备进入 RESET复位状态复位的本质总线出现主机侧的强驱动 SE03.4. USB2.0握手流程1. 设备检测到主机发起的总线复位RESET后进入 Chirp 模式。收发器仍使用 HS 高速驱动与接收电路但终端电阻保持 FS 全速配置DP 1.5k 上拉无 45Ω 对地电阻2. 设备发送至少 1ms 的 Chirp‑K 信号等待主机响应。3. 高速主机检测到 Chirp‑K 后回复至少 3 对 Chirp‑KJ。4. 设备识别到 3 对 KJ 序列正式进入 HS‑MODE。打开 DP/DM 45Ω 对地终端电阻进入高速 480Mbps 等待正常数据包场景设备动作主机动作最终结果HS‑Host HS‑Device复位后发送 1ms Chirp‑K收到 Chirp‑K 回复 ≥3 对 KJ双方进入高速模式FS‑Host HS‑Device复位后发送 1ms Chirp‑K不识别 Chirp‑K无 KJ 响应超时后设备维持 FS 全速模式FS‑Device 任意 Host复位后不发送 Chirp‑K直接按全速初始化保持全速通信HS-HOST/HS-DEVICE 握手FS-HOST /HS-DEVICE3.5. 工作恢复状态设备已从 HS‑Mode 进入 Suspend挂起此时工作在 FS 电气状态DP 1.5k 上拉无 45Ω 电阻。恢复类型触发方关键信号流程设备最终动作Device 发起恢复外设设备1. 设备主动发送 FS‑K2. 主机检测到 FS‑K 并维持3. 主机随后发出 FS 标准 SE0 复位设备检测到 SE0退出挂起恢复 HS‑ModeHost 发起恢复主机1. 主机主动发送 FS‑K2. 设备检测到 FS‑J → FS‑K 跳变退出挂起上电3. 等待并检测到 ≥1.33μs SE0确认复位恢复 HS‑Mode 正常通信3.6. HS-DEVICE 的插入设备检测到 VBUS 插入上电 后默认进入 FS‑MODE全速模式此时设备在 DP 引脚接入 1.5kΩ 上拉电阻总线保持 FS‑J 状态。步骤触发条件设备状态/动作总线电平/电阻特征主机动作后续流程1VBUS 插入、设备上电设备默认初始化 FS全速模式未开启高速45Ω终端电阻DP挂载1.5总线维持 FS-J空闲电平持续检测总线状态识别设备接入等待主机下发复位信号2主机检测到总线FS-J电平保持FS待机状态监听总线信号稳定FS-J电平无电平跳变确认外设接入主动发起FS模式SE0复位总线进入复位状态触发设备握手逻辑3设备检测到FS SE0复位退出默认FS待机进入CHIRP握手模式收发使用HS驱动/接收电路保留FS终端电阻保留1.5K上拉无45Ω对地电阻持续维持复位时序等待设备 Chirp 信号进入USB高速协商核心流程4握手阶段HS设备专属设备输出≥1ms Chirp-K等待主机应答总线输出固定Chirp-K电平支持HS回复≥3对Chirp-K不支持HS无任何应答握手成功→切换HS模式握手失败→维持FS模式5握手成功关闭FS 1.5K上拉开启DP/DM 45Ω对地电阻正式进入HS高速工作模式总线切换为HS差分电平特征同步切换HS驱动模式准备高速数据通信进入正常HS业务通信状态