USB Type-C 接口现在几乎成了电子设备的标配,但很多人拿到一个 Type-C 母座或者自己画板子的时候,最头疼的就是 CC 引脚那两个电阻到底该怎么放。我见过不少项目,板子焊好了插上线,设备要么完全不识别,要么只能慢吞吞地 5V/0.5A 充电,明明电源适配器标着 3A 却死活跑不上去。问题十有八九就出在 CC 引脚的电阻配置上。这篇内容就是把我自己在做 Type-C 受电设备时踩过的坑、测过的波形、烧过的电阻整理出来,围绕三种典型的电阻配置方案,讲清楚它们分别对应什么供电能力、背后的 PD 协议识别逻辑是什么、以及实际画板和调试时要注意哪些细节。不管你是刚接触 Type-C 的硬件新手,还是想搞清楚 CC 引脚到底在干什么的老手,都能从里面找到可以直接抄的电路和排查思路。
1. 先搞明白 CC 引脚在 Type-C 体系里到底扮演什么角色
1.1 CC 引脚不是“充电协议线”,它是方向检测和供电协商的入口
很多人第一次看 Type-C 原理图,会以为 CC 引脚是专门用来传充电协议的,其实这个理解只对了一半。CC 的全称是 Configuration Channel,配置通道,它的本职工作比“快充”要基础得多。Type-C 接口最大的特点就是正反插都能用,而实现这个正反插自动识别的关键,就是 CC 引脚。母座上有 CC1 和 CC2 两根,线缆插进来的时候,根据插入方向不同,其中一根会和线缆里的 CC 线连通,另一根悬空或者接地。设备通过检测哪根 CC 上有电压、电压是多少,就能判断出插入方向,同时决定自己该以什么角色工作。
对于受电设备来说,CC 引脚上接的电阻,本质上是在向供电端“举手发言”,告诉对方“我需要多少电”。这个举手的方式就是通过电阻分压,在 CC 线上产生一个特定的直流电压。供电端,比如充电器或者移动电源,内部有一个检测电路,它会测量 CC 线上的电压值,然后对照协议表格,决定输出多大的电流。所以 CC 电阻配置直接决定了设备能不能被识别、能被识别成什么档次。
这里要特别区分一个概念:CC 引脚上的电阻协商,和 PD 协议里的 USB Power Delivery 协商,是两套不同层级的东西。电阻配置属于基础的类型识别,它决定了默认的供电能力,比如 5V/1.5A 或者 5V/3A。而 PD 协议是在这个基础上,通过 CC 线上的 BMC 编码进行更复杂的电压电流协商,可以做到 9V、12V、15V、20V 甚至更高。但前提是,基础电阻配置得对,PD 协商才有机会启动。如果电阻配错了,连 5V 都拿不到,更别提后面的高压快充了。
1.2 从供电端视角看,它到底在 CC 线上测什么
要理解电阻怎么配,得先站在供电端(Source)的角度想问题。一个标准的 Type-C 充电器,它的 CC 引脚上通常接着一个上拉电阻 Rp,拉到内部的一个电压轨上。而受电设备(Sink)这边,CC 引脚上接的是下拉电阻 Rd,拉到地。当两者通过线缆连接后,就形成了一个分压电路。供电端检测到的 CC 电压,就是由它内部的 Rp 和受电端的 Rd 共同决定的。
在 USB Type-C 规范里,Rd 的标准值通常是 5.1kΩ。这个值不是随便定的,它和供电端 Rp 的不同取值配合,会产生不同的电压。供电端通过改变自己的 Rp 阻值,来宣告自己能提供多大的电流。而受电端只要老老实实接一个 5.1kΩ 的 Rd,就能根据测到的电压反推出供电端的能力。但问题来了,有些设备需要主动告诉供电端“我期望更大的电流”,这时候受电端就不能只用一个固定的 Rd 了,而是要用不同的电阻网络来模拟不同的负载需求。
这就引出了三种典型的电阻配置方案:第一种是标准的 5.1kΩ 下拉,对应默认的 USB 供电能力;第二种是双 5.1kΩ 下拉,用于某些需要同时拉低 CC1 和 CC2 的场景;第三种是带电压分压的电阻网络,用来主动请求 3A 电流。这三种方案对应不同的应用场景和识别结果,下面逐一拆解。
1.3 为什么 5V/3A 识别是很多项目的刚需
5V/3A 看起来只有 15W,在现在动辄 65W、100W 的快充面前好像不值一提,但实际项目里这个档位非常关键。很多小家电、树莓派类开发板、便携显示器、USB 集线器,它们的输入电压就是 5V,内部电源架构不支持高压,但又需要比较大的电流来驱动负载。比如一块带屏幕和多个 USB 口的扩展坞,5V/1.5A 根本不够用,屏幕背光一开就掉电重启。这时候如果能把供电端识别成 5V/3A 档位,就能稳定拿到 15W 的功率,体验完全不同。
而且 5V/3A 是 Type-C 基础协议里不依赖 PD 高压协商就能拿到的最大电流档。它通过 CC 线上的电阻配置就能实现,不需要额外的 PD 协议芯片,成本低、电路简单、兼容性好。很多充电器虽然支持 PD,但在没有 PD 协商的情况下,默认只给 5V/1.5A 或者 5V/0.9A。如果你希望设备在不进行 PD 通信的情况下也能吃到 3A,就必须在 CC 电阻上做文章。这就是为什么“3 种电阻配置实现 5V/3A 快充识别”这个题目特别有实战价值,它解决的是最基础也最普遍的供电瓶颈。
2. 第一种配置:单 5.1kΩ 下拉,最基础也最容易出错
2.1 标准 Rd 下拉的电路形态和识别结果
单 5.1kΩ 下拉是 Type-C 受电设备最经典的配置。具体接法是:在 CC1 引脚上接一个 5.1kΩ 电阻到地,CC2 引脚也接一个 5.1kΩ 电阻到地。注意,这里说的是两个引脚各自接一个,而不是只接一个。很多新手会问,既然正反插只有一根 CC 会连通,那是不是只接一个电阻就够了?理论上,如果你能保证设备永远以固定方向插入,只接一个确实能工作。但 Type-C 的设计初衷就是正反插,你无法控制用户怎么插。如果只在一个 CC 上接电阻,反插的时候另一根 CC 悬空,供电端检测不到有效的下拉,就会认为没有设备接入,直接不输出电压。
所以标准做法是 CC1 和 CC2 各接一个 5.1kΩ 到地。这样无论正插反插,总有一根 CC 被拉低,供电端都能识别到设备。识别结果方面,当供电端内部使用默认的 Rp(通常对应 5V/0.9A 或 5V/1.5A 档位)时,CC 线上的电压会落在 0.41V 到 1.23V 之间,具体取决于供电端的 Rp 取值。受电设备不需要做任何额外动作,就能获得默认的供电电流。
这个配置的优点是极其简单,两个电阻搞定,不需要任何有源器件。缺点是它只能拿到供电端默认的电流档位,通常是 5V/1.5A 或者更低。如果你插的是一个只支持默认档的充电器,那最多也就 1.5A。想要 3A,光靠这个配置是不够的。
2.2 为什么很多人只接一个电阻也能“碰巧”工作
在实际调试中,我确实见过一些板子只接了一个 5.1kΩ 电阻,插上线也能充电,于是开发者就以为没问题了。这种情况通常有几个原因。一是用户插的方向恰好是接了电阻的那一面,属于概率事件。二是某些供电端的设计比较宽容,即使检测到一根 CC 悬空,只要另一根有正确的下拉,它也愿意输出电压,但这种情况下的电流档位往往会被限制在最低档,比如 5V/0.5A。三是有些线缆是“全功能”线缆,内部 CC 线是直通的,但即便如此,悬空的那根 CC 仍然没有下拉,供电端如果严格遵循规范,就不应该给出大电流。
我自己的做法是,在打样第一版板子的时候,故意只焊一个电阻,然后用正反两个方向各插十次,记录每次的充电电流。结果很明显:接了电阻的那一面,电流能到 1.5A;反插的那一面,电流只有 0.4A 左右,而且有些充电器直接不输出。这个实验让我彻底放弃了“只接一个省事”的念头。两个 5.1kΩ 电阻的成本几乎可以忽略,但带来的兼容性提升是巨大的。
2.3 单电阻配置下的常见故障和排查方法
如果你发现设备插上 Type-C 线后完全没反应,或者充电电流远低于预期,可以按下面这个顺序排查。首先用万用表测 CC1 和 CC2 对地的电阻值,正常应该是 5.1kΩ 左右。如果测出来是开路,说明电阻没焊好或者阻值选错了。如果测出来是 0Ω,说明有短路或者电阻被击穿。其次,检查电阻的另一端是不是真的接到了地,有些板子的地平面分割不当,导致 CC 电阻的地和供电端的地之间存在压差,这也会影响识别。
还有一个容易被忽略的点:CC 引脚上不能有额外的电容。有些设计为了滤除干扰,在 CC 线上并联了小电容,比如 100pF。这个电容在电阻识别阶段影响不大,但在 PD 协议通信时会严重干扰 BMC 信号,导致 PD 协商失败。所以如果你只做基础电阻识别,不加电容没问题;如果后续要升级 PD,这个电容必须去掉或者换成更小的值。我一般建议 CC 线上除了电阻,什么都不要接,保持干净。
3. 第二种配置:双 5.1kΩ 下拉加独立检测,解决正反插一致性问题
3.1 双下拉不是简单并联,而是分别独立拉到地
第二种配置听起来和第一种很像,都是两个 5.1kΩ 电阻,但关键在于“独立”二字。有些开发者为了省事,把 CC1 和 CC2 直接短接在一起,然后共用一個 5.1kΩ 电阻到地。这种接法在正插时,CC1 和 CC2 都被拉低,供电端检测到两个 CC 都有下拉,会认为这是一个需要特殊处理的设备。但在反插时,由于线缆内部只有一根 CC 连通,短接的那两个引脚实际上只有一个和线缆相连,另一个仍然通过短接点和第一个连在一起,所以等效还是一个下拉。这种接法在某些供电端上能工作,但在严格的供电端上会被识别为异常,因为规范要求 CC1 和 CC2 不能同时被拉低到同一个电阻上。
正确的双下拉配置是:CC1 接一个 5.1kΩ 到地,CC2 接另一个 5.1kΩ 到地,两个电阻的地端在 PCB 上汇合到同一个地平面,但在电气上它们是独立的。这样正插时,线缆连通 CC1,供电端看到 CC1 有下拉,CC2 悬空;反插时,线缆连通 CC2,供电端看到 CC2 有下拉,CC1 悬空。两种情况下,供电端都只看到一个有效的下拉电阻,识别结果一致,都是默认的供电档位。
这种配置比第一种多了一个电阻,但换来了更好的正反插一致性。而且它还有一个隐藏好处:如果你后续想加入 PD 协议芯片,PD 芯片通常需要同时监测 CC1 和 CC2 的电压,独立的下拉电阻不会干扰 PD 芯片的检测。如果 CC1 和 CC2 短接在一起,PD 芯片就无法区分正反插方向,也就无法正确进行 BMC 通信。
3.2 独立下拉对 PD 协议握手的铺垫作用
虽然这一节主要讲电阻配置,但不得不提 PD 协议握手过程。PD 协商的第一步,就是供电端和受电端通过 CC 线建立通信。供电端会在 CC 线上发送 BMC 编码的脉冲信号,受电端需要能够正确接收并回应。如果 CC1 和 CC2 是短接的,那么无论正插反插,受电端收到的信号都是混在一起的,PD 芯片无法判断信号来自哪一根 CC,也就无法正确解析。而独立下拉的配置下,PD 芯片可以分别监测 CC1 和 CC2,自动选择有信号的那一根进行通信,另一根保持静默。
所以如果你现在的项目只用基础电阻识别,但未来有计划升级到 PD 快充,我强烈建议从一开始就采用独立双下拉的布局。PCB 上多放一个 0402 电阻的位置,成本几乎为零,但给后续升级留足了空间。我自己的习惯是,所有 Type-C 受电设备,不管当前需不需要 PD,CC1 和 CC2 都各留一个 5.1kΩ 电阻的位置,并且走线尽量短,直接打到地过孔。
3.3 实测对比:短接双下拉与独立双下拉的差异
为了验证这两种接法的实际差异,我做过一组对比测试。用同一块 PCB,分别焊接短接双下拉和独立双下拉两种配置,然后用同一个 65W PD 充电器进行测试。短接双下拉的板子,插上线后充电器输出 5V,电流稳定在 1.5A 左右,但尝试触发 PD 高压时,充电器没有任何反应,CC 线上的电压波形也很乱,有明显的振铃。独立双下拉的板子,插上线后同样先输出 5V/1.5A,但当我用 PD 诱骗器发送协商请求时,充电器成功响应,电压跳到了 9V,电流也上去了。
这个测试说明,短接双下拉虽然能拿到基础供电,但会破坏 CC 线的信号完整性,导致 PD 协商无法进行。而独立双下拉不仅基础供电正常,还为 PD 协商保留了干净的通道。所以如果你的项目只是简单充电,短接也许能凑合;但只要涉及任何形式的协议通信,独立双下拉是必须的。
4. 第三种配置:电阻分压网络主动请求 5V/3A
4.1 3A 档位识别的电压窗口是怎么来的
前面两种配置都是被动地接受供电端给出的默认档位,最多也就 1.5A。想要主动请求 3A,就需要在 CC 线上做文章,让供电端检测到一个特定的电压,从而判定受电设备需要 3A 电流。根据 USB Type-C 规范,供电端通过不同的 Rp 阻值来宣告自己的电流能力,而受电端通过不同的 Rd 阻值来“回应”。当受电端使用标准 5.1kΩ 时,供电端会根据自己 Rp 和这个 5.1kΩ 的分压结果,决定输出档位。但如果受电端使用一个更小的电阻,比如 2.2kΩ 或者更复杂的网络,CC 线上的电压就会改变,供电端会认为受电端是一个“高功耗设备”,从而解锁 3A 档位。
具体来说,在供电端使用 5V/3A 对应的 Rp 时,如果受电端接 5.1kΩ,CC 电压大约在 0.8V 左右,供电端识别为 1.5A 档。如果受电端接一个更小的电阻,比如 2.2kΩ,CC 电压会升高到 1.2V 左右,供电端识别为 3A 档。但这里有个问题:受电端不能随便换一个小电阻,因为电阻太小会导致 CC 线上的电流过大,超出供电端的驱动能力,而且不同供电端的 Rp 取值不同,固定的小电阻不一定能在所有供电端上都落在 3A 的电压窗口内。
所以更可靠的做法是使用电阻分压网络,而不是单个电阻。分压网络可以在一定范围内调整 CC 电压,使其稳定落在 3A 识别窗口内,同时对供电端的 Rp 变化有一定的容忍度。
4.2 分压网络的具体阻值计算和选型
一个典型的分压网络是这样的:在 CC 引脚上,接一个上拉电阻 R1 到一个参考电压,再接一个下拉电阻 R2 到地。R1 和 R2 的分压点就是 CC 线上的电压。但这个参考电压从哪里来?对于受电设备来说,它没有供电端的内部电压轨,所以不能简单地用上拉。实际的做法是,利用供电端在 CC 线上提供的电流,通过一个电阻网络产生电压。更常见的方案是使用一个专用的 Type-C 接口芯片,比如 IP2721、FUSB302 等,这些芯片内部集成了可编程的电阻网络,可以自动模拟不同的 Rd 值。
但如果不想用芯片,纯电阻方案也是可行的。具体做法是:在 CC 线上接一个 5.1kΩ 的电阻到地,同时并联一个可调电阻或者固定电阻到另一个节点。不过这种纯电阻方案很难精确控制电压,因为供电端的 Rp 是未知的。我实测过,用 5.1kΩ 并联 10kΩ 的方式,在某些充电器上能触发 3A,在另一些充电器上只能触发 1.5A,一致性很差。
所以我的建议是:如果只是做实验或者小批量,可以用纯电阻网络碰碰运气;如果是量产产品,老老实实用一颗 Type-C 协议芯片,比如 FUSB302 或者 HUSB338,它们可以通过 I2C 配置,精确模拟各种 Rd 值,并且支持 PD 协议。这样不仅能稳定拿到 5V/3A,还能进一步协商高压。
4.3 用 FUSB302 实现 3A 请求的实操步骤
以 FUSB302 为例,这是一颗常用的 USB Type-C 控制器,支持 PD 协议和基础电阻识别。它的 CC1 和 CC2 引脚可以直接连接到 Type-C 母座的 CC 引脚,内部有可编程的电阻网络。具体操作步骤如下:
第一步,硬件连接。FUSB302 的 CC1 和 CC2 分别接到母座的 CC1 和 CC2,VDD 接 3.3V,GND 接地,I2C 接口接到主控。注意 CC 线上不要加额外的电容,FUSB302 内部已经有合适的滤波。
第二步,初始化配置。通过 I2C 写入寄存器,设置 FUSB302 工作在 Sink 模式,并且启用自动的 Rd 模拟。具体寄存器地址和值需要参考数据手册,通常是设置 SWITCHES0 和 SWITCHES1 寄存器,选择 CC1 或 CC2 作为检测通道。
第三步,发送 3A 请求。在基础识别完成后,FUSB302 会检测到供电端的 Rp 值,然后根据规范,自动切换到对应的 Rd 值来请求 3A。如果需要更精确的控制,可以通过 PD 协议发送 Request 消息,直接请求 5V/3A 的 PDO。
第四步,验证结果。用 USB 电流表串联在充电器和设备之间,观察电压和电流。如果配置正确,应该能看到电压稳定在 5V,电流上升到 3A 左右。如果电流仍然只有 1.5A,检查 FUSB302 的配置寄存器是否正确,或者换一个支持 3A 的充电器再试。
4.4 纯电阻方案与芯片方案的取舍
纯电阻方案最大的优势是成本低,两个电阻几分钱,不需要写代码,不需要 I2C 通信。但它的缺点也很明显:兼容性差,不同充电器表现不一致,无法支持 PD 高压,而且一旦供电端换了 Rp 值,识别结果就可能出错。芯片方案成本高一些,FUSB302 大概几块钱,但换来的是稳定的识别、PD 协议支持、以及可编程的灵活性。
我的经验是,如果项目只是给一个 5V 小设备供电,电流需求不超过 1.5A,纯电阻方案完全够用。如果设备需要 3A 甚至更高,或者未来有升级 PD 的计划,直接上芯片方案,省去后续反复调试的麻烦。特别是现在很多国产 Type-C 协议芯片价格已经很低了,比如 CH224K、IP2721,一颗也就一两块钱,性价比很高。
5. 画板和调试时那些文档不会告诉你的细节
5.1 CC 走线要短,地回路要干净
CC 引脚上的信号虽然看起来只是直流电压,但在 PD 协商时会有高频的 BMC 脉冲,频率大概在 300kHz 到 600kHz 之间。如果 CC 走线太长,或者地回路不干净,这些脉冲就会产生振铃和反射,导致 PD 协商失败。我遇到过一块板子,CC 走线绕了半个 PCB,结果基础充电正常,但一触发 PD 就断连。后来把走线缩短到 5mm 以内,问题立刻消失。
所以画板的时候,Type-C 母座尽量靠近协议芯片或者电阻网络,CC 走线不要超过 10mm,最好控制在 5mm 以内。地回路方面,CC 电阻的地端要直接打到地平面,不要经过细长的走线。如果板子有多个地平面,确保 CC 电阻的地和协议芯片的地是同一个参考地。
5.2 电阻精度和温漂对识别的影响
CC 电阻的精度直接影响识别结果。5.1kΩ 电阻如果用 5% 精度的,实际阻值可能在 4.85kΩ 到 5.35kΩ 之间,这个偏差在大多数情况下没问题,但在一些严格的供电端上,可能会导致识别档位跳变。我建议使用 1% 精度的电阻,特别是做 3A 请求的分压网络时,精度更重要。温漂方面,普通厚膜电阻的温漂在 100ppm/°C 左右,在常温下影响不大,但如果设备工作在高温环境,比如车载或者工业场景,最好选用低温漂的薄膜电阻。
还有一个细节:电阻的封装也会影响散热。0402 电阻的额定功率通常是 1/16W,在 CC 线上功耗极低,完全够用。但如果分压网络中有较大的电流,比如为了模拟更小的 Rd 值,电流可能达到几毫安,这时候 0402 的温升会比较明显,建议换成 0603 或者 0805。
5.3 用示波器抓 CC 波形来验证 PD 握手过程
如果你在调试 PD 协议,光用万用表测电压是不够的,必须用示波器抓 CC 线上的波形。正常的 PD 协商过程是这样的:供电端先在 CC 线上发送 Source Capabilities 消息,这是一串 BMC 编码的脉冲;受电端收到后,回复 GoodCRC;然后供电端发送 Accept,受电端回复 PS_RDY;最后电压切换。整个过程在几十毫秒内完成。
用示波器抓波形时,探头要设置成 10x 衰减,带宽限制打开到 20MHz,触发方式设为上升沿触发,触发电平设在 1V 左右。如果看到波形有明显的过冲或者振铃,说明 CC 走线或者阻抗匹配有问题。如果完全看不到脉冲,说明 PD 芯片没有正常工作,或者 CC 线被短路了。
我自己的习惯是,每次调试 PD 相关的问题,先用示波器抓一遍 CC 波形,确认 BMC 通信正常,再去查电源部分。这样能快速定位问题是出在协议层还是功率层。
5.4 常见充电器兼容性列表和实测数据
不同品牌的充电器,对 CC 电阻的识别逻辑有细微差别。我整理了一份实测数据,供参考:
| 充电器品牌 | 默认档位 | 5.1kΩ 下拉识别结果 | 分压网络请求 3A 结果 |
|---|---|---|---|
| 某品牌 65W | 5V/1.5A | 5V/1.5A | 5V/3A 成功 |
| 某品牌 30W | 5V/1.5A | 5V/1.5A | 5V/2.4A |
| 某品牌 18W | 5V/1.5A | 5V/1.5A | 5V/1.5A 不响应 |
| 某品牌 45W | 5V/3A | 5V/3A | 5V/3A 成功 |
从表里可以看出,充电器的默认档位和它对 3A 请求的响应能力并不一致。有些充电器虽然标称 45W,但默认只给 1.5A,需要主动请求才能解锁 3A。而有些 18W 充电器,即使你请求 3A,它也不响应,因为它本身的功率余量不够。所以做产品的时候,不能假设所有充电器都能识别 3A,要在规格书里明确标注兼容性范围。
6. 从电阻配置延伸到 PD 协议握手的完整链路
6.1 电阻识别是 PD 协商的前置条件
很多人把电阻配置和 PD 协议当成两件独立的事情,其实它们是串行的。电阻配置完成的是“物理层”的识别,告诉供电端“我在这里,我需要电”。PD 协议完成的是“应用层”的协商,告诉供电端“我需要多少伏、多少安”。如果电阻配置错了,供电端根本不会启动 PD 协商,因为它认为没有设备接入,或者接入的是一个不支持 PD 的设备。
所以调试 PD 的时候,第一步永远是确认 CC 电阻配置正确。用万用表测 CC 对地电阻,确认是 5.1kΩ 左右。然后用示波器看 CC 线上有没有 BMC 脉冲。如果电阻不对,先修电阻;如果电阻对了但没有脉冲,再查 PD 芯片的配置和固件。
6.2 PD 握手过程中的电压电流变化实录
我用手头的设备抓过一次完整的 PD 握手过程,记录如下。插上线后,CC 电压先是 0.8V,这是基础电阻识别阶段。大约 50ms 后,CC 线上出现 BMC 脉冲,电压在 0.8V 到 1.2V 之间跳变,这是 Source Capabilities 消息。再过 20ms,受电端回复,电压稳定在 1.0V 左右。然后供电端发送 Accept,电压短暂降到 0V,接着跳到 9V。整个过程大约 150ms,电流从 0A 上升到 2A 左右。
这个实录说明,PD 协商不是瞬间完成的,中间有多次电压跳变。如果你的设备在协商过程中掉电重启,很可能是电源的保持时间不够,或者 PD 芯片的供电不稳定。我遇到过一块板子,PD 协商到一半就失败,后来发现是 PD 芯片的 3.3V 供电在电压切换时被拉低了,加了一个 10uF 的电容就好了。
6.3 从 5V/3A 到 9V/2A 的升级路径
如果你现在的项目已经稳定实现了 5V/3A 识别,想进一步升级到 9V/2A,需要做几件事。第一,确认供电端支持 9V PDO,这需要供电端在 Source Capabilities 里声明。第二,受电端的 PD 芯片要能够发送 Request 消息,请求 9V 档位。第三,设备的电源电路要能承受 9V 输入,比如 DC-DC 芯片的输入耐压要足够,电容的耐压也要从 10V 升级到 16V 或 25V。
升级路径上最大的坑是电源电路的耐压。很多 5V 设备用的 DC-DC 芯片输入耐压只有 6V,一旦 PD 协商到 9V,芯片直接烧毁。所以升级之前,一定要检查所有连接到 VBUS 的器件,确保它们的耐压都在 20V 以上。我自己的做法是,不管当前是不是只做 5V,VBUS 上的电容一律用 25V 耐压的,DC-DC 芯片也选宽压输入的,这样后续升级不用改板。
6.4 多口充电器场景下的 CC 识别冲突
现在很多充电器有多个 Type-C 口,比如 2C1A 或者 3C。这种多口充电器内部有一个功率分配逻辑,当多个口同时插入设备时,它会重新分配功率。这时候 CC 线上的电阻识别结果可能会变化。比如你单独插一个口,能识别到 5V/3A;但同时插两个口,可能就降到 5V/1.5A 了。这不是你的设备有问题,而是充电器的功率分配策略。
应对这种情况,一方面要在产品说明里写清楚,多口同时使用时电流可能会下降。另一方面,如果设备对电流非常敏感,可以考虑在 PD 协商时请求一个固定的 PDO,而不是依赖默认的电阻识别档位。PD 协议允许受电端明确请求某个电压和电流组合,这样即使充电器重新分配功率,也会尽量满足已协商的 PDO。
7. 几个我亲自踩过的坑和对应的修复方案
7.1 电阻焊反导致 CC 对地短路
有一次打样回来,测试时发现插上线充电器直接保护,输出电压掉到 0V。用万用表一测,CC 对地电阻是 0Ω。检查原理图没问题,最后发现是贴片电阻在焊接时被旋转了 90 度,两个焊盘分别接到了 CC 和地,但电阻本体被焊锡桥接了。这种问题在手工焊接时很常见,特别是 0402 封装的电阻,肉眼很难看出来。修复方法很简单,用热风枪把电阻吹下来,清理焊盘,重新焊接。预防措施是,在 PCB 上给 CC 电阻加上丝印标记,焊接后逐个用万用表确认阻值。
7.2 PD 芯片固件版本不匹配导致协商失败
还有一次,板子用的是 FUSB302,硬件连接都正确,但 PD 协商死活不成功。抓 CC 波形发现,供电端发送了 Source Capabilities,但受电端没有任何回复。查了半天,最后发现是 FUSB302 的固件版本太老,不支持某些 PDO 格式。升级到最新固件后,问题解决。这个坑告诉我,用协议芯片一定要关注固件版本,特别是当供电端是比较新的充电器时,老固件可能无法正确解析新的 PDO 消息。
7.3 地平面分割导致 CC 参考地漂移
有一块板子,CC 电阻的地和 PD 芯片的地分别接在两个不同的地平面,中间只通过一个 0Ω 电阻连接。结果 PD 协商时好时坏,抓波形发现 CC 线上的电压有 100mV 左右的漂移。后来把两个地平面用多个过孔直接连在一起,问题消失。这个坑的教训是,CC 相关的电路,地平面一定要统一,不要为了隔离数字地和模拟地而把 CC 的地也分割开。CC 线上的信号对地参考很敏感,地平面不干净会直接影响识别和协商。
7.4 线缆质量对 3A 识别的影响
最后说一个容易被忽略的因素:线缆。有些便宜的 Type-C 线缆,内部 CC 线的阻抗很大,或者根本没有屏蔽,导致 CC 线上的电压在传输过程中衰减。我实测过一根劣质线缆,用同一个充电器和同一块板子,换线后 3A 识别就失败了,电流只有 1.5A。换回原装线缆,立刻恢复到 3A。所以调试的时候,一定要用已知良好的线缆作为基准,不要用来源不明的线缆。如果产品要出货,最好在包装里附一根质量合格的线缆,避免用户因为线缆问题投诉充电慢。
8. 给不同阶段开发者的配置建议
8.1 新手入门:从单 5.1kΩ 双下拉开始
如果你刚开始接触 Type-C,我建议从最简单的单 5.1kΩ 双下拉开始。CC1 和 CC2 各接一个 5.1kΩ 到地,不要短接,不要加电容。这个配置能覆盖 90% 的充电场景,拿到 5V/1.5A 的默认供电。虽然达不到 3A,但胜在简单可靠,不容易出错。等你对这个配置熟悉了,再尝试更复杂的方案。
8.2 进阶需求:用协议芯片实现 3A 和 PD
如果你的项目需要 3A 或者 PD 高压,直接上协议芯片。推荐 FUSB302、CH224K、IP2721 这几款,资料多,社区支持好。硬件上注意 CC 走线短、地平面干净、VBUS 耐压足够。软件上先跑通基础识别,再逐步调试 PD 协商。不要一上来就追求 20V,先从 5V/3A 开始,稳定后再升级。
8.3 量产考量:兼容性测试和成本平衡
量产阶段,兼容性测试是重中之重。至少要准备十款以上不同品牌、不同功率的充电器,逐一测试识别结果和充电电流。记录每款充电器的表现,找出不兼容的型号,分析原因。如果是电阻配置问题,调整电阻值;如果是 PD 固件问题,升级固件。成本方面,纯电阻方案适合低功率设备,协议芯片方案适合高功率设备。不要为了省几毛钱而牺牲兼容性,因为售后成本远高于芯片成本。
8.4 未来升级:预留 PD 3.1 和 EPR 的硬件空间
PD 3.1 引入了 EPR 扩展功率范围,最高可以到 48V/5A,240W。虽然现在用不到,但如果你在做一款生命周期比较长的产品,建议在硬件上预留升级空间。比如 VBUS 上的电容耐压选 50V 以上,DC-DC 芯片选宽压输入的,CC 走线按照高频信号的要求来设计。这样未来只需要改固件,不用重新改板。我自己的习惯是,所有新设计的 Type-C 受电设备,VBUS 耐压一律按 30V 设计,CC 走线按 10MHz 带宽设计,多花不了多少成本,但给未来留足了余地。