【CH32X035评估板】--USB PD SNK
[复制链接]
沁恒CH32X035C8T6支持USB PD功能。本篇主要讲述作为电源消耗端的SNK,可以应用在需要快充的产品设备上。
一.硬件评估及USB PD协议了解
1.由原理图可看到与USB Type-C电源相接有一颗HT7533电压转换LDO,查看其手册资料如下。可知USB PD SNK(电源消耗端) 电压应小于其输入上限电压,即小于28V.
图1:USB PD SNK硬件受限电压
2.关于USB PD协议
USB PD协议的工作原理是利用Type-C接口的CC线(配置通道线,用于识别、控制)作为数据线来协商电压、电流以及供电方向,整个通信过程需要按照特定的数据包格式,并且存在相互认证的过程。下图是USB Type C引脚定义。
图2:USB Type C 引脚
USB PD协议通过特定格式的数据包进行通信,数据包的格式如下所示。
图3:USB PD协议格式
一个完整的USB PD数据包由前导码(Preamble),使用场景码(SOP*所有的PD传输流程),功能码(MessageHeader),数据码(Byte0-n)、校验码(CRC)以及结束码(EOP数据包结束标志)组成,如果数据部分为空,说明数据包仅作为控制指令使用,称为控制消息。有数据内容的称为数据消息,通常数据消息里包含了要变化的电压值和电流值等信息。整个USB PD数据包中,除了前导码不需要进行4b5b编码外,数据包的其他部分均需要进行4b5b编码,指定数据经过4b5b编码后,数据包中所有数据都需要使用BMC编码之后才能通过CC发送。
关于USB PD协议详细文本可在USB官网找到【1】,这里做一个整体了解。
二.代码准备与测验
1.代码梳理与准备
WCH官方SDK已经集成USBPD_SNK和USBPD_SRC,本篇使用前者demo 进行梳理调试使用并测验。
PD_Init()对USB PD进行硬件初始化配置(包括D+,D-,CC1,CC2),PD_PHY_Reset( )对PD SNK初始化和PD_Rx_Mode()配置USB PD接收模式。在main函数(如下图)有定时器初始化,对USB PD初始化配置及PD_Det_Proc连接数据接收处理与PD_Main_Proc协议状态流程处理及接收数据协议解析处理等。官方SDK给出了PD协议完整方案代码,我们结合应用在适配的地方做些小的修改达到需求目的。
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
SystemCoreClockUpdate();
Delay_Init();
USART_Printf_Init(115200);
printf( "SystemClk:%d\r\n", SystemCoreClock );
printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );
printf( "PD SNK TEST\r\n" );
PD_Init( );
TIM1_Init( 999, 48-1);
while(1)
{
/* Get the calculated timing interval value */
TIM_ITConfig( TIM1, TIM_IT_Update , DISABLE );
Tmr_Ms_Dlt = Tim_Ms_Cnt - Tmr_Ms_Cnt_Last;
Tmr_Ms_Cnt_Last = Tim_Ms_Cnt;
TIM_ITConfig( TIM1, TIM_IT_Update , ENABLE );
PD_Ctl.Det_Timer += Tmr_Ms_Dlt;
if( PD_Ctl.Det_Timer > 4 )
{
PD_Ctl.Det_Timer = 0;
PD_Det_Proc( );
}
PD_Main_Proc( );
}
}
USBPD_IRQHandler接收PD数据并做即时应答。PD_Detect( )为CC数据握手判断是否连接。在PD_Main_Proc里有一个很匹配应用的就是在确认连接后电压请求函数PDO_Request,入参查资料初步了解是1--5V,2--9V,3--12V,4--15V,5--20V,供参考。在初始化及PD_Main_Proc用到了SrcCap_Ext_Tab,Status_Ext_Tab等协议数据配置。
图4:USB PD SNK电压请求
2.测试
选择充电头,可查看充电头上适配电压信息,最好能确认充电头有兼容USB PD协议。烧录好程序后,断电,充电头接USB Type C线到开发板,测量VBUS1与GND之间电压。按上配置测的结果如下图。(受限做此实验时手头只有一个杂牌充电器,后续看情况更新多测几组)
图5:USB PD SNK电压测量
通过此次实践,对USB PD电力传输功能有了更进一步了解,此功能可用在快充等产品上,是一个很好的方案选择,值得推荐。
【1】 USB PD协议
https://www.usb.org/document-library/usb-power-delivery
|