这几天试了一下从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信号来实现。
注意这里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触发器: