USB集线器错误检测的原理与时机
2026-04-22
本文链接为:http://www.usbzh.com/article/detail-1623.html ,欢迎转载,转载请附上本文链接。
一、核心概念
错误检测是指集线器正确识别出USB总线上的异常状况(如设备“喋喋不休”、包丢失、时序违规等),并采取相应措施(如禁用端口、触发恢复机制)的能力。
与“误检测”不同,错误检测依赖正确的同步时钟作为判断基准。
二、主要错误类型及检测原理
| 错误类型 | 检测原理 | 检测主体 | 典型时机 |
|---|---|---|---|
| 喋喋不休 (Babble) | 在EOF2点检查下游端口是否仍在发送数据 | 集线器 | 每个(微)帧结束前 |
| SOF丢失 | 检测到current_frame_timer溢出(超过最大允许值) | 集线器 | 预期收到SOF的时间窗口内 |
| 包格式错误 | 检测到无效的PID、CRC校验失败、位填充错误等 | 集线器/主机 | 数据包接收过程中 |
| 超时 | 检测到总线空闲时间超过规定阈值 | 集线器/主机 | 等待设备响应时 |
| 复位失败 | 检测到设备在规定时间内未响应复位信号 | 主机 | 设备枚举期间 |
三、核心错误检测详解
1. 喋喋不休 (Babble) 检测
USB集线器对每一个帧内预的时间最后预留一部分用于喋喋不休设备的检测,在这种情情况下不允许任何设备进行数据传输
| 切断点 | 时间点 | 切断对象 | 目的 | 防止的问题 |
|---|---|---|---|---|
| EOF1 | EOF 前 560 位时间 (高速) / 32 位时间 (全速) | 集线器正在转发的上行数据包 | 自我约束,提前结束传输 | 防止自己被上游误判为喋喋不休 |
| EOF2 | EOF 前 64 位时间 (高速) / 10 位时间 (全速) | 下游故障设备 | 惩罚 / 隔离喋喋不休设备 | 防止故障设备拖垮整个总线 |
EOF1:检测内容与动作
检测内容:在 EOF1 时刻,集线器检查当前上行传输(设备→主机)是否仍在进行。即:是否有数据包在帧尾前仍未发送完毕。
动作(发现喋喋不休):
- 强制终止当前上行数据包(提前发送 EOP 结束包)
- 不关闭端口,允许该端口后续继续传输
- 目的:保护集线器自身不被上一级集线器误判为异常设备
- EOF1(早):包太长 → 掐断包、保帧
EOF2:检测内容与动作
检测内容:在 EOF2 时刻,集线器再次检查该下行端口是否仍在发送数据。即:设备是否持续占用总线、拒不释放。
动作(发现喋喋不休):
- 立即关闭(Disable)该下行端口
- 切断该端口的所有数据转发,彻底隔离故障设备
- 目的:确保主机在下一周期一定能正常发送 SOF,不影响整个总线
- EOF2(晚):还在发 → 关端口、保总线
├────────────────────────────────────────────────────────────────────────┤
│ ← 正常传输 → ← 预留区 → ← 最后检查区 → 帧结 │
│ SOF 数据包传输 EOF1 EOF2 EOF │
│ │ │ │ │ │ │
│ ▼ ▼ ▼ ▼ ▼ │
│━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━│
│ │
│ ▲ ▲ ▲ │
│ │ │ │ │
│ SOF丢失检测 自我切断 喋喋不休检测 │
│ (预期收到SOF时) (EOF1点) (EOF2点) │
2. SOF丢失检测
原理:
时机:
- 每个预期收到SOF的时间点
- 连续丢失检测:在两个SOF间隔结束时
动作:
- 丢失1个:使用
next_frame缓存值维持运行(惯性模式) - 连续丢失2个:定时器失锁,需要重新同步
3. 包格式错误检测
原理:
- 接收端检查数据包的各个字段
- 包括:PID校验、CRC5/CRC16校验、位填充规则等
时机:
- 数据包接收过程中
- 每个包结束时进行校验
动作:
- 忽略损坏的包
- 等待重传
四、错误检测的前提条件
| 条件 | 说明 | 无此条件时的风险 |
|---|---|---|
| (微)帧定时器已同步 | 必须锁定到主机的SOF周期 | 无法判断EOF位置 → 无法检测喋喋不休 |
| 正确的电气环境 | 信号电平、阻抗匹配正常 | 可能产生假信号 → 误检测 |
| 有效的包格式 | PID、CRC等符合规范 | 无法区分损坏包和有效包 |
五、错误检测 vs 误检测 对比
| 对比项 | 错误检测 (正确识别) | 误检测 (错误识别) |
|---|---|---|
| 定时器状态 | ✅ 已同步 | ❌ 未同步 |
| 判断依据 | 准确的EOF1/EOF2时间点 | 无时间基准 |
| 典型场景 | 正常运行时检测故障设备 | 全局恢复期间设备热插拔 |
| 结果 | 正确隔离故障 | 可能错误禁用正常设备或传播假信号 |
| 恢复方式 | 自动或主机复位 | 主机复位并重新枚举 |
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936 USB技术交流3:1031974172
USB2.0集线器HUB





