UVC(USB Video Class,USB 視頻類)協議并非專門僅用于相機,但其核心應用場景集中在視頻采集設備,相機是最典型的代表。
其適用設備除了常見的 USB 相機(包括 webcam、工業相機、監控攝像頭等),還包括其他具備視頻采集或處理功能的 USB 設備,例如:
視頻采集卡:部分 USB 接口的視頻采集卡支持 UVC 協議,可將外部視頻信號(如 HDMI、SDI 信號)轉換為符合 UVC 標準的視頻流傳輸給主機。
帶視頻功能的設備:一些集成了攝像頭的設備,如智能手機通過 USB 連接作為視頻源時(部分機型支持)、某些掃描儀的視頻預覽功能模塊等,也可能采用 UVC 協議進行視頻數據傳輸。
USB 接口的線路
USB 接口的線路數量根據版本和接口類型有所不同,核心是通過幾根線實現數據傳輸、供電等功能。以下是具體分類:
一、基礎線路構成(以常見的 USB 2.0 及以上為例)
無論接口類型(Type-A、Type-B、Type-C 等),USB 的核心線路包括 4 根基礎線(USB 2.0 及兼容版本必備):
VCC(電源正極):紅色線,提供 + 5V 電壓(部分場景下可通過 PD 協議調整電壓)。
GND(接地):黑色線,作為電路回路的負極。
D+(數據正線):綠色線,用于高速數據傳輸(USB 2.0 及以上的高速模式)。
D-(數據負線):白色線,與 D + 配合傳輸差分信號,確保數據抗干擾能力。
這 4 根線是 USB 實現供電和基礎數據傳輸(USB 1.1/2.0 速率)的核心,早期的低速、全速設備僅依賴這 4 根線即可工作。
二、高速版本的額外線路(USB 3.0 及以上)
為了支持更高的傳輸速率(如 USB 3.0 的 5Gbps、USB 3.1 的 10Gbps 等),USB 3.0 及以上版本在基礎 4 根線之外,增加了4 根高速差分信號線,總線路數量達到 8 根:
SSTX+ / SSTX-:發送差分對(SuperSpeed Transmit),用于主機向設備發送高速數據。
SSRX+ / SSRX-:接收差分對(SuperSpeed Receive),用于設備向主機返回高速數據。
這些額外的線路專門負責超高速數據傳輸,與原有的 D+/D - 線路(兼容 USB 2.0)獨立工作,實現 “高速與兼容并存”。
三、Type-C 接口的線路特殊性
Type-C 接口為了支持可逆插拔和多功能(如視頻輸出、PD 供電),線路設計更復雜,但核心仍基于上述線路擴展:
保留VCC、GND、D+、D-?4 根基礎線。
保留SSTX+/-、SSRX+/-?4 根高速線(USB 3.0 及以上)。
增加了CC1、CC2(Configuration Channel,配置通道):用于識別設備類型、協商供電方向和功率(PD 協議依賴)、判斷插入方向等。
部分 Type-C 線纜還包含邊帶使用線(SBU1、SBU2):支持音頻、視頻信號傳輸(如 DisplayPort Alt Mode)。
因此,Type-C 線纜的總線路數量通常為12 根左右(含屏蔽線等輔助線路),但核心功能仍依賴上述基礎和高速數據 / 電源線。
總結
USB 2.0 及以下:4 根線(VCC、GND、D+、D-)。
USB 3.0 及以上(非 Type-C):8 根線(4 根基礎線 + 4 根高速差分線)。
USB Type-C(含 USB 3.0 及以上):約 12 根線(含基礎線、高速線、配置通道線等)。
端點
在 USB 協議中,端點(Endpoint)?是設備與主機進行通信的邏輯通道,是數據傳輸的最小單位。理解端點的概念對掌握 USB 通信機制至關重要,以下是詳細解析:
一、端點的基本概念
邏輯通道:端點是設備內部的虛擬 “管道”,每個端點有唯一編號(如 Endpoint 0、Endpoint 1 等)。
單向性:每個端點只支持一個方向的數據傳輸:
IN 端點:數據從設備流向主機(如攝像頭向電腦發送視頻幀)。
OUT 端點:數據從主機流向設備(如電腦向打印機發送打印任務)。
端點 0 的特殊性:所有 USB 設備必須實現 Endpoint 0,它是雙向的,用于設備枚舉和基本控制(如獲取設備描述符、配置設備)。
二、端點的關鍵屬性
每個端點通過端點描述符(Endpoint Descriptor)?向主機報告其能力,主要屬性包括:
端點號(Endpoint Number):0-15,其中 Endpoint 0 固定為控制端點。
方向(Direction):IN 或 OUT。
類型(Type):
控制(Control):用于設備配置和命令傳輸(如 UVC 協議的參數設置)。
批量(Bulk):用于大量數據可靠傳輸(如文件傳輸)。
中斷(Interrupt):用于實時小數據(如鍵盤、鼠標輸入)。
同步(Isochronous):用于實時流數據(如視頻、音頻)。
最大包大小(Max Packet Size):一次傳輸的最大數據量(如 64 字節、512 字節等)。
輪詢間隔(Polling Interval):主機查詢端點的頻率(僅對中斷和同步端點重要)。
三、端點的工作機制
設備枚舉階段:
主機通過 Endpoint 0 發送標準請求(如
GET_DESCRIPTOR
)。設備返回自身信息(如廠商 ID、產品 ID、支持的配置)。
數據傳輸階段:
主機根據設備描述符選擇合適的配置和端點。
通過指定端點號和方向進行數據收發。
四、不同類型端點的應用場景
端點類型 | 特點 | 典型應用 |
---|---|---|
控制端點 | 可靠、雙向、用于命令和配置 | 設備初始化、參數設置(如 UVC 亮度調整) |
批量端點 | 高吞吐量、保證數據完整 | 打印機、存儲設備(如 U 盤) |
中斷端點 | 低延遲、有響應時間保證 | 鍵盤、鼠標、游戲手柄 |
同步端點 | 定時傳輸、允許少量丟包 | 攝像頭視頻流、麥克風音頻流 |
五、端點與接口、配置的關系
配置(Configuration):設備的一種工作模式(如低功耗模式、高性能模式),一個設備可支持多個配置。
接口(Interface):配置中的功能單元(如攝像頭的視頻流接口、麥克風的音頻接口)。
端點(Endpoint):接口的具體數據通道。
示例:一個 UVC 攝像頭可能包含:
1 個配置(默認配置)。
2 個接口(視頻流接口、麥克風音頻接口)。
視頻接口包含:
控制端點 0(雙向)。
同步 IN 端點(傳輸視頻幀)。
音頻接口包含:
同步 IN 端點(傳輸音頻數據)。
六、端點的數量限制
每個 USB 設備最多可支持32 個端點(16 個 IN + 16 個 OUT)。
實際應用中,大多數設備僅使用少數端點(如 UVC 攝像頭通常使用 2-3 個端點)。
USB 標準請求字段
USB 標準請求是用在控制傳輸中的數據包,由 8 個字節構成,包含 5 個字段,分別是 bmRequestType、bRequest、wValue、wIndex 和 wLength。具體如下:
- bmRequestType:占 1 個字節,是一個位圖,用于表示數據傳輸方向、請求類型和接收者。
- D7 位:表示數據方向,0 為主機到設備,1 為設備到主機。
- D6 - D5 位:表示請求類型,00 為標準請求命令,01 為類請求命令,10 為用戶定義的命令,11 為保留值。
- D4 - D0 位:表示接收者,00000 為設備,00001 為接口,00010 為端點,其他值保留。
- bRequest:占 1 個字節,為請求命令代碼。在標準的 USB 命令中,每一個命令都有對應的編號,該字段的值就是相應的編號。例如,獲取狀態(Get Status)命令的代碼為 00H,清除特性(Clear Feature)命令的代碼為 01H 等。
- wValue:占 2 個字節,根據不同的命令,其含義也不同。例如在設置地址(Set Address)請求中,wValue 包含要設置的設備地址。
- wIndex:占 2 個字節,主要用于傳送索引或偏移值。例如,當請求涉及特定端點時,bit3 - 0 表示端點號,bit7 表示方向(0 為 OUT,1 為 IN);當涉及接口時,bit7 - 0 表示接口號。
- wLength:占 2 個字節,用于指定數據階段要傳輸的字節數。對于主機到設備的傳輸,該字段指定主機將傳輸的數據量;對于設備到主機的傳輸,該字段指定設備可以傳輸的最大數據量。如果沒有數據階段,該字段為 0。
Processing Unit(PU,處理單元)和 Camera Terminal(CT,攝像頭端點)
在 UVC(USB Video Class,USB 視頻類)設備中,Processing Unit(PU,處理單元)和 Camera Terminal(CT,攝像頭端點)是兩個重要的功能模塊,UVC 協議嚴格定義了這些功能單元的格式和描述符結構。具體如下:
- Processing Unit(處理單元):是 UVC 設備中的一個功能單元,用于對輸入的數據進行處理。它可以接收來自 Selector Unit(選擇單元)的數據,經過一系列處理后,將結果輸出到 Output Terminal(輸出端點)。例如,對視頻數據進行編碼、解碼、降噪、色彩空間轉換等操作,以滿足不同的應用需求。
- Camera Terminal(攝像頭端點):代表硬件上的數據采集源,通常對應攝像頭的傳感器。它主要用于控制視頻流傳輸中的設備特性,規定支持控制掃描模式(逐行掃描或隔行掃描)、自動曝光模式、自動聚焦、可變光圈、移動鏡頭、滾動、數字窗口等特性。
在 UVC 設備中,數據從 Sensor 和其他復合視頻設備流入,由輸入端點(Input Terminal)和 Camera Terminal 輸入,經過 Selector Unit 選擇后送到 Processing Unit 處理,再由 Output Terminal 綁定到指定的 USB 端點,最后與主機交互數據發送到 Host。
UVC 協議在規范文檔中明確定義了以下核心單元及其描述符格式:
Camera Terminal (CT)
- 功能:作為視頻輸入源(如攝像頭傳感器),負責捕獲原始圖像數據。
- 描述符:
VC_IN_TERMINAL
:定義攝像頭端點的特性(如支持的分辨率、幀率范圍)。- 包含字段:
bTerminalType // 終端類型(如0x0201表示Camera Terminal) wObjectiveFocalLengthMin // 最小焦距 wObjectiveFocalLengthMax // 最大焦距 wOcularFocalLength // 目鏡焦距 bControlSize // 控制參數的大小 bmControls // 支持的控制位(如曝光、增益控制)
Processing Unit (PU)
- 功能:處理原始視頻數據(如亮度、對比度調整,色彩空間轉換)。
- 描述符:
VC_PROCESSING_UNIT
:定義處理單元的能力和控制接口。- 包含字段:
bUnitID // 單元ID bSourceID // 源單元ID(連接的上游單元) bmControls // 支持的控制位(如亮度、對比度、飽和度) wDefault // 默認值 wMinimum // 最小值 wMaximum // 最大值 wStep // 步進值