第三章 PD协议基础概念:角色、Vconn与CC线

做USB PD这行,我经常看到有人问一个问题:PD协议到底在干什么?往简单了说,就是弄清楚三件事——谁给电、谁用电、谁说了算。然后再加上一根神奇的线叫CC,把这些信息传过去。今天我就把这几个核心概念掰碎了讲清楚。

电源角色:Source与Sink

电源角色其实很直观,说白了就是谁供电、谁受电。

  • Source(供电方):提供VBUS电源,典型代表是个充电器、移动电源、扩展坞。
  • Sink(受电方):从VBUS取电,典型代表是手机、平板、笔记本(电池侧)。

但你想想看,一个设备能不能两种角色都能当?比如一台笔记本电脑。插上充电器它是Sink,接上显示器给显示器供电时它又成了Source。PD协议允许设备动态切换电源角色,这在后面的DRP部分会讲。

避坑指南:我在项目里遇到过,有些早期的Type-C设备固件里写死了电源角色,插上只能充电不能放电。一接扩展坞就爆错码,最后追了几个晚上,才发现是角色描述符没配成DRP。

Source和Sink之间的功率协商通过PD协议消息进行,我们后面章节会详细介绍握手流程。这里先记住一句话:没有定下角色,就无法协商电压电流。

特性Source(供电方)Sink(受电方)
输出VBUS是否
可以请求功率否是
典型设备充电器、扩展坞、车充手机、笔记本、平板
DRP(双角色)可动态切换可动态切换

数据角色:DFP、UFP与DRP

数据角色和电源角色是两个独立的维度。数据角色解决的是“谁当主机、谁当设备”的问题。

  • DFP(下行端口):类似Host,提供数据通信时充当主控。通常是电脑、扩展坞主机端。
  • UFP(上行端口):类似Device,是DFP的数据从属。比如U盘、键盘、鼠标。
  • DRP(双角色端口):既可以当DFP,也可以当UFP。比如手机,连电脑是UFP,连U盘是DFP。

我自己的经验是,DRP设备启用的策略非常重要。如果你写过Type-C的嵌入式固件,肯定调过CC线状态机来决定角色。

小技巧:实际调试时,可以用一个带USB PD分析仪的USB硬件抓CC线上的状态流转。我当时就是靠协议分析仪的trace才定位到一个驱动bug——手机切到DFP模式后发送Source Capabilities时TDRSet是空的,压根没配电压。

数据角色和电源角色不是绑死的。一个DRP设备可以在不同时段是DFP或UFP,甚至可以同时出现一组电源角色互换而数据角色也同步互换的情况。这就是PD协议中数据角色交换(Data Role Swap)和电源角色交换(Power Role Swap)的概念。

Vconn:为线缆芯片供电

很多人第一次看到Vconn都会懵。我来说说它是什么。

Vconn是专门为电子标记芯片(eMarked cable,也写作eMarker)供电的电源。电子标记芯片是什么?就是一粒在USB-C线缆里的小IC,用来告诉PD控制器这条线缆的能力(比如能跑5A还是3A,是不是USB 3.2 Gen 2×2,有没有Thunderbolt模式)。

Vconn的电压范围是2.7V~5.5V,电流最大可到1.25A。不过实际设计当中,Vconn通常由Source提供,通过CC线中的一条来传输。

注意:Vconn和CC线共用引脚。具体而言,两根CC线CC1和CC2中,一根用于通信和连接检测,另一根就用于Vconn供电。切记不要两边同时供电,否则会破坏线缆芯片。

我遇到过一个量产阶段发现线缆不兼容的问题——某品牌Type-C线缆的eMarker需要Vconn持续供电才能正常工作,而我们的Source只在下电后提供脉冲供电,结果线缆芯片掉电后未正常响应Discover Identity命令,被系统认为是不支持PD的线缆。后来我调了Vconn供电时序才解决。这件事给我的教训是:设计阶段就要查清eMarker的Vconn要求。

CC线:PD通信的命脉

CC(Configuration Channel)是USB Type-C里最核心的信号线,没有之一。它承担两件事:

  1. 连接检测与角色发现:通过检测CC1和CC2的上拉/下拉电阻,双方设备判断对方的电源角色和数据角色。
  2. PD通信通道:PD协议报文(如Source Capabilities、Request、Accept)都用BMC编码走CC线。

简单地说,没有CC线,PD就是一个空壳子。我建议刚入门的同学先把CC线的逻辑梳理清楚,因为后面很多故障排查都会落到CC线上。比如常见问题:插上设备后不开始充电,先看一下CC1/CC2的电压是多少,是不是不在正常范围内。

标准CC状态编码(简短参考)

CC电压(V)含义
0 < V < 0.2无连接(开路或未接入)
0.25 < V < 0.55仅充当UFP/DFP(接下拉电阻)
0.7 < V < 1.0检测到Source(接上拉电阻)
1.4 < V < 1.7检测到Vconn/eMarker
USB Type-C PD 基础概念关系图 CC线(配置通道) 电源角色 Source(供电) Sink(受电) 数据角色 DFP(主机) UFP(设备) DRP(双角色) Vconn(供电) CC线决定电源角色与数据角色;Vconn用于eMarker供电

总结:三个概念如何一起工作

拿一个手机插到充电器上举例解释:

  1. CC线检测到充电器上有上拉电阻,手机上有下拉电阻,于是手机得知自己是Sink,充电器是Source。
  2. 同时,CC线通过BMC编码传输PD消息,让手机知道充电器支持哪些电压档位。
  3. Vconn通过未使用的CC线为充电线缆的eMarker供电,线缆报告自己的电流能力。
  4. 数据角色:此时手机是UFP(设备端),充电器是DFP(主机端),可以协商数据角色交换(但很少用于充电器)。

整个过程不到100ms就能完成。如果中间任何一个环节出错,比如CC电压不对或Vconn供电时序不对,就会导致充电失败或无法进入PD工作状态。

实用建议:设计时最好给CC线的每一条通道加上独立的电压检测点,甚至给Vconn供电的MOS加个电流反馈。我在调试时发现CC线的电压波动很大,如果不独立检测,很难定位是线缆问题还是Source端上拉电阻错配。

以上三个基本概念是后面所有PD协议章节的基石。吃透它们,再往前走才不会踩坑。记住:角色确定、CC通信、Vconn辅助供电,这三者缺一不可。