Contents

1. 描述

2. 流程

Describes

意外在网上发现一篇写 TYPE-C PD 的文章,大概叙述了工作流程,结合以了解到的信息和协议文档,再去看程序,确实收获不少。(如有侵权请告知)

流程

一般简单的 TYPE-C 使用构成
HOST,DEVICE,CABLE (主机,从机,EMARKER)

PD 协议主要内容大部分集中在,物理层,协议层和协议引擎这三部分。
内容大概有:
'.' PD通信协议的编码解码
'.' PD协议的流程
'.' PD协议的指令构成
'.' PD协议的指令解析

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

编码方式有两种,分别是BMC 、4B5B
不过两种编码方式不是单独使用的,是一起使用的,可能是为了安全性吧。

BMC-4B5B.jpg

BMC编码规则是曼切斯特编码的一个版本,按照脉宽来设定的0和1。
BMC编码后还要经过4B5B编码才能转为被 PD 所识别的数据信号,由于没有相关编码分析仪,没法看到具体数据,但是可用示波器看,然后根据编码的方式解码可读到数据,但这是这样工作量很大,一般用一些集成的 TYPE-C 芯片,里面已经做了处理。

#4B5B编码

4b5b.jpg

#指令格式

指令格式有两种:控制指令和数据指令

packet format.jpg

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

如果Byte数据码没有,说明指令仅仅作为控制指令使用,没有数据内容,所以叫做控制包。有数据内
容的叫做数据包,通常数据包里携带了要变化的电压值和电流值等信息。

1 引导码:

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

2 SOP*码:

BMC解码后由20位的二进制数组成,通过4B5B解码后我们可以看到SOP由Sync1和Sync2的解
码值构成。表明该指令是应用在Source与SINK之间。此处还有SOP’,SOP’的场景码,表明是Source与E-
marker之间的场景指令。

3 Message Header功能码:

BMC解码后由20位的二进制数组成,经过4B5B解码后为16位二进制数据
构成。
Message Header通常包括:数据包还是控制包说明,是由SINK还是SOURCE发出的指令,PD的协议版
本,如果是数据包还包含了有多少个数据包的信息

Message Header.jpg

Message Header 包含了指令信息:是否是扩展指令,这一个包是指令包还是数据包,是哪一方发过来的等信息,具体这些细节在PD协议文档给出了很详细的说明。

具体流程

以Power Negotiation讲解PD电压升降的流程结构。
Power Negotiation流程发生在Source与Sink之间,在这里Source可以是适配器,可以是车充,也可以
是移动电源。Sink可以是任何支持TypecPD的受电端。

Power Negotiation 的协议流程包括以下PD指令:
·Source send CAPABILITY   供电能力指令(包含内容:具有哪几种电压值和电流值)
·Sink send REQUEST     需电请求指令 (包含内容:选取哪种电压和电流值)
·Source send ACCEPT    同意需电请求指令 (包含内容:经过对比需电在自己的供电范围内)
·Source send PS_RDY    完成需求指令 (包含内容:已经成功进行能电压改变)
·GOODCRC         指令接收通过指令

在实际应用中这些指令是怎么操作的呢,接下来我来详细述说:首选Source端工作在TYPE-C的CC模式
5V3A检测模式下,一旦检测到有SINK受电端接入,便开始输出5V给SINK端。
而这时在CC线上,Source开始不间断发送Source send CAPABILITY指令,SINK端接收到
Source send CAPABILITY指令后,判断PD通信数据符合协议规定,便回复GOODCRC表示已经成功接收到数据,
接着SINK会根据Source端能够提供的电压进行选择,SINK选择好合适的电压电流便对SOURCE进行供电请求,
于是SINK发出Sink send REQUEST进行需电请求指令。
Source接收到Sink send REQUEST后,会给SINK回复GOODCRC,然后对Sink send REQUEST指令请求的电压
进行校对,如果符合Source的供电能力,Source便对SINK发Source send ACCEPT指令,表明同意SINK的端电压
请求。SINK接收到Source发送的ACCEPT指令后,回复GOODCRC。Source接收到SINK发出的GOODCRC后,便开
始进行电压调节,电压调节成功后,便发出Source send PS_RDY表示已经调整电压成功,SINK收到后,便回
复GOODCRC表示接收指令成功。

以上就是一个完整的升压指令流程。
但是有一个前提是底层 TYPE-C 物理层必须已经是调试好的,这个流程是上层协议 protocol 和 policy engine 控制的,具体协议文档中有,需要仔细研读,分别是 source 和 sink 的时候通信流程。

