QC 和 PD:关于你所不知道的快充

http://www.sohu.com/a/276214250_465976
2018-11-18 06:02

当我们使用支持 PD 或者 QC 快充协议的电源适配器给数码设备充电时,你可能并不会意识到,快充标准经历了怎样的漫长进化之路。

运算性能和提升和电池技术的停滞之间的矛盾早就了数码产品用户(尤其是智能手机用户)对快速充电和无线充电的原始需求,前者可以缩短充电时间,后者可以利用碎片化时间为手机补充电量。快充和无线充电都可以提高充电效率,但是一直以来,Qi 在无线充电标准上一家独大,但是快充标准却很难有统一。

在所有的快充标准中,高通 QC 是最早形成、同样也是影响力最大的第三方快充协议。

高通是最先注意到智能手机潜在的快充需求的厂商之一。借用骁龙 SoC 的先发优势,从 2013 年开始高通推出并逐步完善了 QC 快充协议,成为了如今快充领域不能被忽视的玩家之一。

在 2012 年 1 月完成对 Summit Microelectronics 的收购之后,高通于 2013 年推出了第一版 QC 快充协议——QC 1.0。在 QC 快充最原始的 1.0 阶段,高通的快充方案也显得简单粗放:直接使用 5V 2A 的 10W 充电功率。

通常而言,USB-IF(USB Implementers Forum,非盈利 USB 标准制订组织)发布的 USB-DCP 协议?规定的 Micro-USB 接口的输入电流为 1.5A,而不是高通推出的 QC 1.0 快充标准的 2A。当时 Android 机型普遍配备的 5 针 Micro-USB 的电流传输极限是 2A,而业界的共识是预留一定的余量以确保充电安全,所以绝大部分机型的正常充电电流为 1.5A,充电功率为 7.5W(5V 1.5A)。而 QC 1.0 仅仅是简单地将充电电流提升到 2A,就将智能手机的充电效率在 7.5W 的基础上提升了 1/3。

随着智能手机对快充需求的进一步膨胀,QC 1.0 在 2014 年迎来了升级。

Micro-USB 的 2A 电流传输上限限制意味着高通无法再通过提高电流实现更高功率充电,于是,高通转而寻求通过提高输入电压来提供充电功率 ※。QC 2.0 将手机的输入电压增加到 4 档,除了 5V 的标准电压之外,还增加了 9V、12V、20V 三挡快充电压,依然使用 Micro-USB 的 2A 上限电流,最大的充电功率理论上可以达到 40W。

QC 2.0 必须使用专用的充电适配器,但是为了保证适配器向下支持 5V 设备,高通在 QC 2.0 协议中引入了握手协议。QC 2.0 的握手协议通过 Micro-USB / USB-A / USB-C 接口的 DP(D+,Digital Positive)和 DM(D-,Digital Minus)两脚数据端子通信,智能手机主动向 QC2.0 充电器申请高电压输入,在经过确认之后能够将最大充电电压提高到 20V。

必须使用专用充电器的 QC2.0 成为了上游和代工行业的救命稻草,自此快充行业开始了爆发式的增长。

※ OPPO 在 Find 7 中采用的 VOOC 闪充实际上是改造了 Micro-USB 接口,将 Pin 增加到了 7 针,额外的两根接触针用于传输电流。所以,Find 7 必须专用的 VOOC 闪充充电器和充电线。

虽然充电功率从 QC 1.0 的 10W 急速飙升到 40W,但是 QC 2.0 实际上依然非常原始。

由于手机内部的锂离子电池实际可接受的充电电压为 4.35V(少部分手机的锂离子电池充电电压为 4.2V 和 4.4V),所以实际上,无论手机 USB 接口的输入电压是 5V 还是 20V,手机内部必须配备降压电路将输入电压降至 4.35V。但是 20V 电压在手机内部完成 4.35V 的降压转换会产生大量的热量,造成手机充电温度过高,极易发生燃爆风险。

所以,在 2015 年高通发布了更成熟的 QC 3.0 协议。

