快充协议浅谈:BC QC PD

BC1.2

  1. VBUS Detect bus 检测:当手机的 Micro USB 端口连接上电源适配器之后,处理器 在捕获到 VBUS 中断时,参考值不固定一般在 0.8 V 至 4V 之间,即意味着有电源连接 到手机上时,电源适配器会首先以默认的输出电压和电流提供给手机内部的电源管理 芯片。
  2. Primary Detection 检测:用来判断端口是来充电还是用来传输数据,将 D+ 拉高至 0.6V 后检测 D- 的电压,如果该电压值小于参考电压值,则端口是数据口 SDP;如果大于参考电压则是充电口 CDP 或者 DCP 。
  3. Secondary Detection 检测:用来检测充电口能否支持传输数据,即区分 CDP 和 DCP:将 D- 拉高至 0.5V 后检测 D+ 的电压,如果该电压小于参考电压,则端口是 CDP;如果大于参考电压说明端口是 DCP 。

图 1 BC 1.2协议标准检测 CDP 端口

QC快充协议

  1. QC2.0
  1. 电源适配器通过数据连接线连到充电设备上,首先电源适配器默认将D+、D-数据脚进行短接;依据前面的介绍,充电设备探测到电源适配器类型是 DCP,此时电源适配器默认输出5V电压,手机正常充电;
  2. 接着进行QC2.0快充协议握手交互,电源管理集成电路(PMIC)开始拉高 D+上的电压至 0.6V,并维持 1.25S 以上;
  3. 当电源适配器检测到 D+ 上电压为 0.6V 并维持超过 1.25S 后,电源适配器会断开 D+ 和 D- 的短接,由于 D+ 和 D- 不再短接,D- 上的电压不在跟随 D+ 变化,此时 D- 上的电压开始下降;
  4. 充电设备端检测到 D- 上的电压从 0.6V 开始下降并维持 1ms 以上时,电源管理集成电路根据充电设备的电压输出请求,给 D+、D- 设置不同的电压信号。
  5. 电源适配器监测到 D+、D- 上的电压后,调整电源适配器的输出至相应的不同电压,不同 D+、D- 输出逻辑电压如表 1 所示。

表 1 QC2.0协议电压逻辑表

QC2.0协议标准

D+

D-

VBUS

0.6V

0V

5V

3.3V

0.6V

9V

0.6V

0.6V

12V

3.3V

3.3V

20V

  1. Quick Charge 3.0

Quick Charge 3.0 是向下兼容 Quick Charge 2.0 的,因此在实现判断提供电源的设备、Quick Charge 2.0 协议握手成功的基础上进行 Quick Charge 3.0 的协议握手。

Quick Charge 3.0 相比 Quick Charge 2.0 主要是增加了一个“最佳电压智能调节”[2]算法,可以以 200mV 为一个台阶进行智能调节,提供从 5V 至 20V 电压的灵活选择。为了输出指定电压,协议同样是设置 D+ 、D- 上的电压,不同的是,为了实现 200mV 为一个台阶进行智能调节,D+ 拉高至 0.6V ,D- 拉高至 3V ,拉高 D+ 至 3.3 V后 1ms 释放,输出电压就能够在之前输出的基础上增加 200mV ;拉高 D- 至 0.6V 后 1ms 释放,电源适配器输出电压就能够在之前输出的基础上减少 200mV 。

这样的好处就是能够更加精确的输出电压,使得充电效率更高。也就是说,QC3.0可以在任意时刻实现最佳传输功率,实现充电效率最大化,并改善发热情况。在功耗方面,高通的数据也显示,QC3.0 的功耗要小于之前的 QC2.0 。而功耗上的降低,自然也将会使得充电发热情况会有所降低。

图 2 DCP 检测波形图

图 3 QC 协议握手逻辑电压的电平转换

PD快充协议

硬件接口

Type-C 是 USB 接口的一种形式,其最大优点之一是正反两面均可插入,支持 USB 标准的充电、数据传输、视频传输、音频传输、显示输出等功能。此外尤为重要的是,支持 USB -PD 后则可实现高达 100W 的电源供电(2.0 100W,3.0 240W)。

表 2 Type-C接口引脚定义

GND

TX1+

TX1-

VBUS

CC1

D+

D-

SBU1

VBUS

RX2-

RX2+

GND

GND

RX1+

RX1-

VBUS

SBU2

D-

D+

CC2

VBUS

TX2-

TX2+

GND

用于数据通讯的主机端口被称为下行端口 ( DFP ),外设端口被称为上行端口 ( UFP )。而电源方面,供电端被称为源端 ( Source ),耗电端被称为吸端 ( Sink )。有的设备既可以有数据上的双角色 ( DRD ) 能力,又具有电源上的双角色 ( DRP ) 能力。其中,实现定义电源角色进行相互沟通的是通过CC线。

表 3 Type-C接口插头引脚定义

GND

RX2+

RX2-

VBUS

SBU1

D-

D+

CC

VBUS

TX1+

TX1-

GND

GND

TX2+

TX2-

VBUS

VCONN

SBU2

VBUS

RX1-

RX1+

GND

以下对电缆与插座均未翻转连接和电缆翻转后的连接这两种情况进行详细说明。

  1. 电缆与插座均未翻转连接的状态:从左边的插座到右边的插座,RX1连接到 TX1,RX2 连接到 TX2; D+ 与 D+ 连接, D- 与 D- 连接, SBU1 与 SBU2 连接, CC1 经由 CC 线与 CC1 连接。高速数据经由 RX1+、RX1- 和 TX1+、TX1- 从一端传递到另一端。电缆两端的 VCONN 是不需要连通的。其中为电缆中电子标签 IC(E-mark)供电的 VCONN 来自电缆的一端,VCONN 当电子标签被确定存在于电缆中即被提供,多存在与 5A 大电流 Type-C 数据传输线中。
  2. 电缆翻转后的连接状态:从左边的插座到右边的插座, RX1 线连接到TX2 线, RX2 线连接到 TX1 线, D+ 仍然连接到 D+,D- 仍然连接到D-,可见不论是否翻转线缆,D+、D- 信号线始终连接到D+、D-,这就意味着 Type-C 在支持 PD协议的基础上兼容 QC 协议且支持正反插。SBU1 连接到SBU1,SBU2 连接到 SBU2,CC1 经由 CC 线连接到 CC2 。现在,高速数据经由左侧的 RX1+、RX1- 和 TX1+、TX1- 到右侧的 RX2+、RX2- 和 TX2+、TX2- 进行传输。

源端(Source)与吸端(Sink)的确定

CC线是用来将两个连接在一起的设备进行电源供应的配置。默认情况下,USB Type-C 接口的 VBUS 上是没有电压供应的,系统需要在数据线连接期间进行设备角色的定义,插座上的 CC 线被上拉电阻上拉至高电平的设备将被定义为电源供应者即源端,而被下拉电阻下拉至低电平的设备将被定义为电源消费者即吸端。

图 4 CC检测电路 

USB PD通信结构

物理层

USB PD 物理层由一对发射机和接收器组成,它们通过单个信号线 ( VBUS 或 CC )进行通信。发射机执行以下功能:从协议层接收数据包数据;计算并附加一个 CRC ;编码包括CRC 在内的数据包数据,数据编码包括 4b5b、BMC ;传输数据包( Preamble, SOP*, payload, CRC and EOP)),此处的 SOP* 是: SOP ,SOP’,SOP” 的三类。

表 4 PD 协议的数据格式

基本结构

Preamble

SOP

Message

CRC

EOP

接收机执行以下功能:恢复时钟且从 Preamble 锁定包;检测 SOP* ,解码接收的数据包括 CRC ;检测 EOP并验证 CRC 。

图 5 PD 物理层功能

下面两图分别说明了接收器、发射器通过 BMC、4b5b 将数据包进行编码解码的过程。

图 6发射机编码

图 7接收机解码

协议层

在前面一节中提及到了数据格式中的 Message 是协议层中的内容,在本节中做详细分析。

在图 7 中,协议数据包中将 Message 分为了 header 与 n 个字节,后面分为称为头消息和数据消息,前者主要功能是用来表明消息类型、电源和数据角色、PD 充电协

议的版本信息等,后者是对于不同的头消息有不同的数据信息,如对应的控制头消息为 Get_Source_Cap,那么消息数据就是 Source 端的能够提供的电压、电流消息。

图 8 PD 协议数据包格式扩展

  1. 控制消息

控制消息的主题就是一个头消息( header ),如图 6 控制消息数据包所示,它也是数据消息和扩展消息共有的部分,在 PD 协议中头消息规定 2 字节、16 位分别定义不同的功能,如下表 5 所示:

