BC1.2、QC2.0/3.0快充协议讲解(CH543D实例演示:开源) 您所在的位置:网站首页 iqoo3快充协议是什么 BC1.2、QC2.0/3.0快充协议讲解(CH543D实例演示:开源)

BC1.2、QC2.0/3.0快充协议讲解(CH543D实例演示:开源)

2024-02-11 17:01| 来源: 网络整理| 查看: 265

 前言:

  目前快充协议主要划分为: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 实验室设备网 版权所有