基础概念
1. USB简介
USB(Universal Serial Bus)是一种通用的串行总线标准,用于在计算机系统、外部设备和其他数字设备之间传输数据。USB接口为设备提供了供电、数据传输和连接性,成为连接各种外围设备的主流标准。
2. USB的发展历程
- USB 1.x: 包括USB 1.0和USB 1.1,提供全速和低速传输,分别为1.5 Mbps和12 Mbps。
- USB 2.0: 引入高速传输,最大速率达到480 Mbps。
- USB 3.0 / USB 3.1 Gen 1: 超速传输,最大速率为5 Gbps。
- USB 3.1 Gen 2: 进一步提高传输速率,最大速率为10 Gbps。
- USB 3.2: 定义两种模式,分别是10 Gbps和20 Gbps的传输速率。
- USB4: 结合USB 3.2和Thunderbolt 3,提供最高40 Gbps的传输速率。
3. 编/解码方式
-
NRZI 数据为0电平翻转,数据为1电平不翻转
-
位填充 在数据进行NRZI编码前,每6个连续的1信号后都会插入一个0信号,避免因设备的时钟误差丢失同步。
4. 信号传输状态
信号传输有4种状态 J状态 K状态 SE0状态 SE1状态
差分0 : D+ = 0 D- = 3
差分1 : D+ = 3 D- = 0
5. 基本概念
帧 和 微帧 都是时间单位,帧为1ms;微帧:125us
包(Packet)
USB通信是通过包的形式进行的。包是数据的基本传输单元,用于在USB设备之间进行通信。每个包都有一个特定的结构,包括同步标志、帧号、端点地址、数据字段等。包有 令牌包、数据包、握手包、特殊包;多个包组成事务。
下图就是一个包,第一部分SYNC是同步字段、PID是标志、Frame是帧号,后面是CRC和结尾EOP.
事务(Transaction)
- USB通信是基于事务的,一个事务是一组数据传输操作,就是连续多个包的发送。USB协议定义了四种基本的事务类型:OUT(从主机到设备的数据传输)、IN(从设备到主机的数据传输)、SETUP(用于设备初始化和控制命令)、PING(用于轮询检测设备是否存在)。
- 事务构成:令牌包 + 数据包(可选)+ 握手包(可选)
下图就是一个事务,由三个包组成,第一个是SETUP令牌包,第二个是数据包,第三个是握手包。
传输(Transfer)
多个事务组成传输。
传输是USB通信的高层次概念,用于表示在USB设备之间传输数据的一种方式。USB定义了四种传输类型:控制传输、批量传输、中断传输和等时传输。 - 控制传输(Control Transfer): 所有的主机和设备都支持的传输方式。 特点是数据量不大,正确保障高。主要用于设备初始化、配置和管理。这是USB设备与主机 之间进行控制和命令交互的方式。
- 批量传输(Bulk Transfer): 主要用于大量数据的传输,对传输速率的实时性要求不高,例如打印机,U盘等。
- 中断传输(Interrupt Transfer): 用于低延迟、数据量小、周期性的数据传输,例如鼠标、键盘等设备。
- 等时传输(Isochronous Transfer): 用于实时传输,无差错控制,例如音频和视频数据。
下图就是一个传输
端点(Endpoint)
端点是USB设备上的逻辑通道,用于数据的输入或输出。每个端点都有唯一的地址,用于标识特定的数据流方向。
地址(Address)
每个USB设备都有一个唯一的地址,主机使用这个地址来标识和通信。
令牌(Token)
令牌是USB传输中的一种数据包类型,用于指示数据的方向和类型。
数据包(Data Packet)
数据包携带实际的用户数据,用于在USB设备之间传输信息。
握手(Handshake)
握手是一种用于确认数据包是否正确接收的机制。包括ACK(肯定确认)和NAK(否定确认)。
设备描述符(Device Descriptor)
设备描述符包含有关USB设备的基本信息,如厂商ID、产品ID等。
配置描述符(Configuration Descriptor)
配置描述符包含有关USB设备配置的信息,包括端点、功率要求等。
接口描述符(Interface Descriptor)
接口描述符包含有关USB设备接口的信息,如接口号、传输类型等。