表 5控制消息16位数据对应功能定义

Bit(s)

Start of Packet

功能定义

15

SOP*

是否扩展消息

14…12

SOP*

项目数量,控制消息此处为0

11…9

SOP*

消息ID,表示成功通信多少次(最大为7)

8

SOP only

电源角色:Sink 或 Source

SOP’/SOP"

线缆

7…6

SOP*

PD的版本

5

SOP only

数据角色:DFP 或 UFP

SOP’/SOP"

如果是线缆这意味保留

4…0

SOP*

控制消息类型

控制消息类型( Control Message Type )定义如下表 6 所示,其中发送列表示可以发送给定消息的实体(源、接收器或电缆插头);未列出的实体不得发出相应的消息。包的有效开始列表示仅在 SOP 包中发出的消息和在 SOP* 包中可能发出的消息。

表 6 控制消息类型(Type)定义表

Bits4…0

Message Type

Sent by

Valid Start of Packet

0 0000

Reserved

N/A

0 0001

GoodCRC

Source, Sink or Cable Plug

SOP*

0 0010

GotoMin

Source only

SOP only

0 0011

Accept

Source, Sink or Cable Plug

SOP*

0 0100

Reject

Source or Sink

SOP only

0 0101

Ping

Source only

SOP only

00110

PS RDY

Source or Sink

SOP only

00111

Get Source Cap

Sink or DRP

SOP only

0 1000

Get Sink Cap

Source or DRP

SOP only

0 1001

DR Swap

Source or Sink

SOP only

0 1010

PR Swap

Source or Sink

SOP only

01011

VCONN_Swap

Source or Sink

SOP only

01100

Wait

Source or Sink

SOP only

01101

Soft Reset

Source or Sink

SOP*

01110 - 0 1111

Reserved

N/A

1 0000

Not Supported

Source, Sink or Cable Plug

SOP*

1 0001

Get Source Cap Extended

Sink or DRP

SOP only

1 0010

Get Status

Source or Sink

SOP only

  1. 数据消息

数据消息由消息头后面跟着一个或多个数据对象组成,如下图 9 所示。区别数据消息比较容易,因为消息头中的数据对象中的数字段比特位是一个非零值。

图 9数据消息数据包

在数据消息中使用的数据对象的类型由消息头的消息类型字段定义,数据消息头的高14 为定义和控制消息头的高 14 位定义相同,低 4 位并在下表 7 中进行了总结。

表 7数据消息类型定义表

Bits 3…0

Message Type

Sent by

Valid Start of Packet

0000

Reserved

0001

Source Capabilities

Source or Dual-Role

SOP only

0010

Request

Sink only

SOP only

0011

BIST

Tester, Source or Sink

SOP*

0100

Sink Capabilities

Sink or Dual-Role

SOP only

0101-1110

Reserved

1111

Vendor Defined

Source, Sink or Cable Plug

SOP*

例如,源端通过发送一条 Source Capabilities 消息来公开它们的电源功能,能够提供多少个挡位电压、电流( PD0 )。吸端通过发送一条 Sink Capabilities 消息来公开它们的电源需求。两者都由多个32位的功率数据对象组成,如下表 13 所示,

表 8 Source、Sink Capabilities消息类型对应数据消息定义表

Bit(s)

Description

B31…30

Fixed supply

B29

Dual-Role Power

B28

USB Suspend Supported

B27

Unconstrained Power

B26

USB Communications Capable

B25

Dual-Role Data

B24…22

Reserved - Shall be set to zero

B21…20

Peak Current

B19 …10

Voltage in 50m V units

B9…0

Maxi mum Current in 10mA units

  1. 扩展消息

扩展消息有的只支持 SOP ,有的只支持 SOP* ,从下图 10 可以看出,扩展消息与控制消息和数据消息有一样的两个字节头消息,后面紧接着是两个字节的扩展头消息,该消息包括的内容如下表 15 所示

图 10扩展消息数据包图

扩展消息头定义如下表:

表 9扩展消息头定义表

Bit(s)

Start of Packet

Field Name

B15

SOP*

Chunked

B14…11

SOP*

Chunk Number

B10

SOP*

Request Chunk

B9

SOP*

Reserved

B8…0

SOP*

Data Size

扩展消息里面含有一些原厂定义的消息,原厂一些独立的 Message,用来表明不同的功能,如识别线缆( cable )中的 E-mark 信息,但是对于本文研究识别 PD 快充协议没有涉及,因此不作详细介绍。

