关于CH224A/Q 的Source_Capabilities数据解析
目录
六、CH224A/Q IIC地址0x60~0x8f上的数据解析
一、简介
CH224A/Q是沁恒推出的一款支持USB PD3.2的USB PD快充协议受电芯片,最高支持PD3.2 EPR 140W功率。并支持单电阻配置、I/O电平配置及IIC配置。通过IIC接口可以读取协议握手状态和读取当前PD挡位额定电流。
CH224A/Q七位IIC地址为0x22或0x23(不包含读写位)

二、0x60~0x8F中读取到的完整电源消息是什么
在SPR模式下可以读到Head+PDO+CRC 是一个完整的Source Capabilities数据。
在EPR模式下可以读到EPR Source Capabilitie中第一包Head+ExtHead+PDO和第二包PDO+CRC。
三、Source Capabilities数据包抓包
PD协议是通过Type-C口的CC(Configuration Channel)引脚协商电压、电流等参数。推荐使用逻辑分析仪抓取CC上数据。
四、数据结构

SPR模式下的SOURCE CAP结构为:Preamble、SOP*、Message Header、Data Object(s)、CRC、EOP(End Of Packet)。

EPR模式下的SROUCE CAP数据包有两个及以上的数据包组合而成,图上是EPR模式下的第一个数据包的内容。

图上是EPR模式下第二个数据包。
EPR模式下SROUCE CAP的数据结构为:Preamble、SOP*、Message Header、Extended Message Header、Data Object(s)、CRC、EOP(End Of Packet)。
相对与SRP模式多出一个Extended Message Header。
1、Preamble
Preamble由64位交替0 1构成,由0开始1结尾,同时遵循4b5b编码方式。这个段用于频率对齐等功能,对于数据解析不是太重要。

2、SOP*
SOP*(Start of Packet)是一个通用属于用于代替SOP/SOP'/SOP'',都是有序集合(Ordered Sets)的一种,一个有序集合是由4个K-codes组成。

有序集合的种类有以下几种:

在Source_Capabilities Message的数据包中,有序集合可为SOP,SOP的4个K-codes排列为三个连续的Sync-1(11000)后面有一个Sync-2(10001)。

3、Message Header
每个消息数据包都需要由Message Header开头,其中包含了该条消息和PD端口功能的基本信息。

Message Type里面分为控制消息和数据消息两大类,本文介绍的Source_Capabilities Message属于数据消息。

通过查表可知Source_Capabilities Message 的Message Type编号是0 0001.
4、Extended Message Header
每个扩展消息(通过在消息头中的扩展字段被设置来标识)都应包含一个位于消息头之后的扩展消息头。
扩展消息头用于支持包含数据块数据大小的扩展消息,这些数据块要么在一个消息中发送,要么以一组分块的形式发送。当数据块以一组分块的形式发送时,分块序列中的每个分块(除了最后一个分块)都应包含 MaxExtendedMsgchunkLen 字节。序列中的最后一个分块应包含数据块的剩余部分,并且可能少于 MaxExtendedMsgChunkLen 字节,但应填充到下一个 4 字节数据对象边界处。

Extended Message Header一般出现在Source_Capabilities Message和Request Message中,以确定单个未分块扩展消息的形式发送数据大小是否大于 MaxExtendedMsgLegacyLen。以分块的形式发送数据时,最多可以分成十个数据块。
5、Data Object
Source_Capabilities Message属于是数据类型的消息,其后面的Data Object属于是由32-bit组成的Power Data Objects。可以分为固定供应(Fixed Supply )、电池(Battery)、可变供电(非电池供电)(Variable Supply (non-Battery) )、增强型(Augmented)。

其对应的具体数据内容如下:



增强型有SPR和EPR两种:


6、CRC
CRC是由32位数据组成的校验码。
7、EOP
EOP是数据包的结尾,其数据内容是一个K-code 01101.
五、数据解析

查询SOURCE CAP中的充电挡位的信息,需要解析PDO数据。入图上所示PDO的第一个挡位数据内容为0801912C,换成二进制为0000 1000 0000 0001 1001 0001 0010 1100。
首先需要判断B31...B30的值,(00b)Fixed Supply、(10b)Variable Supply (non-Battery)、(01b)describes a Battery。若B31...B 30为(11b)那么就要看B29...B28的值,(00b)SPR Programmable Power Supply、(01b)EPR Adjustable Voltage Supply。
判断出PDO的类型之后,可以对照不同类型的Data Object表格解析充电电压和电流等信息。
六、CH224A/Q IIC地址0x60~0x8f上的数据解析
如果使用的是CH224A/Q的IIC读取到的Source_Capabilities,读取到0x60~0x8f的数据如下所示:


0x60~0x61是Message Header,0x60-->a1,0x61-->61,可以判断Bit15位是0,不带拓展数据信息头,所以后面就是PDO数据。每一个PDO数据是32bit,0x62~0x65为第一个PDO挡位,0x62-->2c、0x63-->91、0x64-->81、0x65-->0a。组合成PDO为0a81912c,换成二进制是 0000 1010 1000 0001 1001 0001 0010 1100,B31~B30为(00b),所以第一个PDO是FIXED挡位,对照表查询可得是5V3A,根据Message Header可知SROUCE CAP一共有6个PDO ,依次解析可以获取完整的SROUCE CAP信息。
请求28V挡位后,PD适配器发送Extended Message Header数据包:


0x60~0x61是Message Header,0x60-->b1,0x61-->f3,可以判断Bit15位是1,带拓展数据信息头,所以0x64~0x67为第一个PDO挡位,0x64-->2c、0x65-->91、0x66-->81、0x67-->0a。也是5V3A。
更多推荐


所有评论(0)