CC线电气特性——连接检测与角色发现

好,咱们今天聊聊CC线。这根线看着不起眼,却是整个Type-C生态的“神经”。我做过几个PD项目,调试最多的问题就是CC线上莫名其妙掉电压,或者角色认不出来。说白了,你把CC线搞明白了,Type-C协议就算通了八成。

CC1/CC2的基本电压电平

CC线上的电压,不是随便给的。Source端通过一个上拉电阻Rp接到3.3V电源,Sink端通过一个下拉电阻Rd接到GND。未插线时,Source侧CC电压就是3.3V,Sink侧CC电压是0V。这个很好理解:没连通。

线插进去之后,两个电阻串联分压。Source的CC电压会降下来,Sink的CC电压会升上去。具体多少?取决于Rp和Rd的比值。实际项目中,我习惯先拿万用表量一下CC对地的电阻,大概就能推断出对方是什么角色。注意,这个测量要快,因为PD协议会频繁切换,不小心就会误判。

端子角色 未连接时CC电压 已连接时CC电压(典型) 说明
Source ≈3.3V 0.2V ~ 1.2V(取决于Rp) CC引脚为输出/上拉
Sink ≈0V 略升至0.2V ~ 1.2V CC引脚为输入/下拉
DRP(交替) 交替0V/3.3V 稳定后同上 检测到插入后固定角色

Rp与Rd电阻——决定功率的“暗号”

Rp不是随便一个上拉电阻。USB-IF规定了三个标准阻值,每个对应一种电流能力。Rd倒是固定的5.1kΩ,容差1%。

  • Rp = 56kΩ:对应USB 2.0标准电流(0.9A),我只见过老式充电头这么干。
  • Rp = 22kΩ:对应1.5A,短距离充电线常见。
  • Rp = 10kΩ:对应3A,大功率PD诱骗器必须用这个。

为什么同一个Rp能代表电流?因为Sink端通过检测CC线上的电压,就知道对面挂了多大的Rp,然后协商出对应的电流。我遇到过某国产Hub把22kΩ电阻焊成了2.2kΩ,结果CC电压飙到2.8V,Sink直接判断是“非法连接”,死活不供电。嗯,千万注意阻值不能错。

关键公式:Source侧CC电压 = 3.3V × Rd / (Rp + Rd)

举例:Rp=10kΩ,Rd=5.1kΩ → 3.3×5.1/(10+5.1) ≈ 1.11V

这个电压就是Sink判断Rp类型的依据。

连接检测与去抖

CC线上的电压不是拿来就用。物理插入时会有机械抖动,信号跳来跳去。PD协议规定了一个去抖时间:tCCDebounce,典型值100ms~200ms。在这段时间里,必须连续检测到稳定有效的电压,才认为真正连上了。

我曾经在某个项目里把去抖时间改短到50ms,结果客户反映偶尔插拔会误触发。后来老老实实改回150ms,再没出过问题。这种事,别钻牛角尖,按规范来最省心。

检测流程很简单:

  1. 测量CC1和CC2的电压
  2. 至少一条线电压进入“有效连接”范围(0.2V ~ 1.2V)
  3. 持续去抖时间,电压保持稳定
  4. 确认连接,进入角色发现

注意:两条CC线不能同时有效。如果CC1和CC2都有电压,说明线缆可能损坏或者插反了?实际上是正常的,因为线缆内部会切换一条CC线作为Vconn供电。详细内容咱们后续章节会讲,这里先留个印象。

角色发现——谁是Source,谁是Sink?

连接确认后,双方需要明确各自的身份。原理很简单:Source侧CC线上有Rp,Sink侧有Rd。通过测量CC线电压,每一边都能推断出对方的类型。

  • Source:看到CC线电压被拉低到某个值,就知道对面是Sink。同时通过电压值判断Rd是否标准,从而确认是否支持PD。
  • Sink:看到CC线电压从0V上升到某个值,就知道对面是Source。再根据电压值查表,得知Rp的阻值,也就知道了对方的供电能力。
  • DRP(双角色端口):这种设备会轮换上拉和下拉。我习惯在代码里加一个状态机,每100ms切换一次角色。插拔瞬间必须在切换间隙识别成功,否则容易超时。这个调试过程非常刺激,经常示波器一挂就是一整天。

角色发现的最终结果是:CC线变成了简单的“谁供电谁负责”的信号通道。同时,CC线上的电压还会用于后续的PD协商,比如发送消息时改变电压电平。但那个是后面的内容,这里不展开。

我的经验:如果你用逻辑分析仪抓CC线,别只看电压值。注意看它是否在去抖时间内一直稳定。有时纹波大,明明连上了电压却不稳,角色发现就会失败。我遇到过一批USB Type-C线缆插头内部接触不良,CC线对地有100mV的纹波,去抖死活过不去。换根线就好。

CC线连接检测与角色发现流程图 初始状态(未连接) 测量CC1/CC2电压 电压是否在0.2V~1.2V? 且持续稳定无抖动 去抖 tCCDebounce 根据电压查表确定 Rp阻值 / Rd阻值 角色确定(Source/ Sink/ DRP) 去抖时间通常100~200ms 电压查表对应Rp:56k/22k/10kΩ

这张图把检测流程串了一遍。你可以看到,去抖是必须跨过的门槛,而电压查表则是角色发现的灵魂。我初学的时候总觉得流程图太简单,实际做起来才发现每步都有坑。比如电压稳定性的判断阈值,不同芯片内部比较器精度不一样,你要留点余量。