策略层

前两节介绍物理层是用来做具体传输数据的,是最底层的东西,协议层是定义 PD消息的具体含义;策略层就是将协议层的内容组合起来,形成一个完成的策略。可以理解为协议层是协议子函数,策略层是要如何去调用这些函数实现你的功能和目的。

图 11策略层图

从图 11 可以清楚地知道,PD策略层前面还有一个策略层的管理器,用来统一管理策略,例如在某一时间节点进行电源输出电压的切换进行电源协商,在进行视频、照片数据传输会有数据角色交换等。其中最重要的就是电源协商的策略,也是本文需要进行着重研究的电源输出电压协商策略,具体的策略流程如下图 12 所示,

图 12电源协商策略流程图

  1. Source 端发起一个广播 Source Sap ( 约150ms广播一次,直到收到 Good CRC);
  2. Sink 端收到源端能够提供的电压、电流信息,并请求其一档位的电源以及电流要求(收到Source Cap的 24ms 内);
  3. Source 端对吸端请求的电压、电流进行评估,按受就回复接受 Accept ,这个也是需要在 24ms 内去回复的;
  4. 如果 Source 端接受,那么此时 Source 端应该开始准备这个档位的电源;
  5. 当电源准备完成的时候,发出 Ps Ready 协议,表示电源准备完成,可以开始充电了,这个需要在 450ms 内。

PD协议识别芯片选型

FUSB302B 是 onsemi 公司开发的一款用来简化PD协议实现 MCU 与 TYPE-C 通讯的芯片,FUSB302B 期望通过 USB Type-C连接器实现DRP、SRC、SNK,但需要少量编程的系统设计基础,其支持 USB Type-C 检测,包括连接和方向,集成了USB BMC电力输送协议的物理层,允许高达100W功率和角色互换。原理图如下:

图 13 FUSB302B芯片原理图

本设计选择 FUSB302B 作为 PD 协议识别模块芯片因为其具体的产品特性具有自动 DRP切换的双角色功能、基于连接对象可以作为主机或设备进行连接的能力、可配置为专用主机、专用设备或双角色、专用设备可以在固定 CC 或 VCONN 通道的 Type-C 插座或插头上运行、完全支持 Type-C 1.2 、集成 CC 引脚作为主机进行连接、作为主机进行电流能力指示、作为设备进行电流能力指示的功能;USB PD2.0,支持 1.2 版本:自动 GoodCRC 报文响应、未收到 GoodCRC 时自动重发报文、需要时自动软重置重发报文、自动硬重置发送命令集。FUSB302B 功能模块如图 20 所示,

图 14 FUSB302B 功能模块示意图

寄存器介绍

FUSB302B 控制 24 个寄存器地址,寄存器的配置是必要的。FUSB302B 的状态控制,输入输出控制均需通过这 24 个地址实现,其中 PD收发的数据包是在FIFO( 0x43h )寄存器中,该寄存器便是 FUSB302B 与 Type-C 通讯的内容存储单元,将要发送的内容存储在TX FIFO 中,收到的内容将会存储于RX FIFO 。FUSB302B 寄存器的每一位地址都有其功能,地址定义如图 21 所示

图 15 FUSB302B 寄存器功能定义

这些寄存器地址有些只读,有些可以读写,下面截选几个本文方案设计需要读写的地址功能定义,详细可以查阅 FUSB302B 的数据手册。

表 10 SWITCHES0 寄存器定义

SWITCHES0 Address: 02h; Reset Value: 0x0000_0011; Type: Read/Write

Bit

Name

R/W/C

Description

7

PU_EN2

R/W

1:作为主机上拉 CC2 引脚

6

PU_EN1

R/W

1:作为主机上拉 CC1 引脚

5

VCONN_CC2

R/W

1:将 VCONN 切换到 CC2 引脚

4

VCONN_CC1

R/W

1:将 VCONN 切换到 CC1 引脚

3

MEAS_CC2

R/W

1:开启测量模块监测 CC2 引脚两端的电压

2

MEAS_CC1

R/W

1:开启测量模块监测 CC1 引脚两端的电压

1

PDWN2

R/W

1:作为设备下拉 CC2 引脚

0

PDWN1

R/W

1:作为设备下拉 CC1 引脚

