4. 物理层:电压、电流与 Rp/Rd 电阻
聊完报文结构,我们得回到最底层——电气特性。你知道,PD 协商的第一步不是发消息,而是把 CC 线拉到一个特定的电压。
说白了,物理层就是靠电压和电阻来“打招呼”的。源端(Source)在 CC 线上拉一个电阻 Rp,宿端(Sink)下拉一个电阻 Rd,两者分压后产生一个电压信号。这个电压值告诉源端:有没有设备插入?能要多少电流?
我个人习惯先画一张总图,把整个检测链路看清楚。下面这张图就是 CC 线电压检测的简化模型——我当年刚接触 PD 协议时,对照着这张图才搞明白 Rp 和 Rd 是怎么配合的。
4.1 Rp 与 Rd 的定义与取值
在 USB Type-C 规范里,Source 端的 Rp 上拉电阻有几种标准值,Sink 端的 Rd 则固定为 5.1kΩ(误差 ±1%)。想一想,为什么 Rd 要固定?我个人经验是:固定 Rd 可以让 Source 端通过测量 CC 线上的电压反推 Rp,从而知道该提供多大的电流。
下表列出了 Rp 的四个常用档位(对应不同的供电能力):
| Rp 标称值 (Ω) | 对应电流能力 | 源端电压 (3.3V 系统) | CC 线电压 (Rd=5.1k) |
|---|---|---|---|
| 22k | 500 mA (USB 2.0) | 3.3V | 约 0.4V |
| 10k | 1.5 A (5V) | 3.3V | 约 1.1V |
| 5.1k | 3 A (5V / 9V / 15V / 20V) | 3.3V | 约 1.7V |
| 约 330Ω | 扩展供电(如 5A) | 3.3V | 约 2.4V |
嗯,这里有一个容易被忽略的点:Rp 的精度必须控制在 ±5% 以内,否则电压检测会出偏差。
关键公式:CC 线电压 V_CC = V_source × ( Rd / (Rp + Rd) )
Source 端 ADC 测到这个电压后,对照上表就能知道 Sink 请求的电流档位。
4.2 原理与检测流程
流程其实很简单,但步骤需要注意:
- Source 上电:VBUS 还没输出,CC 线保持空闲状态(Source 内部已接好 Rp)。
- Sink 插入:Sink 的 Rd 下拉到 GND,形成分压回路。
- 电压检测:Source 的 ADC 测量 CC 线电压,判断等级。
- 锁定电流:Source 根据电压档位开启 VBUS 并声明对应电流能力。
- 开始协商:物理层握手完成,即可进入 PD 消息通信。
我遇到过一种奇怪的现象:明明插了支持 3A 的设备,CC 线电压却只有 0.8V——后来查出来是 Sink 端的 Rd 焊成了 10kΩ(本应用 5.1k)。所以,电阻的焊接和选型千万不能马虎。
调试技巧:用示波器测 CC 线电压时,探头要设置成 高阻抗 1MΩ,否则会拉低电压导致误判。我曾经因为用 50Ω 输入阻抗直接观察,结果看到电压只有理论值的一半……
4.3 实际电路中的坑
写到这里,我想起几个真实项目中的血泪教训:
- ESD 保护管脚电容:CC 线上加的 TVS 管结电容如果太大(超过 50pF),会严重拖慢边沿时间,导致 Source 误判连接状态。建议用低电容(<10pF)的 ESD 保护器件。
- Rp 的封装功率:别小看这个电阻!当 VBUS 输出 20V 时,如果 CC 线被意外短路到 VBUS(比如 Sink 的 CC 线被错误拉高),流过 Rp 的电流可能烧毁电阻。我建议选 0603 以上封装,1/8W 起步。
- ADC 参考电压:Source 的 ADC 需要稳定的 3.3V 参考,纹波超过 30mV 就会导致档位判断出错。我们曾用片内 VREF 结果发现温飘太大,后来改了外部基准。
- CC 线长距离:线缆长度超过 2m 时,寄生电容会拉低 CC 线上的有效电压,导致 Source 误判为低电流档。我有个客户用 3m 线缆,最后不得不调高 Rp 值来补偿。
警告:千万不要用普通 GPIO 直接驱动 CC 线!CC 线在 PD 规范下可能承载 -0.3V 到 5.5V 的电压,普通 IO 容易烧毁。务必使用专用的 Type-C 控制器或分立的电平转换电路。
4.4 调试时的测量对照表
最后,我分享一个自己在调试时常用的快速对照表。你只要量一下 CC 线对地的电压,就能反推当前电阻配置:
| 实测 V_CC (V) | 可能原因 | 处理方法 |
|---|---|---|
| 0 ~ 0.2V | 未插入 Sink 或 Rd 短路 | 检查连接器,测量 Rd 阻值 |
| 0.3 ~ 0.6V | Rp=22k,对应 500mA | 确认 Sink 需要的电流是否匹配 |
| 1.0 ~ 1.3V | Rp=10k,对应 1.5A | 可正常协商 |
| 1.6 ~ 2.0V | Rp=5.1k,对应 3A | 可正常协商 |
| 2.3 ~ 2.7V | Rp=330Ω,对应扩展供电 | 检查是否支持 5A 线缆 |
| >2.8V | CC 线对 VBUS 短路 | 立即断电,检查线路 |
记住,物理层是 PD 通信的地基。Rp 和 Rd 这些看似简单的电阻,一旦选型或焊接出错,后续所有协商都会失败。我早期被这个问题折腾了整整一周,后来每次画 PCB 都把 CC 线单独拉出来加测试点。