From 0ed8c98e483eaf012ad3a3c4a211ce4b1bb01ca7 Mon Sep 17 00:00:00 2001 From: wrh Date: Wed, 30 Sep 2026 14:52:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DPD=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E6=97=B6CC=E5=8F=82=E6=95=B0=E6=9C=AA=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E5=85=85=E7=94=B5=E8=BE=93=E5=87=BA=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1 将南向COM单次最大发送条数从2调整为6 2 更新协议板版本寄存器值为0x0145 3 修改CC设置逻辑,协议切换后强制重新设置CC 4 新增调试打印语句,便于排查复位后的D+D-状态 5 同步版本号至V1.1.53并更新修改日志 --- apps/chrg/applications/thread/chrg_comm.c | 11 +++++------ apps/chrg/applications/thread/chrg_north.h | 2 +- apps/chrg/applications/thread/chrg_roll_nor.c | 3 +++ apps/chrg/applications/utils/chrg_def.h | 4 ++-- docs/修改日志.md | 8 ++++++++ 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/apps/chrg/applications/thread/chrg_comm.c b/apps/chrg/applications/thread/chrg_comm.c index a64ee3b..dd2031b 100644 --- a/apps/chrg/applications/thread/chrg_comm.c +++ b/apps/chrg/applications/thread/chrg_comm.c @@ -27,7 +27,7 @@ #include "stm32f4xx_hal.h" #define HOLD_REG_FIRMWARE_VERSION 0x0300U /* 协议板固件版本,只读 */ -#define CHRG_FIRMWARE_VERSION 0x0144U /* 当前协议板版本:V1.1.52 */ +#define CHRG_FIRMWARE_VERSION 0x0145U /* 当前协议板版本:V1.1.53 */ rt_uint8_t ucDiscInBuf[(TOTAL_DISC_REGS+BITS_UCHAR-1)/BITS_UCHAR]; @@ -2022,12 +2022,11 @@ static eMBException chrg_comm_apply_sink_effect(rt_uint8_t ch, pReal->sink.work_mode = SINK_WORK_INIT; } else if (full_handshake_change) { /* - * 只有CC实际变化时才发送目标CC命令并等待;协议类型或组号 - * 单独变化时直接重发PD帧,不重复设置未变化的CC。 - * 协议与CC同时变化时先设置目标CC,CC稳定后再发送协议; - * 仅协议变化时不重复设置未变化的CC。 + * 协议类型变化会复位Sink协议板,复位会清除协议板内部CC选择; + * 即使上位机CC参数未变化,也必须重新设置CC并等待稳定后再设协议。 */ - if (diff_info.cc_changed && protocol_data_changed) { + if (diff_info.protocol_changed || + (diff_info.cc_changed && protocol_data_changed)) { /* Protocol-before-CC test flow is disabled in this version. */ target_sub = diff_info.cv_changed ? IDX_SET_SINK_CC_BEFORE_PD_WITH_MODE : diff --git a/apps/chrg/applications/thread/chrg_north.h b/apps/chrg/applications/thread/chrg_north.h index 1707e0a..1b1a722 100644 --- a/apps/chrg/applications/thread/chrg_north.h +++ b/apps/chrg/applications/thread/chrg_north.h @@ -27,7 +27,7 @@ #endif /* 南向COM批次中单通道连续收到有效回码后的最大发送条数。 */ -#define SOU_COM_BURST_MAX 2U +#define SOU_COM_BURST_MAX 6U /* 自动停止带载后,电压恢复时需要连续确认的新P1采样帧数。 */ #define SINK_LOAD_RESTART_CONFIRM_COUNT 2U diff --git a/apps/chrg/applications/thread/chrg_roll_nor.c b/apps/chrg/applications/thread/chrg_roll_nor.c index e7125b4..af4771e 100644 --- a/apps/chrg/applications/thread/chrg_roll_nor.c +++ b/apps/chrg/applications/thread/chrg_roll_nor.c @@ -270,6 +270,9 @@ static rt_bool_t chrg_roll_nor_sink_wait_process(rt_uint8_t ch, g_sink_reset_wait_mask &= (rt_uint8_t)~bit; g_sink_reset_wait_start[ch] = 0U; chrg_nor_sw_rel((eIDX_NOR_CH)ch, ID_SINK); + #if SOUTH_COMMAND_DEBUG + rt_kprintf("-------D+D- OPEN AFTER RESET: CH%d------\n", ch + 1U); + #endif pSW->sub = g_sink_reset_next_sub[ch]; g_sink_reset_next_sub[ch] = 0U; return RT_TRUE; diff --git a/apps/chrg/applications/utils/chrg_def.h b/apps/chrg/applications/utils/chrg_def.h index f9f69ff..f2bb32c 100644 --- a/apps/chrg/applications/utils/chrg_def.h +++ b/apps/chrg/applications/utils/chrg_def.h @@ -14,8 +14,8 @@ /* CHRG application version. Keep this value synchronized with the changelog. */ #define CHRG_VERSION_MAJOR 1U #define CHRG_VERSION_MINOR 1U -#define CHRG_VERSION_PATCH 52U -#define CHRG_VERSION_STRING "V1.1.52" +#define CHRG_VERSION_PATCH 53U +#define CHRG_VERSION_STRING "V1.1.53" /* * Channel polling mode: diff --git a/docs/修改日志.md b/docs/修改日志.md index 6436116..a90783e 100644 --- a/docs/修改日志.md +++ b/docs/修改日志.md @@ -1,5 +1,13 @@ # 修改日志 +## V1.1.53 - 2026-09-30 + +### 负载协议切换后CC恢复 + +- Sink协议类型切换触发复位后,固定重新下发CC选择并等待稳定,再设置目标协议。 +- 修复PD切换为标准5V时CC参数未变化而跳过CC设置,导致充电头不重新输出的问题。 +- 协议板版本寄存器 `0x0300` 更新为 `0x0145`。 + ## V1.1.52 - 2026-09-29 ### 南向YMODEM发送结果校验