![.jpg](http://upload-images.jianshu.io/upload_images/4947861-198057ec2e15cf9a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

参考文献

《网络文章--USB�TYPE-C�Power�Delivery升压协议解析》
《USB_PD_R2_0 V1.3 - 20170112》

PD 协议初理解(转)相关推荐

  1. nrf52832 学习笔记(七)蓝牙协议层级理解

    nrf52832 学习笔记(七)蓝牙协议层级理解 本文主要由一下几篇文档摘录汇总而成 ,如有错误欢迎斧正 da14531 蓝牙协议文档 深入浅出低功耗蓝牙(BLE)协议栈 低功耗蓝牙ATT/GATT/ ...

  2. PD协议芯片,20W45WPD快充方案

    PD协议芯片,18w20W45WPD快充方案 一.基本信息 1.协议控制:它的电源电压是 VCC 脚,典型应用范围是从 3.3-21V.CC1/CC2/DP/DM 用于接到 type C 座子上,与手 ...

  3. VRRP协议个人理解(RFC5798)+典型配置+RFC2338/RFC3768文档翻译

    本文档源地址位于RFC 2338: Virtual Router Redundancy Protocol,在此仅为个人学习加深理解使用.转载等操作请保留源文档版权声明. RFC2338存在更新RFC3 ...

  4. 20191009 3. 史上最全的USB-PD充电协议,包含PD协议波形图

    USB-PD(Power Delivery)是基于USB Type-C的一种电源供电标准,最大供电功率可达100瓦(W):随着USB Type-C的普及,越来越多的设备(手机.平板.显示器.工作站.充 ...

  5. PD协议快充,多方兼容,这款小方糖Mini充电器实测确实很强悍

    移动设备的充电方式,从普通的5V1A再到现在的超级快充,科技进步可真是像火箭,对于消费者来说,如果额外添置充电器,肯定会从多协议.体积小入手,当然品质也很重要,先锋昨天也是刚刚到手一款很小巧的Benk ...

  6. 关于GPL协议的理解(开源与商用、免费与收费)

     关于GPL协议的理解(开源与商用.免费与收费) 如果你使用并且修改了我的GPL软件,那么你的软件也必须要开源,否则就不能使用我的软件,你是否把你的软件商用和我没关系.比如,Oracle卖的不是软 ...

  7. [单片机][FUSB302][PD1.0][PD2.0] PD协议 Demo 例子 代码

    /* -----------------------------------------宏定义-----------------------------------------*//* ------- ...

  8. USB-C显示器专用的PD协议芯片,LDR6282了解学习一下

    USB-C桌面显示器,便携式显示屏专用PD芯片,了解一下,近日,乐得瑞科技推出的双口DRP USB PD Controller LDR6282,顺利通过了USB-IF的PD3.0认证,TID: 212 ...

  9. Type-C边充边听PD协议芯片

    目前市面上的大部分手机都取消了3.5mm音频耳机接口,仅保留一个Type-C接口,但是追求音质和零延迟的用户仍然会选择3.5mm有线耳机,因为在玩手机游戏的时候,音画不同步真的很影响游戏体验,所以Ty ...

最新文章

  1. 注册表----修改Win7登录界面
  2. CloudStack学习-1
  3. advanced installer重新打包教程
  4. Qt for Android 自定义启动页(解决启动页拉伸的问题)
  5. 韵镖侠登录不上 显示无法连接到服务器,什么是韵镖侠?韵镖侠是做什么的?...
  6. 优先级调度算法实现_一篇讲透嵌入式操作系统任务调度
  7. bzoj3771:Triple
  8. 域名有效期10年后怎么办
  9. 让Android虚拟手机快速启动
  10. Ant--基于java的build工具
  11. Julia: 基于CTA策略的回测可视化分析的尝试
  12. Every Big God !I am fish This is my first program!
  13. vfp 什么是VFP?
  14. 关于metasploit的一些架构目录
  15. Eclipse与JDK多版本兼容性设置
  16. matlab ptb,Psychtoolbox-3 / PTB-3 for Matlab 安装
  17. Qt安装包官方下载地址
  18. Fortran编程(VScode配置)——笔记2
  19. 贷还是不贷:如何用Python和机器学习帮你决策?(zz)
  20. python画三维立体图-python绘制三维图

热门文章

  1. DFS求岛屿最大面积
  2. js 获取浏览器屏幕的宽度和高度
  3. 山东省第八届 ACM 省赛 Parity check (规律、水)
  4. Spring Boot项目@RunWith注解报错
  5. i.MX6DL飞思卡尔双核安卓核心板主控
  6. Android系统镜像编译、烧录及调试
  7. 英飞凌电动汽车参考方案,包含原理图,和Bom清单
  8. MSDC 4.3 接口规范(16)
  9. 腾讯云cos对象存储服务文件上传api就是一个大坑
  10. 自动擦窗机器人作文_清洁机器人作文(六篇)