资讯中心

QC5 快充设计指南:USB-PD PPS、2S电荷泵与选型调试

📅 2026/10/1 4:24:17
QC5 快充设计指南:USB-PD PPS、2S电荷泵与选型调试
简介这份资料是高通官方发布的《Quick Charge 5 技术指南》英文原版面向手机硬件工程师、快充方案开发者、配件产品经理及关注充电技术的数码爱好者用于系统了解 QC5 的协议规范、架构设计与兼容性策略。压缩包内为 1 个 PDF 文件大小约 6.55MB内容以技术说明、架构示意图与厂商支持清单为主适合作为方案选型与规格对照的参考文档。文档系统阐述 QC5 的电压智能分配VSA、多极充电架构与先进电源管理芯片设计说明其最高 100W 功率输出、5 分钟充至 50% 的实现路径并给出向下兼容 QC4QC4 的适配逻辑。安全层面涵盖过热保护、过充保护与短路保护机制以及智能识别、动态调整充电速率以延长电池寿命的思路。同时列出 Alcatel、Asus、Oppo、Google、Samsung、Xiaomi 等终端厂商与 Anker、Aukey、Choetech 等配件品牌的支持情况。目前已有 148 人学习适合需要掌握快充协议细节与生态落地信息的读者查阅。1. Quick Charge 5 到底改了什么从高压直充到 2S 电荷泵2020 年那份 Quick Charge 5 的 how-to 资料里最容易被跳过的一行是适配器的输出电压范围3.3V20V后面还跟了一句 provision up to 40V。多数人的第一反应是电压越高充得越快QC5 的做法恰好相反。它把手机内部电池从 1S 改成 2S 串接让单节电芯承受的电压压力减半再用电荷泵按 2:1 把适配器送进来的高压转成电流翻倍的低压。同样是 20V/5A 输入电荷泵输出侧就是 10V/10A100W 的功率密度落进了电芯能接受的电流窗口。官方验证口径是 0%50% 用 5 分钟、0%100% 控制在 15 分钟以内测试对象是一块 2750mAh 快充电池、1.5C 倍率所有实现都压在 40°C 热阈值以下。这份资料实际面向三类人做手机电源子系统的工程师、做充电器与线缆的配件厂以及想知道自己买的充电头为什么跑不出标称功率的玩家。QC5 的关键不在更快而在它用 USB-PD PPS 信令把电压细分到 20mV 一档让充电全程贴着电池的安全边界走。2. USB-PD PPS 信令与 QC5 兼容矩阵怎么读QC5 是 Quick Charge 系列里第一次彻底放弃 D/D- 私有握手的版本。QC2.0、QC3.0 靠 USB 数据线的 D/D- 电平组合告诉充电器给我 9V 或 12VQC4 以后改用 USB-PD 的 BMC 编码在 CC 线上传消息。这个切换带来的直接后果是QC5 设备插到只支持 D/D- 的老充电器上时能跑回 QC3.0 的自适应电压模式但插到只支持 QC2.0 的充电器上就只剩固定的 5V/9V/12V 档中间那些细碎的电压台阶全没了。2.1 PPS 协商20mV 步进怎么落到 RDO 位域PPS 的玩法是源端先广播一组 Source Capabilities里面既有固定 PDO5V、9V、15V、20V也有可调的 APDOProgrammable Power Supply。APDO 声明一个电压区间和电流上限受端再用 Request 消息回一个 RDO指名要哪一档电压、多大电流。QC5 要求的电压步进是 20mV这比 QC3.0 的 200mV 细了整整十倍也是它能全程贴着电池安全边界、而不是在几个粗档位之间跳来跳去的原因。手头没有协议分析仪的时候我一般先用脚本把 RDO 位域算出来对一遍确认固件发出去的请求和预期一致。def build_pps_rdo(apdo_pos, mv, ma): 构造 PPS 请求的 RDO 位域简化版用于手算核对 apdo_pos: PPS APDO 在 Source Capabilities 中的序号占 bits 31:28 电压: bits 19:9单位 20mV 电流: bits 6:0单位 50mA volt mv // 20 # 9000mV - 450 curr ma // 50 # 3000mA - 60 return (apdo_pos 28) | ((volt 0x7FF) 9) | (curr 0x7F) print(hex(build_pps_rdo(2, 9000, 3000))) # 0x2003843c这段代码只做位域拼装不含消息头和 CRC实际发包时外层还要套 PD 的 SOP 帧格式。三个参数的含义是apdo_pos必须和源端广播的 APDO 顺序严格对应填错了充电器会直接回 Rejectmv会被整除到 20mV 网格所以填 9010 和填 9000 出来的结果一样都是 9000ma落在 50mA 网格上写 3010 会变成 3000。调试时如果发现充电器回了 Wait 或者 Reject先检查的就是这两个取整。2.2 源端能力矩阵哪些项是被标成 Required 的把资料里源端和受端两张能力表并排看能读出 QC5 对配件厂的真实约束。源端侧最硬的一条是QC5 配件必须保留 BC1.2、QC2.0、QC3.0 的向下兼容同时强制实现 PPS、5V/9V/15V/20V 四路固定 PDO以及温度感知 VDM。能力项USB-PD 2.0USB-PD 3.0Quick Charge 5BC 1.2 兼容可选可选必需QC2.0 / QC3.0 向下兼容无无必需PPS20mV 步进无可选必需5V 固定档必需必需必需9V 固定档仅 2.0r1必需必需15V 固定档仅 2.0r127W必需27W必需27W20V 固定档仅 2.0r145W必需45W必需45W温度感知 VDM无可选必需受端 OCP / OVP / OTP可选可选各 3 级受端那边的差别更直观QC5 手机把 QC2.0、QC3.0、QC4/4 兼容全部做成了集成项而且明确写了可以关闭。这句can be disabled是给 OEM 留的口子——如果某款机型为了省 BOM 或者出于认证考虑关掉老协议兼容插上老充电器就只剩 BC1.2 的 5V 慢充。2.3 三级保护与 Battery Saver 2.0资料里反复出现3 levels of voltage protection、3 levels of current protection、3 levels of thermal protection、3 levels of timer protection。三级的意思通常是对应适配器侧、线缆/连接器侧、系统与电池侧各一层任何一层触发都走独立的比较器不依赖主控固件轮询。Battery Saver Technologies 2.0、Type-C 温升缓解、Type-C 线缆质量检测这三项在 USB-PD 2.0/3.0 表里都标着 Not Defined是 QC5 才补上的受端能力。线缆质量检测这一项值得单独说PPS 的电压是动态变的线阻大的线在电流拉满时会产生明显压降主控看到的 VBUS 和充电器实际输出对不上容易误判成过流。常见做法是靠 CC 线上的 E-Marker 读线缆电流等级再结合实时压差做补偿。2.4 回落路径一块电池从老充电器上能拿到什么实际场景里回落顺序是这样的——插上 QC5 充电器先走 PPS 协商对端只支持 QC4 就退到固定 PDO遇到 QC3.0 充电器退到 3.6V12V、200mV 步进的自适应模式遇到 QC2.0 就锁在 5V/9V/12V再老一点只支持 BC1.2就是 5V 加 D/D- 短接识别电流上限 1.5A。这条链路决定了配件的兼容性验收至少要覆盖四档而不是只测一个 QC5 头。3. 按 QC5 规格做充电器与线缆选型规格表里最容易踩坑的不是功率而是最大电流 5Acaptive 5A这行小字。它意味着标准 Type-C 线缆的上限卡在 5A想突破就得用一体式captive线缆也就是线焊死在充电器上的那种。100W 这个数字只有在 20V/5A 的边界上才成立任何一环不达标整条链路都会被拉回到 9V 或者 5V。3.1 连接器与线缆的硬约束资料里 QC5 的连接器支持写的是 Type-A、Type-C 或其他。Type-A 能上 QC5 靠的是 QC2.0/3.0 那套 D/D- 兼容通路走不了 PPS所以 Type-A 端口的 QC5 充电器实际跑的是 QC3.0 级别的自适应电压。想拿满 PPS两端都得是 Type-C而且线缆得有 E-Marker。档位输出电压范围最小功率最大电压5V 最小电流最大电流通信方式QC2.05V / 9V / 12V15W非官方12V1.5A2AD/D-QC3.03.6V12V200mV18W12V3A3AD/D-QC33.3V20V最高 40V18W12V3A5AD/D-QC43.3V20V20mV18W(A) / 27W(B)12V(27W) / 15V3A5AUSB PDQC43.3V20V20mV18W(A) / 27W(B)12V(27W) / 15V3A5AUSB PDQC53.3V20V最高 40V45W20V3A5A一体式 5AUSB PD表格里 QC4/4 分了 A、B 两个等级18W 和 27W这个 Class 划分在 QC5 上被合并了——QC5 只规定了最小功率 45W不再分 A/B好处是配件的功率表现一致用户不用记那么多型号后缀。3.2 2S 电池与两级充电架构QC5 的核心变化是电池侧。1S 单节电芯的满充电压在 4.4V 左右要在 5 分钟内灌进 50% 电量电流会大到线损和发热都不可接受。改成 2S 串联后同样的能量对应更低的电流再配一级电荷泵做 2:1 降压升流就能把 20V/5A 变成 10V/10A。代价是充电 IC 的复杂度上去了前级要么是开关充电器要么是电荷泵QC5 是Charge Pump based同时保留 adaptive input voltage、INOV 4、Battery Saver 这三项。双电芯之间的均衡也必须做否则两节电芯的 SOC 会越充越分叉容量小的那节先到 4.4V整包就被迫降流。3.3 用一个脚本核对选型合规性配件立项阶段我会写一个小检查脚本把 BOM 里每个器件的参数丢进去先过一遍硬性条件省得等到送测才发现 20V 档没做或者温度感知 VDM 漏了。QC5_SOURCE_REQUIRED { bc12_compat: True, # 必须向下兼容 BC1.2 qc2_compat: True, # 必须兼容 QC2.0 qc3_compat: True, # 必须兼容 QC3.0 pps_step_mv: 20, # PPS 电压步进不得粗于 20mV fixed_rails_v: [5, 9, 15, 20], temp_sense_vdm: True, max_current_a: 5.0, # 标准线缆上限一体式可放宽 min_power_w: 45, } def check(bom): fails [] if bom[pps_step_mv] QC5_SOURCE_REQUIRED[pps_step_mv]: fails.append(PPS 步进过粗) missing set(QC5_SOURCE_REQUIRED[fixed_rails_v]) - set(bom[fixed_rails_v]) if missing: fails.append(f缺少固定电压档: {sorted(missing)}) if bom[max_power_w] QC5_SOURCE_REQUIRED[min_power_w]: fails.append(总功率低于 45W 门槛) if not bom[temp_sense_vdm]: fails.append(温度感知 VDM 未实现) return fails or [通过] print(check({pps_step_mv: 20, fixed_rails_v: [5, 9, 15, 20], max_power_w: 100, temp_sense_vdm: True}))脚本里的fixed_rails_v用的是集合差集顺序无关max_power_w是整机在所有端口同时工作时的总额不是单口峰值多口适配器最容易在这里翻车——单口标 100W双口同时插就掉到 45W45WPPS 档位得重新分配。min_power_w卡 45W 是 QC5 的门槛值低于这个数就只能按 QC4 申报。注意5A 上限是针对标准 Type-C 线缆的。用一体式线缆做到 5A 以上时线径、连接器温升和压降补偿都要重新测不能直接沿用 5A 的测试报告。4. 抓 PPS 协商与充电曲线的调试方法规格对完了不代表跑得通。QC5 的调试难点在于协商过程是动态的电压每 20mV 一档往上爬电流跟着电池电压和温度实时变静态测几个点看不出问题。得把整条曲线抓下来看。4.1 三种抓取手段的分工协议分析仪串在充电器和手机之间能看到完整消息流Source Capabilities → Request → Accept → PS_RDY以及中间的 Alert 和 Not Supported。这是判断为什么协商失败最直接的手段缺点是对 PPS 这种高频重协商的场景日志量很大。示波器配电流探头看的是物理层VBUS 台阶是不是干净、电流纹波有多大、切换档位时有没有过冲。QC5 的 20mV 步进折算到实际测试里变化很小所以更该关注的是大档位切换点比如从 9V 跳到 15V 的那一下。最省事的还是设备侧日志。Android 上可以读 typec 相关的内核节点桌面 Linux 上lsusb -v能看到 PD 能力很多平台的 PD 控制器还会把协商历史打到 dmesg 里。# 抓 PD 协商相关内核日志注意 dmesg 时间戳要和电量曲线对齐 dmesg -w | grep -iE pd|pps|typec|charger # 查看端口当前协商到的电压电流 cat /sys/class/power_supply/usb/voltage_now cat /sys/class/power_supply/usb/current_now cat /sys/class/power_supply/battery/temp # 列出 USB 设备树确认 PD 控制器被正确枚举 lsusb -tvoltage_now和current_now的单位是微伏和微安别当成毫伏直接读。dmesg -w会一直挂着最好用timeout 120 dmesg -w限时边充边看同时用另一路记录电量百分比事后按时间戳对齐。4.2 把充电日志切成 CC / CV 段有了 raw 日志下一步是算实际指标0%50% 用了多久、峰值电流多少、温控什么时候介入。import csv def analyze(path, soc_col3, t_col0, v_col1, i_col2, temp_col4): rows [] with open(path) as f: for r in csv.reader(f): try: rows.append((float(r[t_col]), float(r[v_col]), float(r[i_col]), float(r[soc_col]), float(r[temp_col]))) except ValueError: continue # 跳过表头和非数值行 t0 rows[0][0] marks {} peak_i, peak_t 0, 0 for t, v, i, soc, temp in rows: peak_i max(peak_i, i) peak_t max(peak_t, temp) for target in (50, 80, 100): if soc target and target not in marks: marks[target] t - t0 return {peak_current_A: peak_i / 1000, peak_temp_C: peak_t, time_to_soc: marks} print(analyze(charge_log.csv))t_col等索引按自己日志的列顺序改i_col的单位假定是毫安脚本里除 1000 转成安培。输出的time_to_soc是每到一个 SOC 节点的时间戳差值直接和 5 分钟、15 分钟这两个目标对比。peak_temp_C超过 40°C 就说明温控已经在削电流了这时候看到的不是充电器的能力上限而是散热设计的上限。4.3 常见失败模式对照现象常见原因验证方法一直停在 5V协商不上升压源端未声明 PPS APDO或线缆无 E-Marker看 Source Capabilities 里有没有 APDO只上到 9V 固定档apdo_pos填错被源端 Reject 后回落到固定 PDO对比 RDO 里的 APDO 序号拉满几秒后电流腰斩温控介入或线缆压降触发补偿限流看peak_temp_C和 VBUS 实时值50% 之前就掉到 15W 以下2S 电芯不均衡单节先到上限分别测两节电芯电压设备枚举成 Qualcomm HS-USB QDLoader 9008主控进入 EDL 下载模式通常是 VBUS 掉电或固件跑飞不是快充协商问题抓 VBUS 掉电曲线先排查供电瞬态最后一行是调试台上真实会遇到的干扰项。看到Qualcomm HS-USB QDLoader 9008这个枚举名第一反应不该是去调 PPS 参数而是看充电器在切档瞬间有没有把 VBUS 拉塌——大档位切换时的负载跳变会让某些电源设计撑不住主控欠压复位后进了下载模式。这种问题在协议日志里干干净净只有示波器能抓到。5. 多口适配器功率再分配与温控阈值调参单口跑通 QC5 之后真正的工程问题才出现一个 100W 的充电器有两个 C 口同时插手机和笔记本总预算怎么分QC5 的 PPS 是持续重协商的不是插上就定死这给了动态分配的空间——但也在协议栈里引入了额外的状态机。常见的做法是给每个端口设优先级和保底功率然后在总预算内把余量分给需要快充的口。下面这段分配逻辑可以直接改成固件里的策略表。TOTAL_BUDGET_W 100 # 适配器总额定功率 GUARANTEE_W {c1: 45, c2: 30} # 每口保底低于此值不再让渡 PRIORITY [c1, c2] def allocate(demand, totalTOTAL_BUDGET_W, guaranteeGUARANTEE_W): demand: {c1: 需求瓦数, c2: ...}返回各口实际分配 result {p: min(demand[p], guarantee[p]) for p in demand} left total - sum(result.values()) for p in PRIORITY: # 按优先级吃余量 if left 0: break extra min(demand[p] - result[p], left) if extra 0: result[p] extra left - extra return result print(allocate({c1: 90, c2: 65})) # {c1: 70, c2: 30}GUARANTEE_W是保底防止某个端口被饿到协商不出任何 PD 档位PRIORITY决定余量先给谁一般把手机会先充满的口放前面因为手机的快充窗口短、笔记本的持续负载长。left为负的时候说明保底之和已经超过总预算这时候要在策略层直接把低优先级口降到 5V/2A而不是让它们一起去协商然后失败。温控阈值的调参思路和功率分配相反。QC5 的热阈值在官方测试里定在 40°C那是电芯表面温度上限不是充电器的壳温上限。实际产品里我会把回退做成带滞环的两级电芯到 38°C 时先把 PPS 目标电流降 20%回到 35°C 再放回去到 42°C 直接切到固定 9V 档并禁用 PPS 重协商。只用一个阈值来回切的写法在实验室里看着没问题到了夏天户外就会连续触发几十次削流电池侧的日志会碎成一堆短脉冲反而伤循环寿命。滞环宽度一般取 3°C 上下具体值要拿整机的热模型跑一遍再定。本文还有配套的精品资源点击获取

看完文章,想为自己的企业也做一次专业网站诊断?

尧图顾问免费为您评估现有网站,并给出建站/改版建议与报价方案。

免费获取方案