> 技术文档 > PD受电 协议芯片 CH224A/Q使用笔记

PD受电 协议芯片 CH224A/Q使用笔记


文章目录

 

前言

一、基本原理图

1.单电阻配置和 I2C 配置参考原理图

2.I/O 电平配置参考原理图

(1) 无需和 CH224 进行交互或控制时

(2) 用3.3V/5V MCU对 CH224 进行控制时

二、CH224A替换CH224K

1.当CH224K为电阻配置

2.当CH224K为电平配置

三、CH224A/Q  I2C

四、Fixed请求

五、AVS请求

六、PPS请求

七、模拟Emarker

八、A口适配器及PG

总结


前言

        相比于CH224K/D, CH224Q/A支持USB PD3.2快充协议 最高支持PD3.2 140W。 支持请求PPS、EPR FIXED 、EPR AVS ,内置LDO,通过 I2C 接口可以读取协议握手状态和读取当前PD 档位额定电流。芯片内置高压 LDO,静态功耗低,集成度高,外围精简。支持4-30V输入电压

    详细可参考:CH224DS1.PDF - 南京沁恒微电子股份有限公司https://www.wch.cn/downloads/CH224DS1_PDF.html

CH224A和CH224Q的区别在于封装不同,CH224A可以替换CH224K。


一、基本原理图

1.单电阻配置和 I2C 配置参考原理图

2.I/O 电平配置参考原理图

(1) 无需和 CH224 进行交互或控制时

(2) 用3.3V/5V MCU对 CH224 进行控制时

注意:

    1.如果使用5V MCU对CH224A/Q进行电平配置,CFG1需串联2K电阻。

    2.电阻配置最低为9V,电平配置没有15V挡位,CFG2、3内置上拉。且只有在电阻配置下才可以用I2C配置。


二、CH224A替换CH224K

1.当CH224K为电阻配置

        1脚串联至VBUS的1K电阻短接或换为0Ω ;

        8脚串联至VBUS的10K短接或换为0Ω。

2.当CH224K为电平配置

        1脚串联至VBUS的1K电阻短接或换为0Ω ;

        8脚串联至VBUS的10K短接或换为0Ω ;

        9脚需要串联100K电阻至VBUS。
     

注意:

        1.CH224A的CFG2、3 内置上拉,根据电平配置选择CFG1 2 3下拉。

        2.!!!!芯片CFG1引脚的耐压只有3.8V左右,不能像CH224K一样上拉至VDD,需要上拉100K至VHV!!!!


三、CH224A/Q  I2C

         环境:CH32V307VCT6评估板,POWER-Z,CH224Q测试板,联想PD3.1 140W适配器
芯片功能寄存器表:

        编写好I2C初始化以及读写函数后开始读取CH224Q寄存器并处理

        此时为电阻配置9V,抓包并打印读取到的寄存器信息和挡位信息:

        请求EPR FIXED 28V5A挡位后,抓包并打印读取到的寄存器信息和挡位信息:

        (后文有介绍请求EPR、AVS、PPS)

        在0X60~0X8F寄存器中 SPR模式下可以读到Head+PDO+CRC 是一个完整的Source Cap数据。
         在EPR模式下可以读到EPR Source Cap中第一包Head+ExtHead+PDO和第二包PDO+CRC。
(在EPR模式中读PD电源数据寄存器时其余位不为零,但不影响解析)


四、Fixed请求

        固定电压挡位请求可直接再0x0A中写入电压档位对应值即可

