接口协议(4) - USB

USB(Universal Serial Bus,通用串行总线)是一种新兴的并逐渐取代其他接口标准的数据通信方式,作为一种高速串行总线,其极高的传输速度可以满足高速数据传输的应用环境要求,且该总线还兼有供电简单、安装配置便捷、 扩展端口简易、传输方式多样化,以及兼容良好等优点。

1. 通信速率

Standard Also Known As Logo Year Introduced Connector Types Max. Data Transfer Speed Cable Length**
USB 1.1 Full Speed USB   1998

USB-A

USB-B

12 Mbps 3m
USB 2.0 Hi-Speed USB

 

 

2000

USB-A

USB-B

USB Micro A

USB Micro B

USB Mini A

USB Mini B

USB-C*

480 Mbps 5m
USB 3.2 Gen 1

USB 3.0

USB 3.1 Gen 1

SuperSpeed

 

 

2008(USB 3.0)

2013(USB 3.1)

USB-A

USB-B

USB Micro B

USB-C*

5 Gbps 3m
USB 3.2 Gen 2

USB 3.1

USB 3.1 Gen 2

SuperSpeed+

SuperSpeed 10Gbps

 

 

2013(USB 3.1)

USB-A

USB-B

USB Micro B

USB-C*

10 Gbps 3m
USB 3.2 Gen 2x2

USB 3.2

SuperSpeed 20Gbps

 

 

2017(USB 3.2) USB-C* 20 Gbps 3m
USB 4

USB 4 Gen 2x2

USB 4 20Gbps

 

 

2019 USB-C* 20 Gbps 0.8m
USB 4

USB 4 Gen 3x2

USB 4 40Gbps

 

 

2019 USB-C* 40Gbps 0.8m

USB 3.0发布时叫USB 3.0,USB 3.1发布后,USB 3.0改成了USB 3.1 Gen 1,而真正的USB 3.1叫做USB 3.1 Gen 2,后来,发布USB 3.2之后,USB3.0和USB 3.1的名字也跟着升级,三者分别为USB 3.2 Gen 1,USB 3.2 Gen 2,USB 3.2 Gen 2x2.

2. USB接口

 

 

Type-A and -B pinout
Pin Name Wire color Description
1 Vbus Red or Orange +5V
2 D- White or Gold Data-
3 D+ Green Data+
4 GND Black or Blue Ground
Mini/Micro-A and -B pinout
Pin Name Wire color Description
1 Vbus Red +5V
2 D- White Data-
3 D+ Green Data+
4 ID No Wire

On-The-Go ID Distinguishes cable ends:

"A" plug (host): Connected to GND

"B" plug (device): not connected

5 GND Black Signal ground

 

Micro-B SuperSpeed pinout
Pin Name Description
1 Vbus +5V
2 D- Data-
3 D+ Data+
4 ID On-the-GO
5 GND Signal ground
6 SSTx- SuperSpeed transmit-
7 SSTx+ SuperSpeed transmit+
8 GND Signal ground
9 SSRx- SuperSpeed receive-
10 SSRx+ SuperSpeed receive+

 

USB 3.0 connector pinouts
Pin Color Signal Name Description
A connector B connector  
1 Red Vbus +5V
2 White D- USB 2.0 differential pair
3 Green D+
4 Black GND Ground for power return
5 Blue StdA_SSRX- StdB_SSTX- SuperSpeed receiver differential pair
6 Yellow StdA_SSRX+ StdB_SSTX+
7 ---- GND_DRAIN Ground for signal return
8 Purple StdA_SSTX- StdB_SSRX- SuperSpeed transmitter differential pair
9 Orange StdA_SSTX+ StdB_SSRX+
The USB 3.0 Powered-B connector has two additional pins for power and ground supplied to the device.
10 ---- DPWR Power provided to device (Powered-B only)
11 DGND Ground for DPWR return (Powered-B only)
  

 

USB Type-C pinout
Type-C receptacle A pin layout   Type-C receptacle B pin layout
Pin Name Description Pin Name Description
A1 GND Ground return B12 GND Ground return
A2 SSTXp1(TX1+) SuperSpeed differential pair #1, TX, positive B11 SSRXp1(RX1+) SuperSpeed differential pair #2, TX, positive
A3 SSTXn1(TX1-) SuperSpeed differential pair #1, TX, negative B10 SSRXn1(RX1-) SuperSpeed differential pair #1, TX, negative
A4 Vbus Bus power B9 Vbus Bus power
A5 CC1 Configuration channel B8 SBU2 Sideband use(SBU)
A6 Dp1(D+) USB 2.0 diffential pair, position 1, positive B7 Dn2(D-) USB 2.0 diffential pair, position 1, negative
A7 Dn1(D-) USB 2.0 diffential pair, position 1, negative B6 Dp2(D+) USB 2.0 diffential pair, position 1, positive
A8 SBU1 Sideband use(SBU) B5 CC2 Configuration channel
A9 Vbus Bus power B4 Vbus Bus power
A10 SSRXn2(RX2-) SuperSpeed differential pair #4, RX, negative B3 SSTXn2(TX2-) SuperSpeed differential pair #4, RX, negative
A11 SSRXp2(RX2+) SuperSpeed differential pair #4, RX, positive B2 SSTXp2(TX2+) SuperSpeed differential pair #3, RX, positive
A12 GND Ground return B1 GND Ground return

3. 工作原理

