USB-PD 协议解析 - 简单易懂协议详解

article/2025/9/25 18:04:25

目录

1. 简介

2. USB PD3.0 通信流程

2.1 发送数据包

2.2 接收数据包

2.3 双相标记编码(BMC)

2.4 符号编码(4B5B)

3. 数据包格式

3.1 前导码(Preamble)

3.2 SOP*(Start of Packet Sequence)

3.3 有效载荷(Packet Payload)

3.3.1 控制信息

3.3.2 数据信息

3.3.3 扩展信息

3.4 CRC

3.5 EOP


1. 简介

USB PD:英文解释是USB Power Delivery ,翻译过来就是USB功率传输,该协议是基于USB3.1中的type C接口制定的,是基于USB1.0、USB2.0、USB3.0升级产物,USB PD标准分10W、18W、36W、60W和100W五级“规格”,电压采用5V、12V、15V和20V,电流为1.5A、2A、3A和5A最高可达100W,根据设备间的通讯握手成功,自主协商采用相对应的功率进行充放电,另外它还是双向的,可以相互转化角色就是电力供应,未来大部分的电子设备通过一根Type C电缆就可以完成充电,这就意味着可以把传统的充电接口省掉。

完成USB PD协议的通讯与解析,需要一颗处理器,也就是MCU,另外还能从电气特性上能符合type C物理层的要求,目前cypress的CCG2、CCG3,国内知名电源厂商英集芯的IP2716都是不错的选择。

快速充电技术规范的PPS(Programmable Power Supply)

  • USB PD 3.0:同时覆盖高压低电流、低压大电流
  • USB PD 3.0规范了电压输出范围:3.0V21V,步进调幅电压为20mV。

注意:有 Type-C 输出的,不一定是支持 USB-PD 协议充电器;支持 USB-PD 协议的充电器,一定是 Type-C 输出的

2. USB PD3.0 通信流程

2.1 发送数据包

(1)接收来自协议层的数据包;

(2)进行CRC校验;

(3)将CRC校验结果编码到数据包上;

(4)将校验后的数据包通过信号线传送出去;

2.2 接收数据包

(5)恢复时钟,并锁定到数据包的前导码上;

(6)检测SOP;

(7)解码接收到的数据,包括CRC;

(8)判断接收到的数据是否是有效数据。

图2-2 USB-PD通信流程-BMC数据传输

2.3 双相标记编码(BMC)

BMC是有效的DC平衡(每个1是DC平衡的,两个连续的零是DC平衡的,不管中间1的个数是多少)。

图2-3-1 BMC数据实例

图2-3-2 BMC通用电气规范要求

2.4 符号编码(4B5B)

除前导码外,线路上的所有通信应使用4B5B线路代码进行编码。发送时将4位数据编码为5位符号以供传输,接收时需将5位符号解码为4位数据以供接收器使用。

4B5B代码提供数据编码和特殊符号,使用特殊符号来表示硬重置,并描绘数据包边界。

表2-4 4B5B符号编码表

3. 数据包格式

数据包格式包括前导码、SOP*、数据包数据(包括消息头、CRC和EOP)。 数据包格式如图3-1所示,并指明数据包的哪些部分应进行4b/5b编码。一旦4b/5b编码,整个包应通过CC使用BMC传输。注意,数据包中的所有比特,包括前导码,都是BMC编码的。

图3 USB通信传输包格式