void Fixed_req(u8 vol)//fixed请求{ switch(vol) { case 5: if(I2C_Read_Byte(I2C1 , (0x23<<1) , 0x0A)!=0) I2C_Write_Byte(I2C1,(0x23<<1),0x0a, 0); printf(\"Req_ 5V... \\r\\n\"); break; case 9: if(I2C_Read_Byte(I2C1 , (0x23<<1) , 0x0A)!=1) I2C_Write_Byte(I2C1,(0x23<<1),0x0a, 1); printf(\"Req_ 9V... \\r\\n\"); break; case 12: if(I2C_Read_Byte(I2C1 , (0x23<<1) , 0x0A)!=2) I2C_Write_Byte(I2C1,(0x23<<1),0x0a, 2); printf(\"Req_12V... \\r\\n\"); break; case 15: if(I2C_Read_Byte(I2C1 , (0x23<<1) , 0x0A)!=3) I2C_Write_Byte(I2C1,(0x23<<1),0x0a, 3); printf(\"Req_15V... \\r\\n\"); break; case 20: if(I2C_Read_Byte(I2C1 , (0x23<<1) , 0x0A)!=4) I2C_Write_Byte(I2C1,(0x23<<1),0x0a, 4); printf(\"Req_20V... \\r\\n\"); break; case 28: if(I2C_Read_Byte(I2C1 , (0x23<<1) , 0x0A)!=5) I2C_Write_Byte(I2C1,(0x23<<1),0x0a, 5); printf(\"Req_28V... \\r\\n\");break;//注意请求进入EPR时尽量等待1S左右 再进行其他操作 default : printf(\"Req_error... \\r\\n\");break;//Fixed仅可请求5V 9V 12V 15V 20V 28V }}

        分别请求:5V、9V、12V、15V、20V、28V:


五、AVS请求

        AVS的请求先 在0X52写低八位再向0X51写高七位,将0X51的最高位使能位置1,最后在电压控制寄存器0x0A中写7

void AVS_req(float vol)//AVS请求{ u16 data=0; u8 AVS_DataH=0; u8 AVS_DataL=0; data=(u16)(vol*1000.0)/100; AVS_DataH=(u8)(((data&0xFF00)>>8)|(0x80)); AVS_DataL=(u8)(data&0x00FF); I2C_Write_Byte(I2C1,(0x23<<1),0x52, AVS_DataL); Delay_Ms(2); I2C_Write_Byte(I2C1,(0x23<<1),0x51, AVS_DataH); Delay_Ms(2); if(I2C_Read_Byte(I2C1 , (0x23<<1) , 0x0A)!=7) { Delay_Ms(2); I2C_Write_Byte(I2C1,(0x23<<1),0x0a, 7); Delay_Ms(2); if(I2C_Read_Byte(I2C1 , (0x23<<1) , 0x0A)==7) printf(\"Req_AVS r\\n\"); }}

AVS:25V 5A 125W 请求成功


六、PPS请求

        首次申请 PPS 时先配置电压,然后将电压控制寄存器配置为 PPS 模式,后续调压直接修改 PPS 电压配置寄存器即可

void PPS_req(float vol) //PPS请求{ u8 data=0; data=(u8)(vol*10.0); I2C_Write_Byte(I2C1,(0x23<<1),0x53, data); Delay_Ms(2); if(I2C_Read_Byte(I2C1 , (0x23<<1) , 0x0A)!=6) Delay_Ms(2); I2C_Write_Byte(I2C1,(0x23<<1),0x0a, 6); printf(\"PPSdata_write: %02x Req: %.2f V \\r\\n\",data,(float)(data/10.0));}

PPS:12.5V请求成功


七、模拟Emarker

        CH224A/Q模拟E-marker功能是公口方案,需要芯片的CC2对GND下拉1K,配置方式等其它功能与母口方案一致


八、A口适配器及PG

        CH224A/Q兼容多个A口协议,在source端为A口适配器条件下,电流数据等寄存器无效,最新版本CH224Q/A支持BC、AFC、FCP等A口协议

        芯片10脚PG是一个开漏脚,低电平有效,即请求电压成功PG拉低。


总结

以上是CH224Q的一些基本的应用,CH224A同样适用,测试源码放在了链接里,写的比较烂,有需要的也可以参考下,还请各位大佬们多多指点。CH32V307VCT6-CH224Q.zip · 妖媚的猪/CH32V307VCT6-CH224Q - Gitee.comhttps://gitee.com/ZhangWXgit/ch32-v307-vct6-ch224-q/blob/master/CH32V307VCT6-CH224Q.zip