如果你使用過鍵盤、滑鼠、隨身碟、外接硬碟、手機、印表機、Arduino 或 Raspberry Pi,就一定接觸過 USB。
USB 不只是「一條可以傳資料與充電的線」。它同時定義主機與裝置的角色、連接拓撲、資料封包、裝置辨識、驅動程式介面、接頭與纜線,以及不同層級的供電方式。
這篇文章將從最基礎開始介紹 USB,包含:
USB 是什麼,以及 Host、Device、Hub 的角色
USB 版本、傳輸速率與名稱的正確看法
USB Type-A、Type-B、Mini、Micro 與 Type-C 接頭
USB 2.0 的 D+、D- 差動訊號
USB 3.x 與 USB4 的高速通道
Enumeration 枚舉與 Descriptor 描述元
Control、Bulk、Interrupt、Isochronous 四種傳輸
HID、CDC、Mass Storage、Audio 與 Video 裝置類別
USB 供電、Battery Charging、Type-C Current 與 USB PD
Arduino、ESP32、Raspberry Pi 的 USB 差異
USB 常見接線錯誤、線材問題與除錯方式
如果你正在學習微控制器、嵌入式 Linux 或硬體設計,理解 USB 的角色與枚舉流程,會比只記住接頭名稱更有幫助。
USB 是什麼?
USB 是:
Universal Serial Bus
中文通常翻譯成:
通用序列匯流排
它的設計目標,是讓電腦與周邊裝置可以用標準化方式連接、辨識、交換資料並供應電力。
USB
├─ Data 資料傳輸
├─ Power 電力供應
├─ Discovery 裝置辨識
└─ Classes 標準裝置類別
因此 USB 不是單純的 UART,也不是只有 5V 電源。
USB 是由電氣層、通訊協定、裝置模型、接頭與供電規則共同組成的完整系統。
USB 系統中的三個基本角色
傳統 USB 拓撲中,最常見的角色有 Host、Device 與 Hub。
Host 主機
Host 負責管理整條 USB 匯流排。它會偵測裝置、提供匯流排排程、發出交易並載入適當的驅動程式。
PC / Raspberry Pi / Smartphone
│
USB Host
一般 USB 裝置不能在沒有 Host 的情況下自行互傳資料。
Device 裝置
Device 是連接到 Host 的周邊,例如鍵盤、滑鼠、印表機、攝影機、USB 隨身碟或微控制器開發板。
USB Host
│
└── USB Device
Hub 集線器
Hub 把一個上游連線擴充成多個下游連接埠,但它仍由同一個 Host 管理。
USB Host
│
USB Hub
├── Keyboard
├── Mouse
└── Flash Drive
USB 不是對等匯流排
一般情況下,USB 的資料交易由 Host 發起。Device 不能像某些對等網路一樣,在任意時間自行占用匯流排。
Device 可以準備資料或透過端點狀態表示需求,但真正的傳輸時機仍由 Host 控制。
Host 發出 Token / Request
↓
Device 回應 Data / Handshake
這也是 USB 韌體設計與 UART 直連最大的差異之一。
USB 的樹狀拓撲
USB 透過 Hub 形成分層星狀,也常被描述成樹狀拓撲。
Root Hub
├── Device A
├── Hub 1
│ ├── Device B
│ └── Device C
└── Device D
每個裝置在枚舉後會取得位址。Host 依位址與 Endpoint 端點選擇要通訊的目標。
USB 接頭與 USB 版本是兩件事
USB 初學者最容易混淆的一點,是把接頭外形直接當成傳輸版本。
Connector 接頭外形 ≠ Protocol / Speed 傳輸能力
例如 USB Type-C 是接頭與連接架構規格,不直接決定資料速率。某個 Type-C 埠可能僅支援 USB 2.0,也可能支援 USB 5/10/20Gbps、USB4、DisplayPort Alternate Mode 或 USB PD;高速模式與影像輸出需同時由兩端裝置、線材及系統設計支援。
看到 Type-C 接頭,不能直接推論它一定高速、一定能輸出影像,或一定支援高功率充電。
常見 USB 接頭
常見 USB 接頭
接頭
常見用途
重點
Type-A
電腦、充電器、Hub 的傳統下游埠
有方向性;常見於 Host 端
Type-B
印表機、儀器、部分 Arduino
較大的方形裝置端接頭
Mini-B
早期相機、舊式開發板
現已較少見
Micro-B
舊款手機、行動電源、開發板
小型且有方向性
Micro-B SuperSpeed
部分 USB 3.x 外接硬碟
額外加入高速接點
Type-C
手機、筆電、顯示器、開發板
可正反插;能力需另行確認
USB 版本與理論訊號速率
【規格版本提醒】USB 3.x 的行銷命名歷經變更;產品選型應優先查核明確標示的 5Gbps/10Gbps/20Gbps 或 USB4 資料能力,以及裝置與線材是否支援。標示速率是鏈路訊號等級,不能直接當成有效資料吞吐量。
USB 的規格名稱歷經多次變更。教學與採購時,直接看標示的速率通常比只看「USB 3.0、3.1、3.2」更清楚。
USB 版本與理論訊號速率
常見名稱
理論訊號速率
說明
USB Low-Speed
1.5Mbps
常見於非常低速的早期 HID 裝置
USB Full-Speed
12Mbps
USB 1.x 與許多 MCU 原生 USB 常見速度
USB High-Speed
480Mbps
USB 2.0 的高速模式
USB 5Gbps
5Gbps
舊稱 USB 3.0 或 USB 3.2 Gen 1
USB 10Gbps
10Gbps
舊稱 USB 3.1 Gen 2 或 USB 3.2 Gen 2
USB 20Gbps
20Gbps
常見對應 USB 3.2 Gen 2x2
USB 40Gbps
40Gbps
USB4 常見效能等級
USB 80Gbps
80Gbps
USB4 Version 2.0 的效能等級
表中的數字是訊號或介面等級的理論速率,不等於檔案複製時一定能達到的有效速度。
為什麼實際傳輸速度比較慢?
USB 標示速率還要扣除編碼、封包、流量控制、作業系統與檔案系統等開銷。
此外,實際速度也會受到以下因素影響:
裝置控制器的性能
儲存媒體的持續讀寫速度
USB-SATA 或 USB-NVMe 橋接晶片
Hub 與其他裝置共用頻寬
線材長度與品質
CPU、驅動程式與檔案系統
大量小檔案造成的額外操作
介面標示速度
≠
實際檔案傳輸速度
USB 2.0 的四條基本導線
【適用範圍】四條導線是典型 USB 2.0 Type-A/Type-B/Micro 傳輸配置的概念圖;Type-C 還包含 CC 與其他接點,不能把四線示意直接套用到 Type-C 插座設計。
常見 USB 2.0 纜線包含四條主要導線:
VBUS 電源
D- 差動資料線
D+ 差動資料線
GND 接地
USB 2.0 的四條基本導線
訊號
功能
常見觀念
VBUS
匯流排電源
一般基礎 USB 為 5V 匯流排;可用電流依規格與協商而定
D+
USB 2.0 差動資料
必須與 D- 成對佈線
D-
USB 2.0 差動資料
不能當成兩條獨立 GPIO
GND
共同參考與回流路徑
資料與供電都需要正確回流
D+ 與 D- 為什麼要成對?
USB 2.0 使用差動訊號。接收端主要判斷 D+ 與 D- 之間的差異,而不是只看單一導線對地的電壓。
Transmitter
D+ ───────────── D+
D- ───────────── D-
Receiver
差動傳輸可以提升抗共模雜訊能力,但仍需要正確的阻抗、走線間距、回流路徑與 ESD 防護。
D+、D- 不是可以任意交換或分開繞線的普通訊號線。
USB 3.x 為什麼有更多接點?
USB 3.x 在保留 USB 2.0 D+、D- 的同時,增加高速差動通道,以支援更高資料率與雙向資料傳輸。
USB 2.0 path
D+ / D-
SuperSpeed path
TX pair
RX pair
因此某些 USB 3.x 接頭與線材看起來接點更多。若只接通 USB 2.0 導線,裝置可能仍能工作,但速度只會落在 USB 2.0。
USB Type-C 有哪些重要訊號?
【重要設計前提】USB-C 裝置的 CC1/CC2 配置依 Source、Sink 或 Dual-Role 而不同。僅焊接 VBUS、GND、D+、D− 不一定能建立合法的 Type-C 連接與供電;不可用固定一種 Rp/Rd 接法取代對裝置角色與規格的確認。
USB Type-C 的可正反插設計,需要比傳統接頭更完整的連線偵測與方向判斷。
VBUS / GND 電源
D+ / D- USB 2.0
TX / RX 高速差動通道
CC1 / CC2 連接與方向偵測
SBU1 / SBU2 側帶用途
CC 腳位用於偵測插入方向、來源與受電角色,以及 Type-C 電流能力;USB PD 通訊也透過 CC 路徑進行。
Type-C 為什麼可以正反插?
Type-C 插頭兩面具有對稱安排。控制器會根據 CC1 或 CC2 判斷實際方向,再設定對應的高速訊號路徑。
正向插入 → CC1 有效
反向插入 → CC2 有效
實際產品通常需要 Type-C Port Controller、USB PHY 或高速 Multiplexer 協同工作。不能只把兩組高速線直接短接在一起。
USB-C 不等於 USB PD
USB Type-C 定義接頭與連線架構;USB Power Delivery 則定義更進階的電力協商。兩者相關,但不是同一件事。
USB Type-C → Connector / CC / Roles
USB PD → Power Negotiation / Messages
一個 Type-C 埠可以只有基本 5V 供電而不支援 USB PD。相反地,要使用常見的 USB PD Type-C 充電,來源、受電裝置與線材能力都必須符合要求。
USB 的基本供電觀念
傳統 USB 會在 VBUS 提供名義 5V 電源,但「看到 5V」不代表可以任意取用大電流。
可用功率取決於:
USB 世代與連接狀態
裝置是否完成枚舉
充電埠是否支援 Battery Charging
Type-C 來源端宣告的電流
是否完成 USB PD 協商
線材是否具有對應額定能力與 E-Marker
USB 電源設計必須依協定與電流宣告工作,不能只因接頭能插上就直接要求大功率。
傳統 USB 與 Type-C 的常見供電層級
傳統 USB 與 Type-C 的常見供電層級
機制
典型概念
注意事項
USB 2.0 基本匯流排供電
完成規範流程後常見上限 500mA
低功耗初始狀態與實際限制需依裝置設計確認
USB 3.x 基本匯流排供電
常見上限 900mA
不代表所有埠都能穩定供應更多
Battery Charging
充電埠可提供較高電流
需辨識充電埠類型,不能當成 USB PD
USB Type-C Current
來源可宣告 Default、1.5A 或 3A
仍以 5V 為主,不等於已完成 PD
USB Power Delivery
協商電壓與電流
需要來源、受電端與線材共同支援
USB Power Delivery 如何工作?
【PD 與預設 5V 的區分】USB-C 初次連接時,應依 Type-C 規則建立供電;高於預設電壓的供電檔位必須經符合規格的協商才能使用。PD 3.1 EPR 的高壓檔位不是所有 USB-C 產品的能力,且供電、受電端與線材都須匹配。
USB PD 讓 Source 與 Sink 先交換能力,再選擇雙方都能接受的電力合約。
Source 提供能力清單
↓
Sink 選擇需求
↓
Source 接受並切換
↓
建立 Power Contract
在協商完成前,不能假設 VBUS 已經是 9V、15V、20V、28V、36V 或 48V。
現行 USB PD 架構可透過 Extended Power Range 支援最高 240W 的規格上限,但實際產品仍受充電器、裝置、線材、溫升與安全設計限制。
為什麼高功率 USB-C 線材需要 E-Marker?
【線材辨識提醒】超過一般 3A 能力的 USB-C 高電流使用情境通常需要相符、具電子標記的線材;E-Marker 回報線材能力,不會自行讓原本不支援 PD 的裝置獲得高功率,也不能單靠「240W」標籤推斷高速資料傳輸。
E-Marker 是線材中的電子標記元件,用來回報線材身分與能力。
高電流或高效能線材需要讓系統知道它是否能承受對應電流、電壓與資料速率。
Charger ↔ Cable E-Marker ↔ Device
即使充電器與筆電都支援高功率,使用能力不足的線材仍可能限制功率或無法建立預期的電力合約。
USB 封包與交易的基本概念
USB 傳輸不是把應用資料直接放到 D+、D- 上。資料會被組織成封包,再由 Host 排程成交易。
Application Data
↓
Endpoint Buffer
↓
USB Transaction
↓
Packet on Bus
USB 2.0 常見封包概念包括 Token、Data 與 Handshake。實際細節會依傳輸類型與速度而不同。
Endpoint 端點是什麼?
Endpoint 是 USB Device 內部可被 Host 存取的資料來源或目的地。
Device
├─ Endpoint 0 Control
├─ Endpoint 1 IN
├─ Endpoint 2 OUT
└─ Endpoint 3 IN
IN 與 OUT 的方向以 Host 為基準:
IN = Device → Host
OUT = Host → Device
Endpoint 0 是控制端點,所有裝置都需要它來完成標準控制要求與枚舉。
Interface 與 Configuration
一個 USB Device 可以提供一個或多個 Configuration;每個 Configuration 又能包含一個或多個 Interface。
Device
└─ Configuration
├─ Interface 0
│ ├─ Endpoint 1 IN
│ └─ Endpoint 1 OUT
└─ Interface 1
└─ Endpoint 2 IN
複合裝置 Composite Device 可能同時提供鍵盤、序列埠與儲存裝置等多個 Interface。
USB 的四種傳輸類型
USB 的四種傳輸類型
類型
主要特性
常見用途
Control
用於設定、命令與枚舉;所有裝置都有 Endpoint 0
讀取 Descriptor、設定位址
Bulk
重視資料正確性,可重試;延遲不保證
隨身碟、印表機、資料傳輸
Interrupt
週期性排程、低延遲需求;不是 CPU 硬體中斷
鍵盤、滑鼠、控制器
Isochronous
保留週期性頻寬;著重即時性,通常不重傳
USB Audio、Video
Interrupt Transfer 不等於 MCU Interrupt
【與中斷專文分工】本節專注 USB Host 對 Interrupt Endpoint 的週期排程,MCU 的外部 INT/IRQ、ISR、硬體優先權則另參考《INT/IRQ 中斷請求完整入門教學》。
USB 的 Interrupt Transfer 是一種具有輪詢週期與延遲特性的傳輸類型。
它不代表 Device 可以直接對 Host CPU 的中斷腳位發出硬體中斷。Host Controller 仍然依排程輪詢端點。
Host Polling Schedule
↓
Interrupt Endpoint
↓
Small timely data
USB Enumeration 枚舉流程
【實作觀察】枚舉是多次控制傳輸與描述元讀取的過程;不同 USB 版本與作業系統的流程細節可能不同。建議先用作業系統工具觀察 VID/PID、速度、Configuration,再進階使用協定分析器追查 GET_DESCRIPTOR 或 SET_CONFIGURATION。
當 USB Device 插入後,Host 不會立刻知道它是什麼。Host 必須透過枚舉流程取得裝置資訊並建立通訊。
偵測裝置連接
Reset 裝置
以預設位址讀取基本資訊
指派 USB Address
讀取完整 Descriptors
選擇 Configuration
載入驅動程式並開始工作
若裝置在「看得到電源但電腦完全無反應」,問題常發生在 D+、D-、CC、時鐘、USB PHY、韌體或線材,而不只是 5V 供電。
Descriptor 描述元是什麼?
Descriptor 是 Device 回報給 Host 的結構化資料,用來描述身分、能力與介面。
Descriptor 描述元是什麼?
Descriptor
內容
Device
USB 版本、VID、PID、裝置類別、最大封包大小等
Configuration
供電屬性、介面數量與組態總長度
Interface
某項功能的類別、子類別、協定與端點數量
Endpoint
方向、位址、傳輸類型、最大封包與輪詢間隔
String
製造商、產品名稱、序號等文字
BOS
USB 2.0 之後的額外能力資訊
VID 與 PID 是什麼?
VID 是 Vendor ID,PID 是 Product ID。Host 可利用它們辨識特定廠商與產品。
VID = Vendor ID
PID = Product ID
量產產品不應任意複製別人的 VID/PID。開發階段使用開發板或晶片供應商提供的識別碼時,也應遵守其授權與產品規則。
USB Device Class 的用途
USB 定義標準裝置類別,讓作業系統可用通用驅動程式處理常見功能。
USB Device Class 的用途
類別
常見縮寫
常見裝置
Human Interface Device
HID
鍵盤、滑鼠、遊戲控制器
Communications Device Class
CDC
虛擬序列埠、通訊裝置
Mass Storage Class
MSC
隨身碟、記憶卡讀卡機
Audio Device Class
UAC
USB 麥克風、音效卡
Video Device Class
UVC
USB Webcam、影像擷取裝置
Device Firmware Upgrade
DFU
韌體更新模式
USB HID 為什麼常用於鍵盤與滑鼠?
HID 報告描述元可以說明資料欄位的用途與格式。主流作業系統通常已內建 HID 類別驅動程式。
USB HID Device
├─ Report Descriptor
├─ Input Report
├─ Output Report
└─ Feature Report
因此支援原生 USB 的微控制器,常被用來製作自訂鍵盤、滑鼠、旋鈕控制器與簡易人機介面。
USB CDC 虛擬序列埠
【與 UART 專文分工】USB CDC ACM 讓作業系統提供虛擬序列埠介面,但 USB 封包與實體 UART TX/RX 的電氣訊號不同。USB-to-UART 橋接器另外具有 UART 線路側;切勿把 USB D+/D− 直接連到 MCU TX/RX。詳細 UART 時序請參考《UART 串列通訊完整入門教學》。
許多開發板會透過 CDC ACM 類別,在電腦上呈現成虛擬 COM Port 或 tty 裝置。
Application
│ Serial Port API
USB CDC Driver
│
USB Device
它的使用體驗類似 UART,但底層仍是 USB 封包與端點,不應把 CDC 直接等同於晶片的硬體 UART。
USB Mass Storage
MSC 讓裝置在作業系統中呈現成區塊儲存裝置。
USB MSC
↓
Block Device
↓
Partition / File System
若微控制器模擬 USB 磁碟,必須正確處理區塊讀寫、快取與主機移除時機,否則可能造成檔案系統損毀。
USB Audio 與 Video
USB 音訊與視訊通常需要持續、準時地傳送資料,因此會使用適合即時串流的端點與同步機制。
Microphone / Camera
↓
Isochronous Stream
↓
USB Host
即時傳輸重視時間連續性。少量資料遺失有時比延遲累積或反覆重傳更能接受。
USB OTG 與 Dual Role
USB OTG 讓某些裝置在特定連接情境中擔任 Host,也可以在另一情境中擔任 Device。
Phone / MCU
├─ Host Mode → connect peripheral
└─ Device Mode → connect to PC
Type-C 系統則進一步使用 Data Role 與 Power Role 概念。資料角色與供電角色可以協商,但是否支援切換仍取決於控制器與產品設計。
USB Alternate Mode
Type-C 的部分高速通道可在協商後用於其他協定,這稱為 Alternate Mode。
USB Type-C Connector
├─ USB Data
├─ DisplayPort Alt Mode
└─ Other supported modes
能否輸出影像取決於 Host、Type-C 控制器、硬體走線、韌體、線材與顯示器是否共同支援。
Type-C 接頭存在,不代表一定具備 DisplayPort Alternate Mode。
Arduino Uno R3 的 USB 架構
【Uno R3 的晶片差異】典型官方 Uno R3 使用 ATmega16U2 提供 USB-to-Serial 橋接;市售相容板可能使用 CH340 等不同橋接晶片。此差異會影響驅動程式、VID/PID 與除錯流程,需以實際板子的原理圖或晶片標示為準。
Arduino Uno R3 的 ATmega328P 本身主要執行使用者程式,板上的 USB 通訊通常由另一顆 USB-to-Serial 微控制器負責。
PC USB
↓
USB-to-Serial Controller
↓ UART
ATmega328P
因此 Uno R3 在電腦上通常呈現為序列埠。它與能直接模擬鍵盤或滑鼠的原生 USB MCU 架構不同。
Arduino Leonardo 的原生 USB
Arduino Leonardo 使用 ATmega32U4,晶片內建 USB Device 控制器。
PC USB
↓
ATmega32U4 USB Controller
↓
Application Firmware
這讓 Leonardo 能直接實作 CDC、HID 等功能。
但撰寫鍵盤或滑鼠模擬程式時必須保留安全機制,避免錯誤程式持續輸入按鍵而妨礙電腦操作。
ESP32 的 USB 要看具體型號
【實作提醒】原始 ESP32、ESP32-S2、ESP32-S3、ESP32-C3 等型號的 USB 控制器與功能並不完全相同。有的板載 USB-to-UART、有的具 USB Serial/JTAG、有的具有可由韌體實作類別的原生 USB Device/OTG;選擇範例前先確認完整型號、USB 接到哪一個控制器及開發框架版本。
「ESP32」是一個系列名稱,不同型號的 USB 能力不同。
部分早期 ESP32 開發板需要外接 USB-to-UART 晶片;部分較新的型號整合 USB Serial/JTAG 或原生 USB OTG 功能。
USB Connector
├─ External USB-UART bridge
├─ USB Serial/JTAG
└─ Native USB OTG
依晶片型號與開發板設計而定
選板時應查看完整晶片型號、原理圖與開發框架支援情況。
Raspberry Pi 的 USB
Raspberry Pi 是單板電腦,通常可直接作為 USB Host 連接鍵盤、滑鼠、儲存裝置與攝影機。
部分 Raspberry Pi 型號與連接埠也能支援 USB Device 或 Gadget Mode,但實際能力依型號、埠位、控制器與系統設定而異。
Raspberry Pi Host Mode
├─ Keyboard
├─ USB SSD
└─ Camera
Gadget Mode
Raspberry Pi → USB Device presented to another Host
USB 線材不一定包含所有功能
外觀看起來相同的線材,內部可能只支援充電、USB 2.0、USB 5Gbps、USB 10Gbps、USB4 或不同功率。
常見差異包括:
是否真的接有 D+、D-
是否包含高速差動對
支援的最高資料率
額定電流與電壓
是否具有 E-Marker
線長、線徑與屏蔽
是否支援影像 Alternate Mode 所需通道
能充電,不代表能傳資料;能傳資料,也不代表能達到最高速度或支援影像。
USB 線材的壓降
【量測補充】Vdrop = I × R 中 R 是完整電源迴路的等效阻抗(包含 VBUS、GND、接點與接頭),不是只取單根導線;動態負載還可能疊加瞬態壓降,必要時使用示波器在裝置端量測。
線材具有電阻。電流越大、導線越細、線越長,壓降通常越明顯。
Vdrop = I × R
例如負載啟動時電流突然上升,裝置端電壓可能下降,造成重置、斷線或儲存裝置掉盤。
除錯時除了量測空載 5V,也應觀察裝置端在實際負載與突波下的 VBUS。
USB PCB 佈線重點
【設計檢查】差動阻抗目標、走線長度差與 ESD 元件寄生電容應依 USB 世代、PHY 晶片、PCB 疊構及連接器參考設計確認;不要把一個固定數字當作所有 USB2/USB3/USB4 都通用的限制。
USB 的高速訊號不能用一般低速 GPIO 的方式隨意拉線。
常見設計重點包括:
D+、D- 或高速 TX/RX 成對佈線
控制差動阻抗並遵循晶片與板廠疊構
減少不必要的過孔、分支與 Stub
保持連續參考平面與回流路徑
ESD 元件靠近接頭放置
避免保護元件帶來過大電容
VBUS 具備過流、反灌與突波設計
高速連接器與 MUX 依參考設計佈局
USB 2.0 High-Speed、USB 3.x 與 USB4 的細節差異很大,正式產品應依對應規格、PHY 供應商指南與量測結果完成設計驗證。
USB 為什麼需要 ESD 防護?
USB 接頭會被使用者頻繁插拔,容易受到靜電放電影響。
Connector
↓
Low-capacitance ESD Protection
↓
USB PHY
ESD 元件應依資料速率、工作電壓、箝位能力與寄生電容選型。保護元件不是越大顆越好,過高電容可能破壞高速訊號。
USB 常見的 10 個錯誤
初學 USB 或設計 USB 產品時,最常遇到以下問題。
1. 把 Type-C 當成速度規格
Type-C 只說明接頭家族。應另外確認資料速率、PD 與影像能力。
2. 使用只能充電的線材測試資料
裝置會有電,但電腦完全看不到 USB Device。更換已知可傳資料的線材交叉測試。
3. 把 D+ 與 D- 接反
差動線接反或接觸不良,會造成枚舉失敗或完全沒有偵測。
4. 直接從 VBUS 取用過大電流
未依規格、Type-C 宣告或 PD 協商取電,可能造成掉電、限流或損壞。
5. 認為所有 USB-C 埠都有影像輸出
顯示功能需要 Host 與硬體支援 Alternate Mode,並使用合適線材。
6. 認為標示 10Gbps 就一定能跑 10Gbps
實際吞吐還受裝置、儲存媒體、協定開銷、Hub 與線材影響。
7. USB 高速線在 PCB 上繞太長或分叉
不連續阻抗、Stub 與回流中斷會降低訊號完整性。
8. 忽略 VBUS 反灌電
自供電裝置若電源路徑設計不當,可能把電流反送到 Host 或另一個電源。
9. Descriptor 或 Endpoint 設定錯誤
韌體能回應部分要求,但 Host 在枚舉過程中失敗。
10. 只看接頭,不看原理圖與晶片型號
相同接頭的開發板可能採 USB-UART、原生 USB、Serial/JTAG 或只接電源。
USB 無法辨識時的除錯順序
【測試網路/設備安全】先以已知正常且具資料功能的線材和 Host 埠驗證;若需量測高速訊號,須使用合適探棒與儀器,不可直接以一般接地夾任意跨接差動腳位。更換線材和量測前先確認設備斷電與 ESD 規範。
建議依照由外到內的方式排查,避免一開始就修改大量韌體。
換已知正常的資料線
換 Host 埠並移除不必要的 Hub
確認 VBUS 與 GND
確認接頭方向與 D+ / D- 連續性
查看作業系統 USB Log
確認裝置是否反覆連線與重置
檢查時鐘、Reset、PHY 與韌體
讀取 Descriptor 與枚舉錯誤
用示波器或協定分析儀深入量測
Windows、Linux 與 macOS 可以看什麼?
Windows、Linux 與 macOS 可以看什麼?
系統
常用工具或位置
可觀察內容
Windows
裝置管理員、USBView、事件檢視器
VID/PID、Descriptor、驅動與錯誤狀態
Linux
dmesg、lsusb、usb-devices、sysfs
枚舉紀錄、拓撲、速度、介面與驅動
macOS
System Information、log
USB 樹狀資訊、裝置能力與系統訊息
Linux USB 基本檢查範例
【指令執行條件】dmesg --follow 可能需要管理權限;lsusb、lsusb -t、lsusb -v 依系統套件提供,部分裝置資訊需提高權限。建議記錄插拔前後差異,對照 VID/PID、Speed、Class 與系統錯誤訊息,不要只看是否顯示裝置。
連接裝置前後,可以觀察核心訊息與 USB 清單。
dmesg --follow
lsusb
lsusb -t
lsusb -v
如果核心訊息不斷出現 connect、disconnect 或 reset,應優先檢查線材、接頭、供電與訊號品質。
USB 問題的快速判斷
USB 問題的快速判斷
現象
優先檢查
完全沒有電
VBUS、保險絲、電源開關、接頭焊接、線材
有電但 Host 無反應
資料線、D+/D-、CC、USB PHY、韌體是否啟動
反覆連線斷線
VBUS 壓降、接觸不良、時鐘、ESD 元件、訊號完整性
只能 USB 2.0
線材、埠、Hub、SuperSpeed 通道與裝置能力
速度明顯偏低
儲存媒體、橋接晶片、小檔案、Hub 共用頻寬、節能設定
能充電不能傳資料
充電線、資料腳未接、埠只支援電源
能傳資料但充電很慢
充電協定、Type-C 宣告、PD 合約、線材能力
USB 學習順序建議
如果你剛開始學習 USB,可以按照下面的順序練習。
第 1 階段
Host、Device、Hub、VBUS、D+、D-
↓
觀察不同 USB 接頭與線材
第 2 階段
速度等級與接頭能力的差別
↓
比較 USB 2.0 與高速儲存裝置
第 3 階段
Enumeration 與 Descriptor
↓
用 USBView 或 lsusb 讀取裝置資訊
第 4 階段
Endpoint 與四種 Transfer
↓
理解 HID、CDC、MSC 的資料路徑
第 5 階段
MCU 原生 USB Device
↓
製作 CDC 虛擬序列埠或 HID 按鍵
第 6 階段
Type-C、CC、PD 與硬體保護
↓
分析開發板原理圖與電源角色
USB FAQ 常見問題
USB-C 一定比 USB-A 快嗎?
不一定。接頭外形與資料速度是不同層次。Type-C 埠可能只有 USB 2.0,而 Type-A 埠也可能支援 USB 10Gbps。
USB 3.0、3.1、3.2 到底怎麼分?
這些規格名稱曾多次調整。選購時優先查看 USB 5Gbps、10Gbps、20Gbps、40Gbps 或 80Gbps 等明確速率標示。
USB 2.0 的 480Mbps 為什麼不能複製到每秒 60MB?
480Mbps 是理論訊號率。換算、協定開銷、主機排程、控制器與儲存媒體都會降低實際吞吐。
USB 線越短越好嗎?
較短通常有利於壓降與高速訊號,但仍要看線材結構、屏蔽、接頭與認證品質。不能只用長度判斷。
只接 VBUS 與 GND 可以嗎?
如果只需要在符合規範的條件下供電,某些設計可以只使用電源路徑;但 Type-C 電源角色與電流宣告仍可能需要 CC 電路。若要傳 USB 資料,還必須接資料訊號。
USB 可以直接接 MCU 的 UART TX/RX 嗎?
不可以。USB 與 UART 的電氣層和協定不同,需要原生 USB 控制器或 USB-to-UART 橋接晶片。
USB Interrupt Transfer 會觸發 CPU 中斷嗎?
名稱容易誤解。它是 Host 週期性排程的一種 USB 傳輸類型,並不是 Device 直接拉一條 CPU 中斷線。
USB PD 充電器會直接送出 20V 嗎?
正常的 PD 系統會先以安全的初始狀態連接,完成能力交換與協商後才切換到約定電壓。
所有 240W 線材都能傳高速資料嗎?
不一定。功率額定與資料能力是不同規格。應分別查看充電功率與資料速率標示。
USB 裝置為什麼一直斷線重連?
常見原因包括線材或接頭接觸不良、VBUS 壓降、電流不足、時鐘不穩、訊號完整性、驅動或韌體問題。
結論
USB 是現代電腦、手機、開發板與嵌入式產品最常見的介面之一。它同時處理資料、裝置辨識、驅動程式模型、接頭與供電,因此不能只用「四條線」或「5V 充電」來理解。
只要先掌握幾個核心觀念:
Host / Device / Hub
Connector ≠ Speed
VBUS / D+ / D- / GND
Enumeration / Descriptor
Endpoint / Transfer Type
USB Class
Type-C / CC
USB PD / Power Contract
就能更有系統地理解隨身碟、鍵盤、USB Serial、USB Audio、USB-C 顯示與 PD 充電。
尤其需要記住兩個重要原則:
接頭外形不等於傳輸能力;可插上也不等於所有資料、影像與功率功能都相容。
在連接或設計新的 USB 裝置之前,應先確認:
Host 與 Device 角色是否正確
接頭與資料速率是否相容
線材是否支援資料與所需速度
VBUS 電壓與可用電流
是否需要 Type-C CC 或 USB PD
Descriptor、Interface 與 Endpoint 是否正確
PCB 阻抗、回流與 ESD 防護
是否存在反灌電與過流風險
建立這些觀念後,無論你使用 Arduino、ESP32、STM32、Raspberry Pi 或自行設計 USB-C 產品,都能更快判斷問題是在接頭、線材、電源、硬體、韌體或作業系統。
參考規格與延伸閱讀
進行產品設計、相容性測試或量產前,應以 USB-IF 公布的最新正式規格與晶片供應商設計指南為準。
USB 2.0 Specification
USB 3.2 Specification
USB4 Specification Version 2.0
USB Type-C Cable and Connector Specification
USB Power Delivery Specification
USB Device Class Specifications,例如 HID、CDC、MSC、Audio 與 Video
新增:USB 學習驗收實驗(Rev1.0)
下列為可重現的操作與觀察實驗,不涉及自行製作高壓 PD 電源,適合 USB 初學者依序完成。
實驗一:辨識 USB 裝置與傳輸速率
使用同一個已知正常的 USB 裝置,記錄 Windows 裝置管理員或 Linux lsusb -t/lsusb -v 的裝置資訊;觀察 VID、PID、Class 與實際協商 Speed。結果不能用埠外觀或線材標籤代替。
實驗二:資料線與供電線材差異
在相同 Host 埠與裝置上,比較兩條已確認規格的線材。記錄是否正常枚舉、是否充電及操作系統事件。不得以裝置供電亮燈作為 USB Data 正常的唯一證據。
實驗三:Arduino Uno USB-to-UART 與 Leonardo 原生 USB 比較
記錄兩板在作業系統呈現的裝置名稱、VID/PID 與功能;Uno 透過橋接 UART,Leonardo 可由韌體提供 USB CDC/HID。若進行 HID 測試,應保留可快速拔線停止的操作方法。
實驗四:USB Enumeration 故障排查
依序檢查線材、供電、作業系統日誌與描述元資訊;對每項記錄 PASS/FAIL。無法取得協定分析器時,不宣稱已完成封包層驗證。
新增:We-Blog 內部連結與延伸閱讀
下列標題為預留連結,待相關文章上線後再填入實際網址,不使用尚未驗證的文章 ID。
UART 串列通訊完整入門教學:USB CDC 與 USB-to-UART 橋接說明
GPIO 入門教學:USB 裝置周邊與 GPIO 腳位分工
TTL 與 CMOS 邏輯位準入門教學:USB 與 MCU 輸入輸出電壓不能混用
INT/IRQ 中斷請求完整入門教學:Interrupt Transfer 與 MCU 中斷差異
Ethernet 有線網路完整入門教學:USB Ethernet Adapter 與有線網路介面
HDMI 入門教學:USB-C DisplayPort Alternate Mode 與 HDMI 輸出差異
版本標記:Rev1.0|修訂定位:技術精準修正、實驗補強及站內連結預留;未經特定裝置實機驗證。