3.1 前导码(Preamble

前导码由交替“0”和“1”的64位序列组成(以“0”开头,以“1”结尾)。并且,前导码不应被4b/5b编码。接收器应能容错第一个跳变沿丢失。发射机可以通过tStartDrivemin改变前导码的开始(见图5-10)。

tStartDrivemin:发射机驱动线路时,发送前导码首位前的时间。所以,根据tStartDrive及表2-3-2的tUnitInterval,前导码的第一个逻辑位时间范围为 2.03~4.70 us

图3-1 前导码的BMC编码

3.2 SOP*(Start of Packet Sequence

SOP/SOP’/SOP”统称为SOP*。接收器应搜索所有四个K码,当在正确的位置发现四个K码中的三个或四个时,可以将其解释为有效的有序集。
表3-2-1  Ordered set
K-code NO.SOPSOP'SOP"SOP'_DebugSOP"_DebugHard ResetCable Reset
1Sync-1Sync-1Sync-1Sync-1Sync-1RST-1RST-1
2Sync-1Sync-1Sync-3RST-2RST-2RST-1Sync-1
3Sync-1Sync-3Sync-1RST-2Sync-3RST-1RST-1
4Sync-2Sync-3Sync-3Sync-3Sync-2RST-2Sync-3

在表3-2的最后两列,可以看到复位帧(Hard Reset及Cable Reset)。

图3-2-2 Hard Reset帧结构
图3-2-3  Cable Reset帧结构

3.3 有效载荷(Packet Payload)

规范定义了三种类型的消息:

1. 控制短消息:用于管理端口伙伴之间的消息流或交换不需要额外数据的消息,长度:16。

2. 数据信息:长度:48b~240b。数据信息有3种: ①展现功能及谈判力,②用于BIST的, ③供应商定义的。

3. 扩展消息:长度:最多MaxExtendedMsgLen字节。有以下 几种类型:①电源和电池信息;②用于安全的;③固件更新用的;④供应商定义的。

如图3-3-1所示,16-bit 信息头(Message Header )的各位信息如下所示:

15:Extended:扩展字段;为1时为扩展消息,为0时为控制消息或数据消息

14~12:Number of Data Objects:有效荷载的数据数量,当字段为零时,表示当前为控制信息,否则为数据信息。

4~0:Message Type:数据类型:有效荷载的数据类型。

图3-3-1 Message Header

3.3.1 控制信息

图3-3-1_1 控制信息帧格式

图3-3-1_2 控制信息命令
图3-3-1_3 控制信息命令

3.3.2 数据信息

图3-3-2_1 数据信息帧格式
  • 0..7 Data Object(s):0..224bit, 1 Object单元为32bit。

图3-3-2_2 数据信息命令
图3-3-2_3 数据信息命令

3.3.3 扩展信息

图3-3-3_1 扩展信息命令

图3-3-3_2Extended Message Header
  • 若Chunked位为1时,此字段为消息中填充到4字节边界的数据数量,包括作为第一 个数据对象一部分的扩展头。
  • 若Chunked位为0时,此字段作为保留字段。注意,在这种情况下,消息长度仅由扩展消息头中的数据大小字段确定。
  • Chunk Number字段指示返回的块的数目。块数总数为10时,编号从0~9。
  • 消息头(图3-3-1)中的 Number of Data Objects 应表示消息中填充到4字节边界的数据对象数,包括扩展头的第一个数据对象。

3.4 CRC

CRC:32bit,计算除帧符号(Preamble,SOP*,EOP)之外的有效载荷的所有字节。

// U8 *pcDataStream:原始数据流
// U32 sNumberOfDataBytes:原始数据流长度
U32 Helpers::CalculateCRC32(U8 *pcDataStream, U32 sNumberOfDataBytes)
{U8  cCurrentData = 0;U32 genPolyCrc32 = 0x04C11DB6; //spec 0x04C1 1DB7U32 sCRC32Result = 0xFFFFFFFF;U32 newbit = 0, newword = 0;for (U32 i = 0; i < sNumberOfDataBytes; i++) {cCurrentData = *(pcDataStream + i);for(int j = 0; j < 8; j++) {newbit = ((sCRC32Result >> 31) ^ (cCurrentData & 1)) & 1;newword = newbit ? genPolyCrc32 : 0;sCRC32Result = ((sCRC32Result << 1) | newbit) ^ newword;cCurrentData = (cCurrentData >> 1);}}// -- sWrapint ret = 0, k = 0, bit = 0;U32 cWrap = ~sCRC32Result;for(int i = 0; i < 32; i++) {k = 31 - i;bit = (cWrap >> i) & 1;ret |= bit << k;}return ret;
}

3.5 EOP

EOP:01101 参考表2-4.

其他详细信息请参考手册:USB_PD_R3_0 V1.1 20170112.pdf

4.USB-PD通信实例实测

本实例使用 Kingst LA5016 usb 逻辑分析仪检测USB-PD协议数据通讯。下图是一个完整的数据包分析截图。从图中可以看到,LA5016的USB-PD解析模块,将协议数据分为6部分:Reset condition(主机复位)、Presence condition(从机应答)、主机发送ROM命令、从机回应ROM命令、主机发送功能命令解析及从机回应功能命令解析。

下图为USB-PD协议设置截图,其中CC为目标数据通道,同时可以设置是否显示Marker点。

图4_1 USB-PD协议设置
图4_2 USB-PD协议解析通信检测
图4-3 Preamble及SOP详细信号截图

http://chatgpt.dhexx.cn/article/ipx6lPbP.shtml

相关文章

雷达干扰技术(一)PD雷达的特征

文章目录 1 多普勒频率2 PD雷达基本原理和组成3 PD雷达的信号特征 1 多普勒频率 雷达使用多普勒频率来提取目标的径向速度&#xff08;距离变化率&#xff09;&#xff0c;以及区分运动和静止目标与物体&#xff0c;例如杂波。 多普勒现象描述了由于目标相对于辐射源的运动而…

详解PD3.0协议

通过65W充电头,给电池充电,中间有个充电芯片CCG3PA,电池可充可放,也就是PD的Power role可以是Source也可以是Sink。 在充电时的PD协议中的Device Discovery,通过SOP_Prime类型的消息进行交互,5个VDO包含了必要信息。其中cable VDO会告知自己是3A还是5A的线,不同的线能承…

PD-1和PD-L1到底是什么?

PD-1全称程序性死亡受体1&#xff0c;英文名字为Programmed Death 1&#xff0c;是一种重要的免疫抑制分子&#xff0c;为CD28超家族成员。以PD-1为靶点的免疫调节在抗肿瘤、抗感染、抗自身免疫性疾病及器官移植存活等方面均有重要的意义。其配体PD-L1也可作为靶点&#xff0c;…

药物相关 PK(药代动力) 、PD(药效)指标知识

1、PK&#xff08;药代动力&#xff09; Pharmacokinetic PK&#xff08;Pharmacokinetics&#xff09;主要研究药物在体内的吸收、分布、代谢和排泄过程&#xff0c;主要包括药物的药代动力学参数&#xff0c;如清除率、半衰期、分布容积等 PK代表药物的药代动力学&#xff…

pd.melt

一、函数 pd.melt( [frame, id_varsNone, value_varsNone, var_nameNone, "value_namevalue", col_levelNone] 参考官方文档 melt: V (使)熔化&#xff0c;融化 pd.melt将多列数据进行融合。 二、参数 id_vars: tuple, list, or ndarray, optional 用作标识符的列…

一文读懂USB3.1、USB Type-C、USB PD到底是什么?

USB3.1、USB Type-C、USB PD这几个英文单词应该是目前与USB接口相关的较热门的英文单词&#xff0c;大家或多或少都会在有意或者无意下接触到与其相关的一些信息&#xff0c;但是相对于大部分人来说也仅仅是知道有这么一个东东&#xff0c;但是对其功能及用途却并不了解&#x…

USB-PD 协议

USB-PD&#xff08;Power Delivery&#xff09;是基于USB Type-C的一种电源供电标准&#xff0c;最大供电功率可达100瓦&#xff08;W&#xff09;&#xff1b;随着USB Type-C的普及&#xff0c;越来越多的设备&#xff08;手机、平板、显示器、工作站、充电器等&#xff09;使…

PD功能介绍

PD(Placement Driver)&#xff0c;集成了ETCD, ETCD的Raft保证了数据的一致性&#xff1b; PD作用 整个集群TiKV元数据的存储分配全局ID和事物ID生成全局时钟TSO-事物开始时间、提交时间等搜集集群信息进行调度搜集Label功能支持高可用提供TiDB Dashboard功能 TSO physical …

python中pd是什么意思_python pd

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 这里我们的目的是通过智能过滤器来减少查询cpu时间我想要通过其他数据框列名来过滤pd.read_sql中的列可能吗? 第1步:df1数据帧age1和age3是我未来的pd.read_s…

OBS多路推流插件使用方法(超级详细,亲测可用)

前提&#xff1a;OBS版本需要高于25.0 一、下载地址&#xff1a; https://download.csdn.net/download/longgeaisisi/12597711 二、下载后解压内含文件如下&#xff1a; 三、把这两个文件复制到你OBS安装目录下&#xff0c;覆盖&#xff1a; 四、重启OBS软件&#xff0c;这时…

视频直播推流与拉流的实现

序言 最近在研究直播的弹幕&#xff0c;东西有点多&#xff0c;准备记录一下免得自​​己忘了又要重新研究&#xff0c;也帮助有这方面需要的同学少走点弯路。关于直播的技术细节其实就是两个方面一个是推流一个是拉流&#xff0c;而弹幕的实现核心在即时聊天&#xff0c;使用聊…

直播推流优化|音视频开发

直播推流端是整个直播内容的生产源头。我们熟知的推流工具有&#xff1a;PC 推流工具 OBS、手持设备和各个直播平台的手机推流 App、针对一些复杂场景有更专业的导播台硬件等等。虽然工具众多&#xff0c;但推流端的整个工作流程还是比较固定的&#xff1a; 摄像头、麦克风采集…

OBS推流工具介绍及桌面录屏推流功能实现

OBS推流工具介绍及桌面录屏推流功能实现 文章目录 OBS推流工具介绍及桌面录屏推流功能实现1 OBS工具介绍2 OBS工具安装及简单使用2.1 安装步骤2.2 简单使用介绍 3 OBS实现桌面录屏推流工具实现4 总结 流媒体开发工程中&#xff0c;我们除了使用ffmpeg等工具辅助调试外&#xff…

RTMP推流方案总结

由于项目需要 RTMP 推送 H264 数据&#xff0c;在网上查找了下相关的方案&#xff0c;总结一下。 RTMP协议简介 在总结之前&#xff0c;我们先简单介绍一下 RTMP 协议。 RTMP(Real Time Messaging Protocol) 实时消息传送协议是 Adobe Systems 公司为 Flash 播放器和服务器之间…

推流工具 OBS 使用指南

推流工具 OBS 使用指南 内容转载阿里云文档–第三方推流工具使用指南 OBS介绍 什么是OBS&#xff1f; Open Broadcaster Software 是一款好用的直播流媒体内容制作软件。 OBS使用是否收费&#xff1f; 不收费&#xff0c;这个程序和它的源代码都是免费的。 OBS都支持哪些…

rtmp推流和拉流

提前说明&#xff0c;文章所用主要摘自网络&#xff0c;本文只是整合。鉴于来源太多&#xff0c;不进行引用说明 NGINX 安装nginx及安装nginx模块 nginx下载地址 http://nginx.org/download/nginx-1.20.1.tar.gz nginx-rtmp模块 组件下载地址 https://github.91chifun.w…

使用软件实现直播推流

rtmp媒体服务器&#xff1a;这里使用srs &#xff1a;https://github.com/ossrs/srs 首先clone到本地&#xff0c;进入到trunk目录&#xff1a; git clone https://github.com/ossrs/srs.git cd srs/trunk ./configure 最后执行&#xff1a;make 执行成功后&#xff0c;就…

基于FFmpeg进行rtsp推流及拉流(详细教程)

目录 1. 安装FFmpeg 1.1 Windows系统 1.2 Ubuntu 和 Debian 系统 1.3 CentOS 和 Fedora 系统 1.4 macOS系统 2. 安装rtsp-simple-server 3. FFmpeg推流 3.1 UDP推流 3.2 TCP推流 3.3 循环推流 4 拉流 4.1 ffplay/VLC拉流显示 4.2 FFmpeg拉流保存成视频 1. 安装FFm…

音视频直播推流和拉流到底是什么意思?

为什么直播现场的信息&#xff0c;用户通过手机或者网站就能很快的看到呢&#xff1f;为什么有时候网络不稳定&#xff0c;直播效果会有延迟呢&#xff1f;现场的视频信号又是如何传到网络呢&#xff1f; 这些所有问题的产生&#xff0c;都离不开视频直播中常说的两个词&#…

音视频流媒体-推流与拉流简介

一、概念 话不多说&#xff0c;先了解概念&#xff0c;再看示意图更直观&#xff1a; 1.1 推流 推流&#xff1a;将直播的内容推送至服务器的过程。即指的是把采集阶段封包好的内容传输到服务器的过程。其实就是将现场的视频信号传到网络的过程。“推流”对网络要求比较高&a…