2. CC 引脚功能与检测原理
咱们做 Type-C 开发,第一关就是搞懂 CC 引脚。
说白了,CC 就是 Configuration Channel,配置通道。它只有一根线,但承担了三件大事:检测设备插入、判断正反插、协商供电角色。我最早接触 Type-C 时,以为 CC 就是一根普通 GPIO,结果一上示波器才发现……嗯,这里头门道不少。
2.1 CC 引脚到底在干什么?
一根 CC 线,负责三层工作:
- 连接检测:告诉源端“有个设备插进来了”。
- 正反插识别:通过 CC1 和 CC2 哪个拉低来判断。
- 角色宣告:Source 端上拉 Rp,Sink 端下拉 Rd,电阻值还对应不同供电能力。
我当年调一个快充板子,插上手机没反应。量了 CC 电压,0V。
为什么?因为我忘记在 Sink 端接下拉电阻。你想想看,CC 浮空,Source 端永远检测不到设备,自然不会拉高 VBUS。
2.2 上下拉电阻 – 角色与能力的「名片」
Source 端内部会通过一个上拉电阻把 CC 线拉到某个电压。这个电阻值不是随便选的。
| 供电能力 | 上拉电阻 Rp (Ω) | 典型 CC 电压 (V) |
|---|---|---|
| 默认 USB (500mA/900mA) | 36k | 0.41 |
| 1.5A | 22k | 0.66 |
| 3.0A | 10k | 1.23 |
Sink 端的下拉电阻 Rd 固定为 5.1kΩ。Source 读取 CC 电压,对照表就能知道对方能要多大电流。
还有一点要注意:Ra 电阻(1kΩ 下拉)用于电子标签芯片(E-Marker)检测,Vconn 供电就靠它。
2.3 连接检测与正反插判断
Type-C 公头有 CC1 和 CC2 两个引脚,但线缆里只有一根 CC 线真正连到对面。
插进去时,如果线缆正插,CC1 连通;反插,则 CC2 连通。Source 端通过检测 哪个 CC 引脚电压被拉低,就能知道插入方向。
我遇到过一块定制板,CC1 和 CC2 在 PCB Layout 上画反了,结果正插变反插,DP/DN 交换导致 USB 2.0 不通。修起来其实很简单——交换一下 CC 检测逻辑就行,但排查花了一整天。
2.4 角色检测状态机
Source 和 Sink 的角色不是固定的。插上后,双方通过 CC 电压做一次“握手”。
基本流程如下:
- Source 上拉 Rp,等待 CC 电压变化。
- Sink 下拉 Rd,CC 电压被拉到某个分压值。
- Source 检测到电压,知道自己该供电了。
- Sink 检测到电压,知道自己可以取电了。
- 如果双方都想当 Source?CC 电压会异常,这时候需要 DRP 切换。
DRP(双角色端口)会交替上拉和下拉,直到检测到对方的存在。我手头有个测试仪,能看到 DRP 切换频率——一般是 50ms 到 100ms 一个周期。
下面这张图帮你把整个检测流程串起来:
2.5 调试 CC 的常用方法和工具
调 CC 其实不复杂,但需要耐心。
- 万用表测电压:先确保 Source 端有正上拉,Sink 端有下拉。标准值参考上面的表格。
- 示波器看波形:DRP 切换时能看到方波。如果波形乱跳,可能有接触不良。
- PD 分析仪:我常用的是一个 USB 转 I2C 的调试棒,能抓到 CC 上的 BMC 编码数据。上电瞬间的握手包尤其重要。
2.6 避坑清单
最后列几个我踩过的坑,你写代码或画板子时留意:
- CC 线不要过长,超过 15cm 就可能超 600pF 电容限制。
- 上下拉电阻不要共用,Source 和 Sink 必须独立,否则会互相拉低。
- Vconn 供电:如果你用 E-Marker 线缆,需要给 CC 提供 Vconn(3.3V/5V)。这个很容易忘。
- 不要在 CC 上加太大的滤波电容,会拖慢检测速度。
- 双角色(DRP)切换时间:我见过固件里切太快导致死锁的。建议至少留 50ms 的稳定时间。