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

目录

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 1DB7
    U32 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);
        }
    }
    // -- sWrap
    int 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详细信号截图
USB PDUSB Power Delivery)协议是一种新兴的USB充电协议,它可以实现高效的充电和电源管理。USB PD协议包含多个数据包类型,这些数据包类型有特定的作用。下面,我们来看一下USB PD协议解析的相关内容。 USB PD协议包分为以下几种: 1.令牌数据包(Token Packet):用于传输令牌,包含控制信息。令牌数据包被用于在接收器和发送器之间进行流控制。 2.数据数据包(Data Packet):用于传输数据,包括可变数据和固定数据;能够传输的数据速率与USB 2.0协议相同,最高速率为480 Mbps。 3.扩展数据包(Extended Data Packet):用于传输大量数据,其数据传输速率可高达10 Gbps。 4.源能量数据包(Source Power Packet):用于传输有关源能量能力的信息,包括最大输出电流和最大输出电压。 5.信令数据包(Message Packet):用于传输控制信息和通知信息,比如设备的连接和断开等;该类数据包还包括对安全性的支持。 6.硬件数据包(Hardware Packet):用于传输外设信息,比如设备的类型和识别信息等。 通过对上述USB PD协议包的解析,我们可以了解到USB PD协议的具体传输方式和数据类型,这对于开发和应用USB PD协议的设备非常重要。同时,我们也可以看到,USB PD协议的高速传输和可靠性能大大提升了设备的充电和电源管理效率,为设备的使用提供了更好的体验。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值