
摘要本文系统解析高通快充协议的发展脉络深入对比QC 2.0、QC 3.0、QC 4.0三代快充在电压、电流、功率、充电效率与发热控制上的核心差异并附上基于 PWM 调压的实战 C 代码与常见问题排查方案帮助硬件工程师与产品从业者从原理到落地全面掌握 QC 快充技术。快充已成为智能手机的刚需而高通 Quick ChargeQC协议正是这一领域的行业标杆。从 QC 2.0 到 QC 4.0每一次迭代都带来充电速度与效率的跃升深刻影响着充电器、数据线、移动电源等配件的设计与选型。理解 QC 协议是硬件工程师和产品从业者绕不开的必修课。本文将从概念解析、版本对比、实战代码、常见问题排查四个方面带你系统掌握 QC 2.0、QC 3.0、QC 4.0 的核心差异与落地实现从原理到实践一次讲透。QC 2.0、QC 3.0、QC 4.0是出现在我们手机配件行业的高频词然而在与客户深入交流后发现其实许多客户对它们的概念及区别并不十分了解。今天小龙就来系统地给大家梳理一下这个知识点首先给大家解释一下概念QC即Quick Charge是美国高通公司专为配备Qualcomm骁龙处理器的终端而研发的快速充电技术。截至目前Qualcomm已经发布了四代快速充电技术分别为Quick Charge 1.0Quick Charge 2.0Quick Charge 3.0和Quick Charge 4.0。以下图表为大家列出三个版本的快充所能支持的电压最大电流及最大功率概念有些晦涩下面小龙用最简短通俗的语言来解释一下三者之间的区别QC2.0:支持5V/9V/12V固定电压最高达24W12V/2A最大支持电流2AQC3.0:支持3.6V-12V波动电压最高达36W12V/3AQC 3.0相较于QC 2.0优势在于1充电效率提升38%充电速度提升27%发热降低45%大约35分钟将普通手机充电到80%。2QC 2.0因为只能在3种固定电压中切换切换幅度大会导致手机电池发热。QC 3.0采用波动电压有智能自动调节电压的功能保护手机电池避免发热。电量到达90%后自动切换为涓流充电。QC4.0:支持3.6-20V波动电压最高达100W (20V/5A) 相对于QC 3.0, 充电速度提升20%效率提升30% 加入了对PDType-C快充的支持。15分钟充满50%。INOV智能调节输入电压。为了让大家更直观地对比 QC 2.0、QC 3.0 和 QC 4.0 的差异下面用一张表格来汇总对比项QC 2.0QC 3.0QC 4.0实际意义支持电压5V/9V/12V 固定电压3.6V-12V 波动电压3.6V-20V 波动电压电压范围越宽适配不同电池电量的能力越强充电过程越灵活最大电流2A3A5A电流越大单位时间能输送的电量越多充电越快最大功率24W36W100W功率越高充电速度上限越高尤其适合大电池容量的设备充电速度提升基准较 QC 2.0 提升 27%较 QC 3.0 再提升 20%速度提升意味着用户等待时间更短体验更好充电效率提升基准较 QC 2.0 提升 38%较 QC 3.0 再提升 30%效率越高电能转化为电池储能的损耗越小发热也更少发热降低基准较 QC 2.0 降低 45%通过 INOV 智能调节进一步控温发热越低对电池寿命的损害越小充电也更安全是否支持 PD不支持不支持支持 PDType-C 快充支持 PD 意味着兼容性更强可与更多 Type-C 设备通用快充协议电量到达90%自动转化成涓流充电, 有效保护手机电池。USB Type-C是一种USB接口外形标准拥有比Type-A及Type-B均小的体积既可以应用于PC主设备又可以应用于外部设备从设备如手机的接口类型 [1] 。USB Type-C有4对TX/RX分线2对USBD/D-一对SBU2个CC另外还有4个VBUS和4个地线 [2] 。当地时间2022年6月7日欧洲议会和欧洲理事会一致同意将自2024年秋天起在欧盟境内统一使用Type-C接口用于移动设备充电。Type-C还提供了2条CC线和2条SBU线。CC线主要用于Power Delivery 模块下简称PD的通讯CC线首先是用来判断设备插入的方向正插或反插如果是正插主机使用CC1来和设备通讯反插使用CC2可以看到CC使用的是单线协议。SBU线在DP功能开启时化身为DP协议中的AUX_P/AUX_N差分线它的极性是可以根据正反插方向修改的负责传输设备的DPCDEDID等关键信息当然如果接收端只需要DP信号不需要USB 3.1信号那DP可以利用全部4对TX/RX差分线做输出从而实现最多4lanes的DP输出提供高达32.4Gbps的总输出带宽每条lane可以输出8.IGbps轻松实现5Kx3K 60帧视频甚至最高可达8K×4K 60帧视频4:2:0数据这种模式就是DPonly模式 [2] 。另外为了兼容USB2.0Type-C还保留了USBD/D-信号供USB 2.0设备使用所以只需改用Type-C的接口USB2.0甚至USB 1.0设备也可以支持正反面插入。值得一提的是使用USBD/D-跟上面的DP only 模式配合可以实现DPUSB2.0模式。DP占用4对TX/RX差分线USB仅使用D/D- [2] 。通常情况下USB2.0差分信号只会连接其中一边因USB Type-C Plug无B6、B7。USB3.1只用到2对TX/RX差分线作为数据线正插时连接TX1/RX1反插时连接TX2/RX2可以看到任意情况下都会有2对差分线是没有被使用的DP交替模式就是把DP信号加载到这2对“多余”的差分线上从而实现USB 3.1DP同时工作为了数据交换的需要T电子设备都提供了USB接口无论是PC、平板点还是手机甚至显示设备。几乎无一例外都有USB接口。然而由于技术标准的限制使得USB插头具有“方向性”插入时如果方向不对要么插不进要么插坏接口或接头。在这种情况之下苹果为它的设备设计了Lightning [4] 接口由于两个方向都可以插入用户不必再担心插错问题。除了苹果设备外其实T业界也出台了一个类似的接口标准USB Type-C [4]USB Type-C的风潮最早是由苹果所领起的新macBook的问世将 USB Type-c。这个强大的技术带入到我们视野当中。 USB Type-C是一个接口规范它由Type-C插头和Type-C插座组成。在各种移动设备和PC中Type-C成为发展前景最广的数据接口。随着Tpe-C技术的逐渐成熟2017年各类新上市电子产品也陆续选择配置全Type-C接口 [4] 。事实上Type-C最直观的优势就是让你彻底摆脱插线的烦恼其先天出色的正反可插接口设计不会再出现错插或者失误之后导致的部件受损情况。更重要的是Type-C接口有着强大的兼容性因此成为能够连接PC、游戏主机、智能手机、存储设备和拓展均等一切电子设备的标准化接口并实现数据传输和供电的统一例如将两台显示设备通过一条Type-C线紧密结合在一起使用 [4] 。除此之外Type-C还支持USB3.1标准。该标准供电最大100W电压和电流都会提高降低了编码耗从3.0的20%降低为3%。换句话说用户能够迅速地通过Type-C传输数据和视频或者更快地充电。该标准还可以让用户用自己的手机为其他设备充电。而对于显示器来讲使用Type-C进行数据传输的时候无需再另外使用一条电源线给显示器供电解决了桌面线材凌乱的问题即使相对高端的HDMI和DP接口也无法使用/*************笔记**************** 1、本QC方案采用PWM调节电压。 2、 3、 4、 5、 ***********************************//* -----------------------------------------宏定义-----------------------------------------*/#defineVoltage_06_PWM18//0.6V的占空比/* -----------------------------------------头文件-----------------------------------------*/#includemain.h/* -----------------------------------------结构体定义-------------------------------------*//* -----------------------------------------全局变量定义-----------------------------------*/xdatauint8_tQC_Mode_Choice0;//0--不使用QC协议 1--QC2.0 2--QC3.0xdatauint8_tQC20_Voltage_Choice0;//0--默认5V 1--9V 2--12V 3--20V/* -----------------------------------------应用程序---------------------------------------*/voidQC_Voltage_Switch(void){if(QC_Mode_Choice1)//QC2.0{switch(QC20_Voltage_Choice){case0://D --0 D- --0 5V 或者 握手重置USBDP_PWM(0);USBDM_PWM(0);break;case1://D --3.3 D- --0.6 9VUSBDP_PWM(100);USBDM_PWM(Voltage_06_PWM);break;case2://D --0.6 D- --0.6 12VUSBDP_PWM(Voltage_06_PWM);USBDM_PWM(Voltage_06_PWM);break;case3://D --3.3 D- --3.3 20V 如果不支持则无变化USBDP_PWM(100);USBDM_PWM(100);break;default:break;}}elseif(QC_Mode_Choice2)//QC3.0{//D --0.6 D- --3.3 进入QC3.0模式或者连续模式 (充电头如果不支持那么)USBDP_PWM(Voltage_06_PWM);USBDM_PWM(100);}}voidQC30_Add_Voltage(void){if(QC_Mode_Choice2){//D --3.3 --100ms --D --0.6 QC3.0模式 增加电压USBDP_PWM(100);os_wait(K_IVL,100,0);//500msUSBDP_PWM(Voltage_06_PWM);}}voidQC30_Reduce_Voltage(void){if(QC_Mode_Choice2){//D- --0.6 --100ms --D- --3.3 QC3.0模式 减少电压USBDM_PWM(100);os_wait(K_IVL,100,0);//500msUSBDM_PWM(Voltage_06_PWM);}}#ifndef_QC3_0_H#define_QC3_0_H/* -----------------------------------------宏定义-----------------------------------------*/#defineConfig_USBDP_CH4// 0 PWM0 1 PWM1 2 PWM2 3 PWM3 4 PWM4 5 PWM5#defineConfig_USBDM_CH4// 0 PWM0 1 PWM1 2 PWM2 3 PWM3 4 PWM4 5 PWM5#defineUSBDP_PWM(Num)PWM_InputData(Config_USBDP_CH,(((Config_PWM_Cycle1)/100)*Num));//Num代表百分比#defineUSBDM_PWM(Num)PWM_InputData(Config_USBDM_CH,(((Config_PWM_Cycle1)/100)*Num));//Num代表百分比/* -----------------------------------------头文件-----------------------------------------*/#includemain.h/* -----------------------------------------结构体定义-------------------------------------*//* -----------------------------------------全局变量定义-----------------------------------*/externxdatauint8_tQC_Mode_Choice;//0--不使用QC协议 1--QC2.0 2--QC3.0externxdatauint8_tQC20_Voltage_Choice;//0--默认5V 1--9V 2--12V 3--20V/* -----------------------------------------应用程序---------------------------------------*/voidQC_Voltage_Switch(void);voidQC30_Add_Voltage(void);voidQC30_Reduce_Voltage(void);#endif/********************************************* 函数名System_Configuration 功 能内外设初始化 形 参 返回值 备 注 作 者薛建强 时 间2019/06/06 **********************************************/voidSystem_Configuration(void){uint8_ttemp0;SystemReg.RunningState1;SystemReg.RunningState_Flag0;Pwm_Configuration();// PWM初始化Exit_Configuration();// 端口中断使能Adc_Configuration();// ADC初始化SystemInit.ADC1;Key_Configuration();// 按键初始化SystemReg.First_Start0;LowPower_Tmr10;SystemReg.RunningState1;//关机}/********************************************* 函数名StartRunTask 功 能OS运行起始任务 形 参 返回值 备 注 作 者薛建强 时 间2019/06/06 **********************************************/voidStartRunTask()_task_0{System_Configuration();// 初始化系统os_create_task(1);//创建任务1os_create_task(2);//创建任务2QC_Voltage_Switch();//选择充电协议for(;;){if(SystemInit.PWM0){PWM_INIT();//初始化灯光SystemInit.PWM1;}if(SystemInit.QC_Handshake0)//QC协议握手{USBDP_PWM(Voltage_06_PWM);//D 0.6VUSBDM_PWM(0);//D- 0Vif(time250time7){time0;QC_Voltage_Switch();//选择充电协议SystemInit.QC_Handshake1;}}os_wait(K_IVL,200,0);//500ms}}/********************************************* 函数名StartKeyTask 功 能按键扫描 形 参 返回值 备 注 作 者薛建强 时 间2019/06/06 **********************************************/voidStartKeyTask(void)_task_1{uint8_tKEY_state0;uint16_ttime0;uint8_ti0;os_wait(K_IVL,30,0);//0.01s100msfor(;;){KEY_stateKey_Scan(Key1_Type,1);switch(KEY_state){case1://短按if(SystemInit.QC_Handshake1){if(QC_Mode_Choice1){if(QC20_Voltage_Choice3QC20_Voltage_Choice2)QC20_Voltage_Choice0;if(QC20_Voltage_Choice3){QC20_Voltage_Choice0;}QC_Voltage_Switch();//选择充电电压}elseif(QC_Mode_Choice2){QC30_Add_Voltage();}}break;case2://长按break;case3://双击if(SystemInit.QC_Handshake1){if(QC_Mode_Choice3QC_Mode_Choice2)QC_Mode_Choice0;if(QC_Mode_Choice3){QC_Mode_Choice0;}QC_Voltage_Switch();//选择充电电压}break;default:break;}KEY_stateKey_Scan(Key2_Type,2);switch(KEY_state){case1://短按if(SystemInit.QC_Handshake1){if(QC_Mode_Choice1){if(QC20_Voltage_Choice0){--QC20_Voltage_Choice;}QC_Voltage_Switch();//选择充电电压}if(QC_Mode_Choice2){QC30_Reduce_Voltage();}}break;case2://长按break;case3://双击if(SystemInit.QC_Handshake1){if(QC_Mode_Choice3QC_Mode_Choice2)QC_Mode_Choice0;if(QC_Mode_Choice3){QC_Mode_Choice0;}QC_Voltage_Switch();//选择充电电压}break;default:break;}os_wait(K_IVL,10,0);//0.01s10ms}}/* -----------------------------------------结构体定义-------------------------------------*/typedefstruct{uint8_tRunningState:2;//0开机 1低功耗待机uint8_tRunningState_Flag:2;//0关闭效果 1开机/2关机效果uint8_tFirst_Start:2;//初始化完成 0--初始化完成 1--未初始化uint8_tMode:2;//0-- 1-- 2--uint8_tLevel:3;//uint8_t:3;}SYSTEM_REG;typedefstruct{uint8_tADC:1;//0--未初始化 1--已经初始化 (外围模拟采集)uint8_tPWM:1;//0--未初始化 1--已经初始化 (外围模拟输出)uint8_tLED_And_LampEN:1;//0--未初始化 1--已经初始化 (LED指示灯及灯光使能脚)uint8_t:5;}SYSTEM_INIT;/* -----------------------------------------全局变量定义-----------------------------------*/externSYSTEM_REG SystemReg;externSYSTEM_INIT SystemInit;常见问题与排查在实际使用 QC 2.0、QC 3.0、QC 4.0 快充方案的过程中难免会遇到一些异常情况。下面小龙整理了 5 个最常见的问题并给出对应的排查步骤和解决方案供大家参考。问题一QC 握手失败无法进入快充模式现象手机插上充电器后只显示普通充电5V始终无法触发快充协议。排查步骤确认充电器本身是否支持 QC 协议部分普通充电器只支持 5V 输出检查数据线是否为支持 QC 快充的线材劣质或过长的线材压降过大会导致握手失败用万用表测量 D / D- 电压确认握手时 D 是否被拉高到 0.6V、D- 是否拉低到 0V检查 MCU 的 PWM 输出通道配置是否正确确认USBDP_PWM与USBDM_PWM对应的通道号与实际硬件接线一致。解决方案更换支持 QC 的充电器和数据线核对代码中Config_USBDP_CH、Config_USBDM_CH的通道配置若使用本文的 PWM 方案确认Voltage_06_PWM的占空比参数0.6V 对应 18%是否与硬件分压匹配。问题二充电电压不稳输出电压波动大现象充电过程中电压频繁跳变手机显示充电电流忽大忽小。排查步骤用示波器观察 VBUS 输出波形确认是否存在明显纹波检查 QC 3.0 连续调压模式下QC30_Add_Voltage与QC30_Reduce_Voltage的步进间隔是否过短导致电压调节过于频繁确认负载端手机是否在持续请求电压变化部分手机在电量较低时会频繁请求升压检查反馈回路中的采样电阻和分压电阻是否虚焊或阻值漂移。解决方案适当增大电压调节的间隔时间如将os_wait的延时从 100ms 调整为 200ms检查并补焊反馈回路元件在 VBUS 输出端并联合适的滤波电容以降低纹波。问题三充电过程中发热严重现象充电头、数据线或手机明显发烫甚至触发过热保护。排查步骤确认是否长时间处于大功率充电状态如 QC 4.0 的 100W 满功率输出检查充电环境温度是否过高或充电器散热条件是否良好确认是否使用了劣质线材线阻过大会导致线材本身发热检查 QC 3.0 / QC 4.0 的涓流切换逻辑是否正常电量到达 90% 后是否自动降低充电电流。解决方案避免在高温环境下长时间快充更换线阻更低的优质数据线确认代码中电量到达 90% 后自动切换涓流充电的逻辑已正确实现若发热仍严重可适当降低最大充电功率档位。问题四QC 4.0 无法与 PD 设备正常协商现象使用 QC 4.0 充电器给支持 PD 协议的设备充电时无法触发 PD 快充或协商失败后回落到 5V。排查步骤确认充电器是否同时支持 QC 4.0 与 PD 协议且当前处于 PD 协商模式检查 Type-C 接口的 CC1 / CC2 线是否连接正确PD 协商依赖 CC 线通讯确认设备端是否支持 PD 协议部分仅支持 QC 的设备无法与 PD 充电器协商检查 CC 线上的上拉/下拉电阻配置是否符合 PD 规范。解决方案确认充电器与设备协议兼容检查 CC 线连接及电阻配置若设备仅支持 QC可手动切换回 QC 模式充电。问题五按键切换电压档位无响应现象按下按键后充电电压没有按预期切换如 QC 2.0 的 5V/9V/12V 无法切换。排查步骤确认按键扫描逻辑是否正常检查Key_Scan返回值是否与按键动作对应检查QC_Mode_Choice与QC20_Voltage_Choice的状态值是否在按键后正确更新确认QC_Voltage_Switch函数是否被正确调用且 PWM 输出已更新检查按键硬件电路确认是否存在抖动或接触不良。解决方案在按键扫描中增加去抖处理确认状态机切换逻辑正确如QC20_Voltage_Choice在 0→1→2→3 之间循环检查按键硬件连接必要时更换按键。以上就是 QC 2.0 / 3.0 / 4.0 使用中最常见的 5 个问题及排查思路。如果大家在实践中遇到其他问题欢迎在评论区留言交流小龙会继续补充完善。