QC 3.0 协议中,高通采用了 INOV 电压管理算法和机制(Intelligent Negotiation for Optimum Voltage,最佳电压智能协商),从 3.6V 起步,结合实时的电压、电流、电池温度,INOV 可以保持与充电适配器的通信,以 200mV 的调幅步进自适应增降电压,自动实现最佳充电功率的传输。

在已现雏形的 QC 3.0 的基础上,高通于 2016 年 11 月发布了 QC 4.0,并仅仅于 7 个月之后的 2017 年 6 月快速更新到了 QC 4+。

先行发布的 QC4.0 采用了更精细的 INOV 机制,调幅步进从 QC3.0 的 200mV 调整为 20mV,而且支持 Dual Charge 技术,充电速度提升 20%,充电效率提升 30%。划重点的是,QC 4.0 开始支持 USB-C 接口和 USB PD 协议。

紧随 QC 4.0 升级的 QC 4+ 协议进行了更大大幅更新,包括:

  • Dual Charge:支持额外一颗电源管理芯片,充电电压转换效率更高、充电速度更快
  • 智能热量平衡:优化 Dual Charge,自动分配电流路径,优化电量输送
  • 高级安全功能:同时监控设备适配器和端口的温度,防止线路过热、短路,避免损坏 USB-C 接口

至此,QC 发展到了现今的成熟阶段。而在 QC 发展的过程中,PD 协议同样在逐步完善。

早在 2012 年 7 月,USB-IF 就已经发布了基于当时普遍存在的 USB-A 和 USB-B 接口的 USB PD(USB Power Delivery)1.0 供电规范,描绘了 USB 3.0 和 USB 2.0 接口最高可达 100W 供电能力的美好想象,但是直到 USB-C 接口的出现,这一想象才开始成为现实。

在高通 QC 2.0 版本发布的 2014 年,USB-IF 同时发布了 PD 2.0 协议以及其载体——USB Type-C 1.0 接口标准。与 Micro-USB 相比,USB-C(USB Type-C)接口最大支持 20V 5A 的电力传输,天然更适合快充。但是由于此时 USB-C 接口并非智能手机主流接口,所以高通 QC 协议为首的第三方快充协议依然是市场主流。甚至在 2017 年 2 月 USB-IF 发布基于 PD 2.0 协议优化的 PD 3.0 协议时,各种第三方快充协议占地称王的局面也没有明显改善。

直到 2017 年 5 月 USB-IF 推出 USB PD 3.0 协议的 PPS(Programmable Power Supply,可编程电源供应)规范,才最终标志了快充标准的最终统一。

在 PPS 规范加入了对高压低电流和低压高电流两种快充方式的支持,同时学习 QC 4+ 的 INOV 引入了 20mV 调幅步进自适应调整电压的机制。不过这并非 PPS 的全部,PPS 规范中影响最大的一点是,USB-IF 利用自己规则制定者的身份,强行定义了 USB 接口不允许以 USB PD 以外的协议实现电压调整,但是同时,USB-IF 允许第三方快充协议通过兼容 USB PD 的方式继续存在。这一杀手锏意味着的 USB-IF 只给了第三方快充协议两个选择:死亡,或者被收编。

快充的充电阶段可以分为恒定电流预充电(小电流)、恒定电流快速充电(大电流)、恒定电压充电(电流由大变小直至充电完成),无论是高压低电流(QC 属于此类)抑或是低压高电流,都必然需要经由 USB-C 接口调整电源适配器的输入电压。所以,PPS 规范宣布禁用非兼容 PD 协议的第三方快充协议调整 USB 电压的权限,无疑是对高通们的最终通牒。

但是 USB-IF 并未堵死所有第三方快充协议的活路,只要承认 USB PD 的「法币」地位、接受被收编,第三方快充协议依然可以在自己的小王国里仿照苹果 MFi 向配件厂商(或者说用户?)收取授权费。返回搜狐,查看更多

