[单片机芯片] 【CH32X035评估板测评】+USB快充SNK端测试

[复制链接]
 楼主| forgot 发表于 2023-10-8 22:17 | 显示全部楼层 |阅读模式
虽然写了好几篇CH32X035的测评了,但是CH32X035给我的印象主要卖点还是USB PD快充协议。
不管是作为SNK还是作为SRC,官方都给出了demo例程,为第一次接触USB PD开发的提供了便利。

微信截图_20231008221059.png

DEMO工程中的PD_Process.c和PD_Process.h是协议的核心内容。
通过编译SNK例程进行烧写后,接入uasrt1可以看到SystemClk和ChipID的打印信息,并且启动PD SNK TEST。
微信图片_20231008194834.png

通过type-C接入电源适配器可以看到SRC Connect的打印信息。
我的是:
SystemClk:48000000
ChipID:03510601
PD SNK TEST
CC1 SRC Connect
根据需要要改一下打印的串口波特率,默认的不记得了,我改成的是115200,要跟PC端打印软件一致就好。

在PD_Process.h中的
#define PDO_INDEX_1                1
#define PDO_INDEX_2                2
#define PDO_INDEX_3                3
#define PDO_INDEX_4                4
#define PDO_INDEX_5                5
可以修改请求电压,可以根据实际供电需求来选择。并且通过打印的串口1可以显示请求的电流和电压参数。
  1. void PDO_Request( UINT8 pdo_index )
  2. {
  3.     UINT16 Current,Voltage;
  4.     UINT8  status;
  5.     if ((pdo_index > PDO_Len) || (pdo_index == 0))
  6.     {
  7.         while(1)
  8.         {
  9.             printf("pdo_index error!\r\n");
  10.             Delay_Ms(500);
  11.         }
  12.     }
  13.     else
  14.     {
  15.         memcpy( &PD_Rx_Buf[ 2 ], &Adapter_SrcCap[ 4*(pdo_index-1) + 1 ], 4 );
  16.         PD_PDO_Analyse( 1, &PD_Rx_Buf[ 2 ], &Current, &Voltage );
  17.         printf("Request:\r\nCurrent:%d mA\r\nVoltage:%d mV\r\n",Current,Voltage);

  18.         PD_Load_Header( 0x00, DEF_TYPE_REQUEST );
  19.         PD_Rx_Buf[ 5 ] = 0x03;
  20.         PD_Rx_Buf[ 5 ] |= pdo_index<<4;
  21.         PD_Rx_Buf[ 3 ] = PD_Rx_Buf[ 3 ] & 0x03;
  22.         PD_Rx_Buf[ 3 ] |= ( PD_Rx_Buf[ 2 ] << 2 );
  23.         PD_Rx_Buf[ 4 ] = PD_Rx_Buf[ 3 ];
  24.         PD_Rx_Buf[ 4 ] <<= 2;
  25.         PD_Rx_Buf[ 4 ] = PD_Rx_Buf[ 4 ] & 0x0C;
  26.         PD_Rx_Buf[ 4 ] |= ( PD_Rx_Buf[ 2 ] >> 6 );
  27.     }
  28.     status = PD_Send_Handle( &PD_Rx_Buf[ 2 ], 4 );

  29.     if( status == DEF_PD_TX_OK )
  30.     {
  31.         PD_Ctl.PD_State = STA_RX_ACCEPT_WAIT;
  32.     }
  33.     else
  34.     {
  35.         PD_Ctl.PD_State = STA_TX_SOFTRST;
  36.     }
  37.     PD_Ctl.PD_Comm_Timer = 0;
  38.     PD_Ctl.Flag.Bit.PD_Comm_Succ = 1;
  39. }

对于会遇到有快充协议需求的产品开发,个人觉得CH32X035是个不错的选择,毕竟通过例程开发起来比较简单。


tpgf 发表于 2024-4-7 16:27 | 显示全部楼层
快充协议和普通的速度的协议有什么差别呢
磨砂 发表于 2024-4-7 17:17 | 显示全部楼层
再一次体现了typeC接口的强大功能
八层楼 发表于 2024-4-7 18:22 | 显示全部楼层
简单来说就是对暗号,和接头一样,暗号通过,接上了头,就能让你的手机开启快充模式,不然你就慢慢的龟速充电吧。
晓伍 发表于 2024-4-7 18:56 | 显示全部楼层
不同的厂家选择的充电电压和电流都不同。所以需要一个协议在充电器和手机间进行协调,确保手机不会被过大的电流充坏。
木木guainv 发表于 2024-4-7 19:30 | 显示全部楼层
这种快充模式是不是只能使用typeC接口啊
xiaoqizi 发表于 2024-4-7 20:04 | 显示全部楼层
我一直不太明白的就是这种纯电的东西为什么要有协议呢

评论

就类似于匹配  发表于 2024-4-8 08:24
chenqianqian 发表于 2024-4-8 07:58 来自手机 | 显示全部楼层
这个还需要软件编程啊?

评论

需要的  发表于 2024-4-8 08:23
duhemayi 发表于 2025-7-24 11:18 | 显示全部楼层
学习
逆鳞风暴 发表于 2025-7-26 10:08 | 显示全部楼层
非常详细的测评,CH32X035的USB PD快充协议确实方便,适合新手快速上手。
穷得掉渣大侠 发表于 2025-7-28 18:17 | 显示全部楼层
确实,CH32X035在USB PD快充协议方面的表现令人印象深刻。官方提供的demo例程对于新手来说非常友好,大大减少了开发难度。
逆鳞风暴 发表于 2025-7-28 21:14 | 显示全部楼层
非常详细的测评!CH32X035的USB PD快充协议实现确实方便了开发者,特别是对于初次接触USB PD的人来说。
星辰伴梦 发表于 2025-8-1 11:41 | 显示全部楼层
确实,CH32X035的USB PD快充协议支持让开发变得更加便捷。你的测评很详细,对于新手来说很有帮助。
彩虹彼岸 发表于 2025-8-7 22:21 | 显示全部楼层
tpgf 发表于 2024-4-7 16:27
快充协议和普通的速度的协议有什么差别呢

字面意思么就是一个充的快一点,一个充的普通一点
Teardrop 发表于 2025-8-16 10:03 | 显示全部楼层
快充的话也只能用type-c来做了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2064

主题

14491

帖子

59

粉丝
快速回复 在线客服 返回列表 返回顶部