USB Type-C 与 PD:CC 检测、角色判定与供电协商(Source/Sink)
更新时间:2026-09-19。前置:USB 端点与枚举、USB PHY 接口。USB 数据枚举走 D+/D- 或 SS 差分对;而插没插、谁供电、供多大、正反插由 CC(Configuration Channel)决定。
本文要回答的问题
- CC1/CC2 怎么判断插入、方向和供电角色?
- Rp/Rd 电阻检测如何传递默认/1.5A/3A 能力?
- PD 协议如何在 CC 上协商 5V 以外的 9/15/20V?
- VCONN、电子标记线缆、DRP 双角色有哪些坑?
一、Type-C 基础:CC 决定一切
接口里有两根配置通道 CC1、CC2(正反插时只有一根与线缆对应触点接通)。供电端(Source,传统「下行口」)在 CC 上接上拉 Rp;受电端(Sink)接下拉 Rd。Source 通过检测哪根 CC 上出现 Rd 来:
- 判定已连接;
- 由 CC1 还是 CC2 判定插头方向(据此切换高速多路复用器/mux);
- 由检测到的电压(Rd 分压)判定 Sink 存在。
Sink 则检测 CC 上 Rp 的强弱(不同开路电压/电流档位)得知 Source 能给的默认电流:默认 USB / 1.5A@5V / 3A@5V 三档由 Rp 取值(不同电压源下的等效电阻)表示。
Source: CC ─[Rp]─ 检测电流/电压
Sink : CC ─[Rd=5.1k]─GND
插上 → Source 在 CC1 或 CC2 上测到 Rd 分压二、数据角色与供电角色
- Source / Sink:供电方 / 受电方。
- DFP/UFP:数据主(host)/数据从(device)。Type-C 允许供电与数据角色解耦。
- DRP(Dual-Role Port):手机、电脑这类可源可汇、可主可从的口,在没插时周期性切换 Rp/Rd,插入后按握手定角色,必要时可 role-swap。
三、VCONN 与电子标记线缆
CC 接通后,线缆插头里的电子芯片(e-Marker,用于 3A 以上/5A、有源或高速线缆)需要供电:VCONN 由提供它的一端经「未用于通信的那根 CC」送出(约 5V 小电流)。控制器要正确决定哪根 CC 走 BMC、哪根给 VCONN。电子标记的线缆会报告其电流能力(5A)、速率(USB4/Gen3)等。
四、PD 供电协商(BMC over CC)
只有 Type-C 电阻检测时,最高只是 5V + 档位电流。**USB Power Delivery(PD)**在 CC 线上用 **BMC(Biphase Mark Coding)**数字通信协商更高电压:
Source 广播 Source_Capabilities:5V/9V/15V/20V × 电流档
Sink 根据需求回 Request(如 20V/3A)
Source 评估 accept → 发 PS_RDY 时序
关键: Source 先在 CC 上接受请求,再把 VBUS 从 5V 切到目标电压
(旧规范有 vSafe5V 硬复位/GoodCRC 等完整状态机)- Sink 必须先在 5V 安全,协商成功后才允许升压;任何错误(过流、不兼容)回到 vSafe5V。
- PD 还能协商 PPS(可编程电压,细粒度调压,快充常用)、Alternate Mode(DP/雷雳,用 SBU/CC 做发现)。
- 消息有 GoodCRC 应答、重试、硬复位/软复位状态机。
五、控制器实现要点
- 两颗 CC 的比较器/ADC 检测 Rd/Rp/Ra,去抖判定 attach,驱动外部电源通路(load switch/PD 控制器)。
- 供电端 VBUS 供电时序与 CC 协商严格联动,绝不能在未协商时输出 9/15/20V。
- PD BMC PHY(CC 上收发、编码解码)+ 协议层状态机 + 策略引擎;多数用专用 PD/Type-C 控制器芯片(TCPC 架构:PD 控制器经 I2C 受 TCPM 管理)。
- 方向检测输出控制高速 mux(USB3/DP)和 VCONN 通道。
六、常见的坑
- 只接一根 CC:正反插一半概率检测不到,CC1/CC2 都要检测。
- 未协商就上高压:没有 PD 握手直接给 20V,可能损坏只支持 5V 的设备,必须先 5V 协商。
- Rp 档位配错:实际供不了 3A 却报 3A,重载掉压。
- VCONN 通道选错:在已用的 CC 上送 VCONN 或不给电子标记线缆供电,5A/高速识别失败。
- DRP 抖动/角色反复:两端都 DRP 时角色翻转逻辑不稳,需要固定或迟滞。
- 只做 Type-C 电阻没做 PD:以为 Type-C 就能快充,实际只有 5V。
- e-Marker 缺失跑 5A:普通线缆最多 3A,跑 5A 发热风险,需读线缆能力。
- Sink 过流/欠压保护缺失:升压后没有检测,异常无法回 vSafe5V。
- 旧充电器/A 口转接线:只有默认 5V/Rp 行为,PD 协商超时要正确回退。
- 高速 mux 与方向不同步:CC 判定方向后没切 SS/DP mux,枚举失败。
- SBU/AltMode 误用:DP 交替模式需经 PD 发现流程,不能强配。
相关与延伸
USB 数据枚举见 USB 端点与枚举;PHY 见 UTMI/ULPI;PD 控制器多经 I2C 配置;片上电源见 LDO/DCDC。
总结
Type-C 用 CC1/CC2 上 Source 的 Rp 与 Sink 的 Rd 电阻分压同时判断插入、方向和 5V 下的默认电流档,用 DRP 周期翻转实现双角色,用 VCONN 给电子标记线缆供电;而 5V 以外的 9/15/20V 大功率必须经 CC 上的 BMC 数字 PD 协商(Source 报能力→Sink 请求→接受后才把 VBUS 升压,异常回 vSafe5V)——只接一根 CC、未协商先上高压、Rp/VCONN 配错和把 Type-C 当快充是四大坑。