SWITCHES0 和 SWITCHES1 寄存器地址主要用来配置 CC 引脚,在 Type-C 接口正反插入后根据端需要口配置为源端、吸端,从而需要重新定义 CC脚:是否上下拉电阻进行接口介入检测、是否开启BMC 编码进行数据包传输、是否切换 VCONN 电源输入为E-mark芯片等提供电压的功能等等。

表 11 CONTROL0 寄存器定义

CONTROL0 Address: 06h; Reset Value: 0x0010_0100; Type: (see column below)

Bit

Name

R/W/C

Description

7

Reserved

N/A

不使用

6

TX_FLUSH

W/C

1:自清除位,以清除发射FIFO的内容

5

INT_MASK

R/W

1: 屏蔽所有中断    0:已启用主机中断

4

Reserved

N/A

不使用

3…2

HOST_CUR[1:0]

R/W

1:在PU_EN位使能后,使能该位控制CC线上的电流

00: No current    01: 80uA – Default USB power

10: 180uA – Medium Current Mode: 1.5 A

11: 330uA – High Current Mode: 3 A

1

AUTO_PRE

R/W

1:当接收到具有准确CRC的消息时,自动启动发射器。

0

TX_START

W/C

1:使用发射器FIFO中的数据启动发射器。

Control0 和 Control1 寄存器地址主要用来控制传输信号,例如控制电流大小,控制 FUSB302B 所能识别的传输信号,清空 RX、TX FIFO 的内容等等。

mcu与芯片通信方式:IIC通讯协议

FUSB302B 与 MCU 通信方式 IIC 通讯协议,其集成了完整的 IIC 从机控制器,完全支持 IIC 规格版本 6 的要求,图 22、图 23 分别为 IIC Write、Read 示例图:

图 16 FUSB302B IIC Write 示例图

图 17 FUSB302B IIC Read 示例图

表 12 IIC Write、Read 释义表

项目

解释

S

SOP: Start of Packet

Slave Address/WR

固定地址:0x44

Slave Address/RD

固定地址:0x45

Register Address

0x01~0x43,请参考寄存器表

Read Data

传输的数据

A

有应答

NA

无应答

P

EOP: End of Packet

在某一时刻 Power-Z 上位机抓取 Power-Z KM001C 与电源适配器进行电源协商的界面。

图 18 Power-Z 上位机调试界面

  • 12
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
http://www.injoinic.com/ 1 / 27 Version 1.0 支持双向 PD3.0 快充等多种协议 的 移动电源 SOC 特性  同时支持 多个 USB 口  2 个 USB A 口输出  1 个 USB B 口输入  1 个 USB C 口 输入 输出  快充规格  任意一个口都支持快充  集成 QC2.0/ QC 3 .0 输出 快充协议QC3.0 高通证书编号: 4788056908 2  集成 FCP 输入 输出快充协议  集成 AFC 输入 输出快充协议  集成 SFCP 输入 输出快充协议  集成 MTK PE+ 1.1&2.0 输出快充协议  集成 USB C DRP 协议,支持输入输出快充  兼容 BC1.2 、 苹果、三星手机快充  集成 USB Power Delivery PD2.0/ PD3.0 )协议  支持 PD2.0 双向 输入 输出协议  支持 P D 3.0 输入 输出 PPS 输出 协议  支持 5V 9V 12V 电压档位输入 输出  PPS 支持 5~11 V 20mV/step 输出电压档位  集成硬件的双向标记编解码( BMC )协议  集成物理层协议( PHY  集成硬件 CRC  支持 Hard Reset  充电规格  电池端充电电流 最高 可达 5 0 A  自适应充电电流调节  支持 4.20V 、 4.35V 、 4.40V 、 4. 5 0V 电池  放电规格  输出电流能力: 5V 3.1A 9V 2.0A 12V 1.5A  同步开关放电 5V 2A 效率 达 9 5 以上  支持线补  电量显示  内置 14bit ADC 和电量计  支持 1 / 2 / 3 / 4 颗 LED 电量显示  智能识别 LED 电量显示灯数目  可调整 电池电量曲线,显示灯更均匀  其他功能  自动检测手机插入和拔出  快充 状态指示  智能识别负载,轻负载自动进待机  支持按键  内置照明灯驱动  多重保护、高可靠性  输入过压、欠压保护  输出过流、过压、短路保护  电池过充、过放、过流保护  IC 过温保护  充放电电池温度 NTC 保护  ESD 4KV 输入 (含 CC 引脚) 耐压 2 5 V

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值