1、CC引脚基础

开始动手做 PD 调试之前,我先问你一个问题:USB Type-C 接口上那么多引脚,你知道哪个引脚最“聪明”吗?

答案就是 CC 引脚。说白了,整个 Type-C 的协商、方向检测、电流能力沟通,全要靠这一根线。我最早接触 Type-C 项目时,第一件事就是把 CC 引脚的逻辑吃透——因为后面所有 PD 调试的故障,十有八九都跟 CC 引脚没处理好有关。

什么是 CC 引脚

CC 是 Configuration Channel 的缩写,中文叫配置通道。在 Type-C 接口上,它有两个物理引脚:CC1 和 CC2。你拆开一根 Type-C 线缆,会发现里面这两根线是直通的,没有交叉。

它的核心职责就三个:

  • 检测插入方向——判断正插还是反插
  • 识别设备角色——谁是 Source(供电方),谁是 Sink(受电方)
  • 协商电流能力——告诉对方我能给多少电、我需要多少电

我习惯把 CC 引脚比作 Type-C 的“握手线”。没有它,插上去就是聋子碰哑巴,谁也不知道该做什么。

核心记忆点:CC 引脚是 Type-C 唯一的“配置通道”,所有电压协商、角色分配都通过它完成。

CC 引脚在 USB Type-C 中的作用

作用听起来简单,实际细节挺多。我拆成三个层面讲。

1. 检测插入方向

传统 USB 有正反之分,Type-C 没有。靠的就是 CC1 和 CC2 两根引脚。设备内部会在 CC1 和 CC2 上分别拉一个下拉电阻(Rd)。线缆那头如果有上拉电阻(Rp),哪根 CC 线被拉高,哪一端就是正插。

我在第一个 Type-C 项目里犯过这种错:默认只检测了 CC1,结果反插时死活不识别。后来老老实实两个 CC 引脚都采样,问题解决。

2. 识别设备角色

Type-C 设备分三种角色:

  • DFP(Downstream Facing Port) —— 通常就是主机、充电器。内部拉 Rp 上拉到 VBUS。
  • UFP(Upstream Facing Port) —— 通常就是设备、手机。内部拉 Rd 下拉到 GND。
  • DRP(Dual Role Port) —— 同时支持 Source 和 Sink,比如笔记本电脑。内部周期切换 Rp 和 Rd。

CC 线上的电压值反映了双方的角色和协商结果。我把常见电压情况整理成了一张表:

CC 电压(V) Source 侧状态 Sink 侧状态 说明
0 ~ 0.2 未连接 未连接 两边都没接
0.25 ~ 0.45 Rp = 36kΩ Rd 默认 USB 电流 (0.5A / 0.9A)
0.5 ~ 0.7 Rp = 12kΩ Rd 1.5A 电流能力
0.8 ~ 1.2 Rp = 4.7kΩ Rd 3A 电流能力
1.65 以上 Rp 开路 Rd 不支持 / 错误

3. 协商电流能力

Source 端通过 Rp 阻值告诉 Sink “我能给多少电流”。Sink 测到 CC 电压后,就能解析出对应的电流档位。这叫 无源协商,不经过 PD 协议。如果两边都支持 PD,才会在 CC 线上跑 BMC 编码的数字包,协商更高电压和电流。

嗯,这里要注意:CC 引脚同时也是 PD 物理层的通信线。PD 消息的位流就是以 300kHz 的载波在 CC 线上传输的。

我建议你在调试时优先测量 CC 引脚电压——先看是否在 0.25~1.2V 区间,如果偏离,大概率是上拉/下拉电阻配置错了,或者线缆问题。

CC 引脚的电气特性

这部分偏硬件,但嵌入式软件工程师也得懂。毕竟你写代码控制 CC 检测时,心里得知道信号长什么样。

电压范围

Type-C 规范规定 CC 引脚的正常工作电压在 0V ~ 1.65V 之间(以 GND 为参考)。超过 1.65V 可能意味着开路或者短路到 VBUS。我曾经遇到一个案例:客户板子 CC 引脚测出 3.3V,查了半天发现是 PCB 走线上有锡丝搭到了 VBUS。

上拉/下拉电阻

Source 端上拉电阻 Rp 的标准阻值有三种:36kΩ、12kΩ、4.7kΩ。Sink 端的下拉电阻 Rd 固定为 5.1kΩ。注意精度要求 ±1%,否则分压后电压会漂移。

电容负载

CC 线路上不能有太大的寄生电容。Type-C 规范要求 CC 引脚的总外部电容不超过 600pF(包含线缆、连接器、ESD 管)。我吃过这个亏:为了防静电,在 CC 引脚上加了 1nF 的电容,结果 PD 通信波形完全畸变。

警告:CC 引脚是弱信号线,不要直接用 MCU 的 GPIO 去驱动它。必须用电阻分压或专用 CC 检测芯片(如 FUSB302、TUSB320)来处理。强行拉高/拉低可能烧坏端口。

PD 通信时的波形

当设备进入 PD 模式后,CC 线上传输的是 BMC 编码的信号。波形大致长这样:载波 300kHz,比特率约 600kbps。你如果用示波器看,会看到正弦波上叠加了调制的信号。这时万用表已经测不出正确电压了,必须用逻辑分析仪。

// 伪代码示意:用 ADC 采样 CC 引脚电压判断连接状态
uint16_t cc_voltage_mv = adc_read_voltage(CC1_PIN);

if (cc_voltage_mv < 200) {
    // 未连接
} else if (cc_voltage_mv < 450) {
    // 默认 USB 电流 (0.5A)
} else if (cc_voltage_mv < 700) {
    // 1.5A 能力
} else if (cc_voltage_mv < 1200) {
    // 3A 能力
} else {
    // 异常,可能短路或未接上拉
}

一张图看懂 CC 引脚

我自己画了一张结构示意图,把刚才讲的三个作用串起来。你看完应该能对 CC 引脚的整体逻辑有个直观感觉。

CC 引脚在 Type-C 连接中的角色 Source Rp (上拉) 36k / 12k / 4.7k DFP / 充电器 Sink Rd (下拉) 5.1k UFP / 手机 CC 线 (CC1 / CC2) ① 检测插入方向 CC1 和 CC2 谁被拉高,说明对应方向插入 ② 识别设备角色 Source 拉 Rp,Sink 拉 Rd,DRP 交替切换 ③ 协商电流能力 → 电压值决定电流档位

SVG 图里三个功能模块一一对应。你可以看到左边 Source 拉 Rp,右边 Sink 拉 Rd,中间一条 CC 线传输电压和信号。下面黄色框分别解释了三个作用。

小结一下

CC 引脚是 Type-C 生态的“第一接触点”。你后面做 PD 调试,无论多复杂的故障,回到 CC 引脚检查电压和电阻配置,往往能定位七成问题。我自己的调试流程第一步永远是:示波器挂 CC1 和 CC2,万用表测静态电压。没这个习惯,后面查协议包就是大海捞针。

嗯,这一章就聊这么多。记住三个关键词:电压域、上拉/下拉电阻、方向检测。后面用到的时候你自然会发现,CC 引脚的知识是 PD 调试的基石。