用小规模器件实现QC2.0从机握手协议欺骗

2019-07-13 22:22发布

这几天试了一下从QC2.0的移动电源上获得9V和12V的输出。
常规做法似乎是用单片机来做握手协议。这次电路里我不想专门为这个功能烧写一段程序了,所以用几个小规模器件实现了握手。

Quick Charge 2.0 握手协议

网上能搜到的QC2.0握手协议大概是这样:
0. 供电方短接D+和D-;
1. 受电方插入后,在D+输出0.6V;
2. 供电方检测到这个电压后,把D-与D+断开,并将D-下拉至0V;
3. 受电方检测到D-下降后,按需要的电源电压在D+和D-上输出: 电压 D+ D- 5V 0.6V 0V 9V 3.3V 0.6V 12V 0.6V 0.6V 20V 3.3V 3.3V 4. 供电方给出对应电压。 因此如果要输出9V,受电方需要以下操作: 状态 D+ D- 行为 0 悬空 悬空 初始状态,之后主动进入状态1 1 0.6V 输入检测 等待D-检测到下降至0.325V以下,进入状态2 2 3.3V 0.6V 已进入QC模式

具体实现

首先给D+和D-分别接个模拟开关吧。 模拟开关 上面状态机就变成了 S0 S1 D+ D- 行为 0 0 悬空 悬空 初始状态,之后主动将S1置1 0 1 0.6V 输入检测 等待D-检测到下降至0.325V以下,之后将S0置1 1 1 3.3V 0.6V 已进入QC模式  
S1的行为可以理解为状态机复位,可用电源的Power Good信号来实现。 3.3V稳压器 注意这里SOT-23-5的稳压器的4号脚是Power Good信号,与常见的稳压器不同。如果用一般稳压器,输出脚再加个RC延时或IMP809什么的效果应该差不多。
另外由于QC开启后,VBUS可能是9V或12V,稳压器的输入应该能够承受这个电压。
稳压器的3号脚(EN)将用来复位整个状态机。 检测D-的下降可以用一个比较器来做。由于进入QC模式后D-的电压会被重新设高,这里可用个触发器来锁住S0的值。触发器的复位就是S1,即Power Good信号。 比较器和锁存 C2和C5的作用都是延时。小规模器件做出来的电路速度太快,供电方那边的芯片有可能反应不过来。 最后把0.6V和比较器用的0.325V做出来: 电阻分压 电路就完成了。总共使用的芯片有:
  • MIC5206-3.3,稳压器
  • 74HC4052,模拟开关
  • LMV331,比较器
  • 74LVC1G175,D触发器
每个应该都是几毛钱的样子。

测试

测试使用QC2.0输出的移动电源。上电或复位后,经过1秒钟左右的握手过程,移动电源能够输出9V: 空载测试 加上一点负载之后: 负载测试 这里两张图中D-电压不一样是因为我改过分压电阻。0.42V对应的是上面原理图中的数值。可以看到移动电源对D-的下拉把电压搞下来了一点。 基本实现了我想要的功能,同时用的都是很常规的器件,也不需要烧程序。

后续

如果省略掉状态0,则可以进一步省去D触发器: 总原理图 新空载测试