TYPECPD升压协议全解析Word格式.docx

上传人:b****5 文档编号:19795753 上传时间:2023-01-10 格式:DOCX 页数:13 大小:1.47MB
下载 相关 举报
TYPECPD升压协议全解析Word格式.docx_第1页
第1页 / 共13页
TYPECPD升压协议全解析Word格式.docx_第2页
第2页 / 共13页
TYPECPD升压协议全解析Word格式.docx_第3页
第3页 / 共13页
TYPECPD升压协议全解析Word格式.docx_第4页
第4页 / 共13页
TYPECPD升压协议全解析Word格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

TYPECPD升压协议全解析Word格式.docx

《TYPECPD升压协议全解析Word格式.docx》由会员分享,可在线阅读,更多相关《TYPECPD升压协议全解析Word格式.docx(13页珍藏版)》请在冰豆网上搜索。

TYPECPD升压协议全解析Word格式.docx

1

PD协议独立与USB协议之外,但由于TYPE-C口的兼容特性,可以让PD协议、QC协议、MTK协议、FCP协议等快冲协议熔于一炉。

PD的物理层由发射模块和接收模块组成,由于CC是单线协议,所以所有通信都是半双工的。

BMC编码规则是曼切斯特编码的一个版本,按照脉宽来设定的0和1。

可以从上图看出,01的编码并不以电平的变化为依据,而是按照脉宽来决定。

BMC的最大频率达330KHz,单指令长度在1ms内。

根据图二我们可以做一个4B5B的解码例子:

取出图二中引导码后,我们可以得到的数据:

0001100011000111000110010,通过上述4B5B表格进行解码后我们得到最终的数据为:

SYNC1-SYNC1-SYNC1-SYNC2-1。

看到这里可能你有疑问,00011在表格中不是Reserved吗?

是的,没错,4B5B还有个编码规则,就是从左到右记录数据时,需要将读取的数据倒过来编译,即00011要倒成11000。

由于PD通信的流程复杂,且BMC解码后的数据往往长达上百位,人工编解码耗时耗力且容易出错,所以需要使用一些自制的电脑软件来进行辅助解码,于是才有了下面的自制解码软件。

该软件就包括了4B5B的解码,和数据内容的解析,能够快速的将BMC解码的数据内容转换成功能定义。

2

PD协议内容繁多,主要包括以下流程:

·

PowerNegotiation电压协商流程(电压升降压)

GotominOperation

SoftReset软件复位流程

HardReset硬件复位流程

CableReset

PowerRoleSwap

FastRoleSwap

DataRoleSwap

VCONNSwap

AdditionCapabilityandStatus

Security密钥流程

FirmwareUpdate固件升级流程

StructuredVDM厂商自定义结构流程

BISTPD协议时序测试流程

今天我们就根据PowerNegotiation讲解PD电压升降的流程结构。

PowerNegotiation流程发生在Source与Sink之间,在这里Source

可以是适配器,可以是车充,也可以是移动电源。

Sink可以是任何支持Type-cPD的受电端。

PowerNegotiation的协议流程包括以下PD指令:

SourcesendCAPABILITY供电能力指令(包含内容:

具有哪几种电压值和电流值)

SinksendREQUEST需电请求指令(包含内容:

选取哪种电压和电流值)

SourcesendACCEPT同意需电请求指令(包含内容:

经过对比需电在自己的供电范围内)

SourcesendPS_RDY完成需求指令(包含内容:

已经成功进行能电压改变)

GOODCRC指令接收通过指令

在实际应用中这些指令是怎么操作的呢,接下来我来详细述说:

首选Source

端工作在TYPE-C的CC模式5V3A检测模式下,一旦检测到有SINK受电端接入,便开始输出5V给SINK端。

而这时在CC线上,Source开始不间断发送SourcesendCAPABILITY指令,SINK端接收到SourcesendCAPABILITY指令后,判断PD通信数据符合协议规定,便回复GOODCRC表示已经成功接收到数据,接着SINK会根据Source端能够提供的电压进行选择,SINK选择好合适的电压电流便对SOURCE进行供电请求,于是SINK发出SinksendREQUEST进行需电请求指令。

Source接收到SinksendREQUEST后,会给SINK回复GOODCRC,然后对SinksendREQUEST指令请求的电压进行校对,如果符合Source的供电能力,Source便对SINK发SourcesendACCEPT指令,表明同意SINK的端电压请求。

SINK接收到Source发送的ACCEPT指令后,回复GOODCRC。

Source接收到SINK发出的GOODCRC后,便开始进行电压调节,电压调节成功后,便发出SourcesendPS_RDY表示已经调整电压成功,SINK收到后,便回复GOODCRC表示接收指令成功。

以上就是一个完整的升压指令流程。

3

PD的通信指令(就升压来说)有两种方式一种方式是控制包,而另一种是带数据包。

指令包格式如下:

一个完整包结构包括引导码,SOP*使用场景码,MessageHeader功能码,Byte0-n数据码和CRC校验码,EOP结束码。

如果Byte数据码没有,说明指令仅仅作为控制指令使用,没有数据内容,所以叫做控制包。

有数据内容的叫做数据包,通常数据包里携带了要变化的电压值和电流值等信息。

