USB Type‑C 接口物理层:引脚定义、对称设计与角色识别

Type‑C 接口看着只有小小一个口,里面却藏了 24 个引脚。我第一次拿到 Type‑C 规格书时,说实话也被这数字吓到了——以前 USB‑A 才 4 个脚,Micro‑B 也就 5 个,怎么突然蹦出 24 个?但实际项目做下来发现,真正需要你操心的引脚并不多。下面我从硬件工程师的角度,把这 24 个引脚理清楚,再说说 CC 那两条线到底怎么用。

1. 24 个引脚的功能分组

按照功能,我把它们分成下面几组。你在设计原理图时,可以直接照着这个表去分配网络。

功能分组 引脚编号 信号名 用途说明
电源 A1, A4, A9, A12
B1, B4, B9, B12
VBUS / GND VBUS 4 个脚并联,GND 4 个脚并联,支持最大 5A 电流
配置通道 A5, B5 CC1, CC2 角色检测、供电协商、线缆识别——最重要的两个脚
USB 2.0 数据 A6, A7
B6, B7
D+ / D- 兼容 USB 2.0,差分线对,注意上下排交换
USB 3.x / 高速数据 A2, A3, A10, A11
B2, B3, B10, B11
SSTXp/n, SSRXp/n SuperSpeed 差分对,上下排交叉对应正反插
辅助信号 A8, B8 SBU1, SBU2 用于音频、DisplayPort 等 alternate mode
边带 / 保留 A14, A15
B14, B15
VCONN, RFU VCONN 给线缆芯片供电,RFU 保留未定义
我自己的习惯:画原理图时,先把 CC1/CC2 的网络标号单独拎出来,比如 CC1_MCU, CC2_MCU。其余引脚按功能分组,用总线方式连接,这样检查走线时一眼就能看出问题。

2. CC1/CC2 对称设计

Type‑C 最巧妙的设计之一就是 CC1 和 CC2 的对称性。为什么要有两条 CC 线?说白了就是为了兼容正反插。你想想看,如果只有一个 CC 引脚,那线缆插反了信号就断了。现在 CC1 和 CC2 在母座上分别位于 A5 和 B5,插头里只有一条 CC 线(或者通过线缆内部的 e‑Marker 芯片切换),无论正插还是反插,总有一个 CC 脚能和插头的 CC 对上。

我在项目中遇到过这样一个坑:刚开始我把 CC1 和 CC2 当作普通 GPIO 来拉电阻,结果发现正插时能正常协商,反插时死活检测不到。后来才意识到,CC 检测需要在两个引脚上都做同样的上拉/下拉处理,不能只做一个。否则插反后 CC 信号就浮空了。

关键点:无论是做 DFP 还是 UFP,CC1 和 CC2 必须对称处理——两个脚都接上拉电阻(DFP)或下拉电阻(UFP)。具体阻值遵循 Type‑C 规范:DFP 用 4.7kΩ 或 36kΩ(根据供电能力),UFP 用 5.1kΩ。

3. DFP / UFP / DRP 角色识别

角色识别的本质,就是通过 CC 线上的电压来判断对方是什么设备。我刚开始接触时,觉得搞一堆电阻和电压阈值很麻烦,但其实原理非常简单:

  • DFP(Downstream Facing Port)—— 通常指主机、充电器。CC1/CC2 各接一个上拉电阻(Rp)到 VBUS 或 3.3V。等待对方拉低。
  • UFP(Upstream Facing Port)—— 通常指设备、手机。CC1/CC2 各接一个下拉电阻(Rd)到 GND。等待对方拉高。
  • DRP(Dual Role Port)—— 可切换角色,比如笔记本电脑的 Type‑C 口。它会在 DFP 和 UFP 之间周期性切换,不断尝试。
角色 CC 电阻类型 CC 电压范围(未连接) 典型应用
DFP 上拉(Rp) 约 1.6V ~ 3.3V(取决于 Rp 和 VBUS) 充电器、PC 主机口
UFP 下拉(Rd) 0V(通过 5.1kΩ 到地) 手机、外设
DRP 交替:一段时间 Rp,一段时间 Rd 在 0V 和 1.6V+ 之间周期性变化 笔记本 Type‑C、扩展坞
我曾经排查 DRP 切换问题时吃过亏: DRP 周期通常是 50~80ms 切换一次,但有些 MCU 的 ADC 采样速度跟不上,导致角色误判。后来我在软件里加了滑动平均滤波,才算稳定下来。所以如果你用 ADC 读 CC 电压,采样频率至少开到 1kHz 以上,否则容易丢脉冲。

4. 避坑指南:物理层容易翻车的几个地方

警告:不要以为 CC 引脚只是电阻网络就随便布线。Type‑C 接口在传输 USB 3.x 或 PD 供电时,CC 线上会有快速通信(比如 BMC 编码的 PD 消息)。如果走线太长或者寄生电容太大,信号会畸变。我见过一块板子因为 CC 线走了 10cm 蛇形线,导致 PD 协商失败。解决办法:CC 线尽量短(< 5cm),远离时钟信号。
  • VBUS 去耦:每个 VBUS 引脚旁边放一个 0.1μF 陶瓷电容,否则大电流切换时电压跌落会把 CC 检测给带偏。
  • ESD 保护:CC 引脚必须加 TVS 管(结电容< 5pF),否则插拔瞬间静电很容易打坏 MCU 的 ADC 口。
  • VCONN 供电:如果你的项目需要支持 e‑Marker 线缆,VCONN 引脚要能输出 3.3V / 100mA,并且需要做软开关,不能一直供电。
Type‑C 母座引脚俯视图(面对接口)及角色识别流程 Type‑C 母座引脚布局 (俯视) & 角色识别流程 引脚编号 (行A) 引脚编号 (行B) A1 VBUS A2 TX1+ A3 TX1- A4 VBUS A5 CC1 A6 D+ A7 D- A8 SBU1 A9 VBUS A10 RX2- A11 RX2+ A12 GND B12 GND B11 RX1+ B10 RX1- B9 VBUS B5 CC2 B6 D+ B7 D- B8 SBU2 B4 VBUS B3 TX2- B2 TX2+ B1 GND 对称中心线 插入事件 读取 CC1/CC2 电压 电压? DFP (Rp 有效) UFP (Rd 有效) DRP 切换 CC 电压参考: DFP: 1.6~3.3V UFP: 0V (Rd) DRP: 0V ↔ 高电平

上面这张图左边是 Type‑C 母座面对你时的引脚排列,我用不同颜色区分了功能组——蓝色是电源,红色是高速差分对,绿色是 CC 引脚,紫色是 USB 2.0,橙色是 SBU。你一定注意到了,CC1 和 CC2 分别在上排和下排的同一个位置(A5/B5),这就是对称设计的核心:无论正插反插,总有一个 CC 脚能连上。右边我用一个简单流程展示了角色识别的决策逻辑:插入后先读 CC 电压,然后根据电压落在哪个范围,判断自己是 DFP、UFP 还是 DRP。

经验之谈:如果你用万能板搭测试电路,千万注意 CC1 和 CC2 的网络不要短接。有些新手为了省钱把两个 CC 脚直接连到一起,结果正反插时角色检测会错乱——因为两个脚同时被驱动,无法区分插头方向。我早期的一个原型板就犯了这错,查了两天才发现。

好了,Type‑C 的物理层核心就这些:记住 24 个引脚的分组,抓住 CC1/CC2 对称处理的思路,掌握角色识别靠电阻和电压阈值这三个要点。下一段咱们要拿示波器去实际测量这些信号了。