BC1.2、QC2.0/3.0快充协议讲解(CH543D实例演示:开源) | 您所在的位置:网站首页 › iqoo3快充协议是什么 › BC1.2、QC2.0/3.0快充协议讲解(CH543D实例演示:开源) |
前言:
目前快充协议主要划分为:Type-C口PD协议 和 USB-A口BC/QC/AFC/FCP等协议。PD协议可以翻阅之前的帖子,今天主要来讲解BC1.2 和QC2.0/3.0。 BC1.2 协议:现阶段几乎所有的A口协议都需要在BC1.2的基础上运行,只有等BC协议握手成功后,才能进行请求高电压。所以BC1.2是大多协议的基础,占据比较重要的地位。 此文讲解受电端(Sink)如何请求运行BC1.2,只要了解Sink端运行的流程,就很容易反推出供电端(Source)该如何操作。 首先需要知道BC1.2的供电端(Source)有以下几种名词:SDP、CDP、DCP。一般电脑的接口为SDP用于数据通讯和小电流供电,我们平常使用的充电器一般为DCP,BC1.2的握手主要就是区分供电端(Source)为SDP、DCP还是CDP。 供电端(Source)连接受电端(Sink)设备后,会为Sink提供5V电压运行使用。 1:Sink 先在DP(D+)数据线上输出0.6V左右的电压,然后检测DM(D-)的电平状态,如果DM电平呈现0状态,则说明供电端(Source)的DMDP没有短接,可以判定Source为SDP。否则Source为DCP 或者 CDP。 2:此时可以断定Source为DCP 或者 CDP,就需要二次检测具体区分,Sink将会在DM数据线上输出0.6V左右的电压,然后检测DP的电平状态,如果DP呈现出0状态,则说明Source为虚短状态,判断Source为CDP,否则Source为DCP。 3:经过以上两次检测可以确认Source为DCP,那么此时需要在DP上输出0.6V左右的电压,等待DMDP的短接释放,现象为DP电平为0.6V,DM下降到0V。此时说明BC1.2运行成功。 注:简便操作一般是在DP上输出0.6V电压持续1.25S左右,如果DM不释放BC失败,否则成功。 利用CH543写的测试代码如下: bit BC1_2Check(void) { UINT8 Temp = 150; UINT8 CheckCount; USB_DP_OUT_0v6(); CheckCount = 40; while(CheckCount) { if(Check_ADC(DMAisle) >= Volt0_3){BCSDP = 0;} else{BCSDP = 1;} CheckCount--; mDelaymS(1); } if(BCSDP == 0) //DCP,CDP { USB_DM_OUT_0v6(); CheckCount = 40; while(CheckCount) { if(Check_ADC(DPAisle) >= Volt0_3){BCCDP = 0;} else{BCCDP = 1;} CheckCount--; mDelaymS(1); } if(BCCDP == 0) //DCP { BCDCP = 1; USB_DP_OUT_0v6(); while(Temp>=1) { if(Check_ADC(DMAisle) |
CopyRight 2018-2019 实验室设备网 版权所有 |