USB是利用差分信号进行数据传输的,差分信号具有抗干扰的特性。

4. 传输模式

Type KeyPoint Sample Description

控制传输

(Control Transfers)

完整性校验 USB配置命令

突发的、非周期性的,主机软件发起的请求/响应通信,通常用于命令/状态操作。

数据量小对带宽、时间延迟要求不高,但是要求数据必须正确。

等时传输

(Isochronous Transfers)

带宽、时间延迟 摄像头

等时传输:主机和设备之间定期、连续的通信,通常用于时间相关信息。

这种传输类型还保留了数据中封装的时间概念。然而,这并不意味着这些数据的交付需求总是时间紧迫的。

数据量大需要大带宽、对时间延迟也很高,但是不要求数据必须正确。也正因为前两者的要求高,也很难做到数据校验和重传。

中断传输

(Interrupt Transfers)

时间延迟、完整性校验 键盘、鼠标

低频、有边界延迟通信。

对时间延迟要求高,但数据量小所以要求数据必须正确。

批量传输

(Bulk Transfers)

带宽、时间延迟、完整性校验 文件存储

非周期性、大包突发通信,通常用于可以使用任何可用带宽的数据,也可以延迟到带宽可用。

数据量大需要大带宽,但对时间延迟也不高,要求数据必须正确。也正因为对延迟要求不高,所以可以做数据校验和重传。

5. 组成结构

5.1 Transfer/Frame (传输)

从时间的维度看,USB通信是由一系列的Transfer(传输)组成的。包括四种传输类型:

  • Control Transfers 控制传输
  • Isochronous Transfers 同步传输
  • Interrupt Transfers 中断传输
  • Bulk Transfers 批量传输

5.2 Transaction (事务)

每一个Transfer(传输)又可以分成不同的Transaction, 具体的Transaction类型为以下3种:

  • IN/Read/Upstream Transaction 输入(Host)事务
  • OUT/Write/Downstream Transaction 输出(Host)事务
  • Control Transaction 控制事务

5.3 Packet 每一次Transaction又由不同的Packets所组成

  • Token Packet
  • Data Packet
  • Handshake Packet
  • Special Packet

5.4 Field 每一个Packet又由不同的Field组成

  • Sync 同步域
  • PID 标识域
  • ADDR 设备地址域
  • ENDP 端点域
  • FRAM 帧号域
  • DATA 数据域
  • CRC 校验域

6. 枚举过程

枚举过程可分为10个步骤:

6.1 设备连接

  • 当USB设备插入主机时,主机通过检测D+或D-线上的电压变化(取决于设备的速度)发现设备连接。
  • 主机检测到设备后,会向设备提供电源(VBUS)。

6.2 复位设备

  • 主机发送一个复位信号(Reset)到设备,使设备进入默认状态(Default State)。
  • 复位后,设备的地址为0(默认地址),并准备响应主机的控制传输。

6.3 获取设备描述符

  • 主机向设备发送一个控制传输请求(GET_DESCRIPTOR),请求设备的设备描述符(Device Descriptor)。
  • 设备描述符包含设备的基本信息,如厂商ID(VID)、产品ID(PID)、设备类(Class)、协议版本等。
  • 主机通过默认地址(地址0)与设备通信。

6.4 分配地址

  • 主机为设备分配一个唯一的地址(1-127),并发送SET_ADDRESS请求。
  • 设备接收到地址后,使用该地址进行后续通信。

6.5 获取完整设备描述符

  • 主机再次发送GET_DESCRIPTOR请求,获取完整的设备描述符(包括配置描述符、接口描述符、端点描述符等)。
  • 这些描述符描述了设备的配置、接口、端点和功能。

6.6 获取配置描述符

  • 主机发送GET_DESCRIPTOR请求,获取设备的配置描述符(Configuration Descriptor)。
  • 配置描述符包含设备支持的接口数量、端点信息、电源需求等。

6.7 选择配置

  • 主机根据配置描述符选择一个合适的配置,并发送SET_CONFIGURATION请求。
  • 设备根据配置描述符初始化自身,并准备好与主机通信。

6.8 加载驱动程序

  • 主机根据设备描述符中的厂商ID(VID)和产品ID(PID)查找并加载合适的驱动程序。
  • 如果设备是标准类设备(如HID、Mass Storage等),主机可能会使用内置的驱动程序。

6.9 设备就绪

  • 设备完成枚举后,进入正常工作状态,可以与主机进行数据传输。
  • 主机可以通过设备的端点(Endpoint)与设备通信。

6.10 设备断开

  • 当设备从主机断开时,主机检测到D+和D-线上的电压变化,并停止与设备的通信。
  • 主机释放设备的地址和资源。

枚举过程的通信示例:

复制代码
# 主机发送GET_DESCRIPTOR请求(设备描述符)
Host -> Device: GET_DESCRIPTOR (Device Descriptor)
Device -> Host: Device Descriptor

# 主机发送SET_ADDRESS请求
Host -> Device: SET_ADDRESS (New Address)
Device -> Host: ACK

# 主机发送GET_DESCRIPTOR请求(配置描述符)
Host -> Device: GET_DESCRIPTOR (Configuration Descriptor)
Device -> Host: Configuration Descriptor

# 主机发送SET_CONFIGURATION请求
Host -> Device: SET_CONFIGURATION (Configuration Value)
Device -> Host: ACK
复制代码

OK。

posted @   this毛豆  阅读(571)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示