admin 2025-12-20 15:19:24 账号安全

USB传输协议介绍

目录

概述

1 核心概念

1.1 关键词介绍

1.2 协议的层次结构

1.2.1 层级 1:包(Packet)

1.2.2 层级 2:事务(Transaction)

1.2.3 层级 3:传输类型(Transfer Type)

2 四种传输类型

2.1 控制传输(Control Transfer)

2.2 中断传输(Interrupt Transfer)

2.3 批量传输(Bulk Transfer)

2.4 等时传输(Isochronous Transfer)

2.5 等时传输(Isochronous Transfer)

2.6 4种传输类型对比

概述

本文主要介绍USB的传输协议,如果说硬件是USB系统的“身体”,那么传输协议就是其“灵魂”和“神经系统”,它规定了数据如何被组织、打包、发送、接收和确认,从而确保通信的有序和可靠。USB协议是一个复杂的体系,其核心思想是主机主导的、轮询式的、基于事务的通信。

1 核心概念

1.1 关键词介绍

1) 主机控制(Host-Centric)

整个USB总线由主机(通常是电脑)完全控制。任何通信都必须由主机发起,设备永远不能在未收到主机请求时主动向主机发送数据。

2) 轮询(Polling)

主机会以固定的时间间隔(通常是1ms)向所有连接的设备发送询问,检查它们是否有数据需要传输。这个时间间隔被称为帧(USB 1.x/2.0) 或微帧(USB 3.0+,125µs)。

3) 事务(Transaction)

一次完整的数据交互单元被称为一个“事务”。一个事务通常由多个“包”组成。

1.2 协议的层次结构

1.2.1 层级 1:包(Packet)

包是最基本的通信单位,就像一封信的信封。所有通信都由包开始和结束。一个包包含以下字段:

同步字段(SYNC): 用于接收方时钟同步。

包标识符(PID): 包的核心,定义了包的类型。PID分为四种:

令牌包(Token): 由主机发出,定义要开始一个事务。(例如:IN-请求设备发送数据,OUT-主机要发送数据,SETUP-用于控制传输的设置)

数据包(Data): 携带实际的数据载荷。

握手包(Handshake): 报告事务状态。(例如:ACK-确认成功,NAK-设备暂时无法响应/缓冲区满,STALL-端点被挂起/需要主机干预)

特殊包(Special): 用于高速传输等特定功能。

地址/端点/数据: 具体内容取决于PID类型。

循环冗余校验(CRC): 用于检测传输错误。

包结束(EOP): 标志包的结束。

1.2.2 层级 2:事务(Transaction)

一个事务由一系列包组成,完成一次特定的单向数据交换。它就像一次完整的对话回合。主要有三种类型的事务:

IN事务: 主机向设备要数据。

令牌包(IN PID): 主机:“设备A的端点1,请发数据给我。”

数据包(DATA PID): 设备:“好的,这是数据。”

握手包(ACK PID): 主机:“数据收到,无误。”(如果数据错误,主机可能不回复或发NAK)

OUT事务: 主机向设备发数据。

令牌包(OUT PID): 主机:“设备A的端点2,我要发数据给你。”

数据包(DATA PID): 主机:“这是数据。”

握手包(ACK PID): 设备:“数据收到,无误。”

SETUP事务: 一种特殊的OUT事务,用于控制传输,发送标准请求命令。

令牌包(SETUP PID)

数据包(DATA0 PID)

握手包(ACK PID)

1.2.3 层级 3:传输类型(Transfer Type)

传输类型是最高层的概念,它根据应用场景的不同,定义了如何组织一个或多个事务来完成一次完整的数据交换。USB协议定义了四种基本传输类型,这是理解USB协议的关键。

2 四种传输类型

2.1 控制传输(Control Transfer)

1) 用途:用于命令和状态操作。设备的枚举、配置都依靠控制传输。所有USB设备必须支持控制传输(端点0)。

2) 特点:

保证100%准确交付,有错误重传机制。

总线带宽中会保留一部分(10%)给控制传输。

由2-3个阶段组成:

建立阶段: 1个SETUP事务,发送8字节的标准化请求(如Get Descriptor)。

数据阶段(可选): 0个或多个IN/OUT事务,传输请求的数据(如描述符)。

状态阶段: 1个IN/OUT事务,反向于数据阶段方向,用于确认整个传输是否成功。

2.2 中断传输(Interrupt Transfer)

1) 用途: 用于传输少量、周期性的、需要及时响应的数据。如键盘按键、鼠标移动。

2) 特点:

保证延迟: 主机保证在指定的时间间隔(轮询间隔)内查询设备。

有数据校验和重传,保证可靠性。

数据传输量小(低速USB下最多8字节/帧,全速下最多64字节)。

2.3 批量传输(Bulk Transfer)

1) 用途: 用于传输大量、无时效要求的数据。如U盘、打印机、扫描仪。

2) 特点:

无带宽和延迟保证: 当总线空闲时,它们才“尽力”使用剩余带宽。

有强大的错误检测和重传机制,保证100%准确无误。

数据传输量大(全速下最多64字节/事务,高速下最多512字节)。

2.4 等时传输(Isochronous Transfer)

1) 用途:用于传输大量、无时效要求的数据。如U盘、打印机、扫描仪。

2)特点:

无带宽和延迟保证: 当总线空闲时,它们才“尽力”使用剩余带宽。

有强大的错误检测和重传机制,保证100%准确无误。

数据传输量大(全速下最多64字节/事务,高速下最多512字节)。

2.5 等时传输(Isochronous Transfer)

1) 用途: 用于传输实时、连续的数据流。如摄像头、麦克风、音箱。

2) 特点:

保证带宽: 在设备配置时,主机就会为它保留固定的带宽。

无重传机制: 不进行错误校验和重传(因为重传的旧数据对实时流已无用)。允许一定的错误率。

专注于保证恒定的数据流和延迟,而不是数据的绝对正确。

2.6 4种传输类型对比

传输类型用途数据可靠性时序/带宽典型设备控制传输配置、命令、状态保证保证部分带宽所有设备(端点0)中断传输小量、及时数据保证保证延迟(轮询)键盘、鼠标批量传输大量、非实时数据保证无保证(尽力传输)U盘、打印机等时传输实时、连续数据流不保证(容错)保证带宽和延迟摄像头、音箱

Copyright © 2088 极光云巢-多端游戏数据互通平台 All Rights Reserved.
友情链接