2引导码:

BMC解码后可以看到由64对01组成,主要为了进行接收缓冲。

②SOP*码:

BMC解码后由20位的二进制数组成,通过4B5B解码后我们可以看到SOP由Sync1和Sync2的解码值构成。

表明该指令是应用在Source与SINK之间。

此处还有SOP’、SOP’的场景码,表明是Source与E-marker之间的场景指令。

③MessageHeader功能码:

BMC解码后由20位的二进制数组成,经过4B5B

解码后为16位二进制数据构成。

MessageHeader通常包括:

数据包还是控制包说明,是由SINK还是SOURCE发出的指令,PD的协议版本,如果是数据包还包含了有多少个数据包的信息。

详细表格说明如下:

其中,低四位二进制码比较重要,代表的是该PD指令的名字,比如说升压中用到的SourcesendCAPABILITY就是又这四位来定义的。

其它指令的定义表如下:

在指令包的结构中,过了MessageHeader向右就是数据区域,通过4B5B的转换后,SOP是16个二进制位,MessageHeader也是16个二进制位,而数据区域,每个独立的数据块包括了32个二进制位。

所以Byte0(32位)Byte1(32位)......那么新的问题又来了,一条完整的指令包到底怎么判断包含了多少的数据块呢,这个时候就需要由MessageHeader来进行判断了。

MessageHeader的12到14位表示1到7个数字,代表的就是指令包的数据数量,所以我们可以认为指令包的最大数据数为7。

数据模块一般应用在SourcesendCAPABILITY,SinksendREQUEST等这样需要带电压电流的PD指令中。

数据模块右边就是一个32位的数据校验区域,也称作CRC校验。

CRC校验是PD通信协议中独特的一套校验方式,为了保持数据的完整与纠错,整个PD指令任何一个位变动,都会造成CRC改变。

经过了引导码、SOP码、MessageHeader、data码、CRC码后,接下来就是EOP码即结束码,在4B5B中我们可以看到接收到01101的BMC编码,即代表PD指令包全部接收完毕。

4

下面我们就实际做一次PD协议分析:

首先准备好待测试的PD适配器、PD数据线(两头都是TYPE-C的那种)、PD测试架、逻辑分析仪。

然后将插拔过程中PD的数据流程通过逻辑分析仪读取出来如下:

首先我们要做的就是PD指令的BMC解码,将脉冲长短变化成二进制数据,然后通过协议分析软件进行代码解析,为了更好的讲解,我们先人工分析一条指令。

引导码由64位二进制的01组成,这一段可以直接略过。

SOP*码从左到右BMC解码后等于:

00011000110001110001

根据图三进行4B5B解码我们可以得到:

SYNC1-SYNC1-SYNC1-SYNC2

于是我们可以知道,该指令属于SOURCE与SINK之间的指令。

我们接着往下分析:

MessageHeader码从左到右BMC解码后等于:

10010011101001000101。

通过4B5B解码后为:

0001011000010010。

15到0位为:

0010000101100001根据图六可以得到以下信息:

∙从15,14,13,12位可以得到此PD指令包括2个数据块。

∙从11,10,9位可以知道此PD指令正在进行第一个回合。

(PD指令+GOODCRC指令为一个回合)

∙从8位可以得知此PD指令由SOURCE发出。

∙从7,6位得知指令遵循的是PD2.0规则。

∙从5得知发指令的设备角色为DFP。

∙从4,3,2,1,0得到00001并查阅图七得到该指令名:

MessageHeader指令,为电压协商协议的发起指令。

数据指令过长过程不再详叙,用协议软件可以分析得到:

接下来我们用协议软件分析,速度会快很多,能够迅速掌握这个流程功能和异常:

此指令为上条MessageHeader的回复指令。

接着下条指令为:

此为SINK端发出的SinksendREQUEST指令,我们可以得到相关信息,已经SINK请求的电压等级。

SOURCE端的回复指令:

从该指令信息中,我们可以知道该信息由SOURCE发出,用来回复SINK端发出的电压请求。

接着SOURCE端收到指令后,又发出的指令:

该指令信息为SOURCE发出的ACCEPT指令,由上述流程的介绍可以知道,该指令表明SOURCE端同意了SINK的电压升压请求,并开始做好升压的准备。

接下来SINK端发的GOODCRC,如下:

该指令为SOURCE发的第二条指令,所以SINK回复的GOODCRC中的MSGID这里开始计数到001;

与此同时,SOURCE端的硬件已经进入升压模式,由于升压要一定时间,所以PD通信会有90ms多的延时,才迎来了第三条SOURCE指令,如果流程没有错的话就是PS_RDY指令:

用PD协议分析软件的分析如下:

指令流程进行到这里,说明SOURCE端已经成功将电压升压到SINK端请求的电压。

接下来的SINK端的GOODCRC就不累赘了。

以上叙述就是一个完整的电压升压流程PD通信的速率300KHz,且通信时的电压在1V上下,所以在实际的软硬件设计中,都要针对上述特性做一些针对性的调整。

目前开发的SINK端PD测试架,与配合AC-DC做的PD协议芯片都是以上述理论为蓝本做的相关应用。

两款样机的硬件设计请见PD硬件,软件设计篇。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小学作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1