[转帖]QC 和 PD:关于你所不知道的快充的更多相关文章

  1. [转帖]你所不知道的C和C++运行库

    [C-C++]你所不知道的C和C++运行库 https://blog.csdn.net/humanking7/article/details/85887884 原作者也是转的blog 最近一个物理机上 ...

  2. 你所不知道的setInterval

    在你所不知道的setTimeout记载了下setTimeout相关,此篇则整理了下setInterval:作为拥有广泛应用场景(定时器,轮播图,动画效果,自动滚动等等),而又充满各种不确定性的这set ...

  3. 你所不知道的setTimeout

    JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成.它们向任务队列添加定时任务.初始接触它的人都觉得好简单 ...

  4. 你真的会玩SQL吗?你所不知道的 数据聚合

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  5. 你所不知道的linq(二)

    上一篇说了from in select的本质,具体参见你所不知道的linq.本篇说下from...in... from... in... select 首先上一段代码,猜猜结果是什么? class P ...

  6. 你所不知道的SQL Server数据库启动过程,以及启动不起来的各种问题的分析及解决技巧

    目前SQL Server数据库作为微软一款优秀的RDBMS,其本身启动的时候是很少出问题的,我们在平时用的时候,很少关注起启动过程,或者很少了解其底层运行过程,大部分的过程只关注其内部的表.存储过程. ...

  7. 你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)

    前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的一些问题和解决方法,可点击查看,我们此篇主要介绍的是SQL Server启动过程中关于用户数据库加载的流程, ...

  8. Android中Context详解 ---- 你所不知道的Context

    转自:http://blog.csdn.net/qinjuning/article/details/7310620Android中Context详解 ---- 你所不知道的Context 大家好,  ...

  9. 你所不知道的html5与html中的那些事第三篇

    文章简介: 关于html5相信大家早已经耳熟能详,但是他真正的意义在具体的开发中会有什么作用呢?相对于html,他又有怎样的新的定义与新理念在里面呢?为什么一些专家认为html5完全完成后,所有的工作 ...

随机推荐

  1. localstorage和cookie的设置方法和获取方法

    1.设置localStorage window.localStorage.setItem(vm.mobileSelf,JSON.stringify(contactInfo)); vm.mobileSe ...

  2. mysql使用replace和on duplicate key update区别

    实际业务使用中,有时候会遇到插入数据库,但是如果某个属性(比如:主键)存在,就做更新.通常有两种方式:1.replace into  2.on duplicate key update 但是在使用过程 ...

  3. linux安装phantomjs,-bash: /usr/local/bin/phantomjs: is a directory解决方案

    首先安装依赖——fontconfig和freetypeyum install fontconfig freetype2在官网上下载对应版本的包http://phantomjs.org/download ...

  4. 服务器部署docker

    docker简介 可以把docker是一个容器,可以让开发者将自己的项目部署到这个容器中,最常用的场景是将自己的后端项目部署到服务器的时候会将其打入docker镜像中,可以理解为一个开销更小的虚拟机. ...

  5. make 实例 二 V56

    ######################################################################### # # Makefile used for buil ...

  6. GWAS这十年 | 10 Years of GWAS Discovery: Biology, Function, and Translation

    相关文章: A Unified Framework for Association Analysis with Multiple Related Phenotypes 太重要了,不得不单独拿出来分析一 ...

  7. Linux下用jar命令替换war包中的文件【转】

    问题背景:在Linux环境上的weblogic发布war包,有时候只是修改了几个文件,也要上传整个war包,这样很费时间,因此整理了一下Linux环境,更新单个文件的方法. 1.如果要替换的文件直接在 ...

  8. linux网卡参数NM_CONTROLLED【转】

    安装操作系统时,自动生成的网卡配置文件,/etc/sysconfig/network-scripts/ifcfg-eth0里面有如下的参数:NM_CONTROLLED=yes说明 Network ma ...

  9. Mac 终端显示git分支

    1 进入你的home目录 cd ~ 2 编辑.bashrc文件 vi .bashrc 3 将下面的代码加入到文件的最后处 function git_branch { branch="`git ...

  10. Java 并发基础常见面试题总结

    1. 什么是线程和进程? 1.1. 何为进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的.系统运行一个程序即是一个进程从创建,运行到消亡的过程. 在 Java 中,当我们启 ...