采用二次复位,从PD切到别的协议也复位

1. 修改docs/更新日志.md,补充PD跨类别切换复位相关说明
2. 调整chrg_comm.c中协议切换复位判断条件,改为PD状态变化时复位
3. 更新代码注释,优化协议切换流程的说明逻辑
This commit is contained in:
wrh
2026-08-26 10:41:57 +08:00
parent 06dbecfeb6
commit 6103d6949e
4 changed files with 1857 additions and 12 deletions
+4 -5
View File
@@ -2590,10 +2590,9 @@ static eMBException chrg_comm_apply_source_effect(rt_uint8_t ch,
protocol_switch_requested = north_config_changed;
new_pd_state = chrg_comm_source_pd_state(
(rt_uint8_t)pShadow->source.protocol);
/* 只有已知的非PD -> PD切换执行完整硬件复位。 */
/* PD与非PD之间发生跨类别切换时执行完整硬件复位。 */
old_pd_state = chrg_comm_source_pd_state((rt_uint8_t)old_protocol);
need_source_reset = (old_pd_state == SOURCE_PD_STATE_NON_PD) &&
(new_pd_state == SOURCE_PD_STATE_PD);
need_source_reset = (old_pd_state != new_pd_state);
target_curr = pShadow->source.pd_set.mm.max_cur;
/* 影子区只拥有COM配置;北向解析产生的运行目标和回读数据继续由pReal持有。 */
@@ -2624,8 +2623,8 @@ static eMBException chrg_comm_apply_source_effect(rt_uint8_t ch,
}
/*
* PD配置或CC发生变化,以及从PD切换到非PD时,先断开CC;
* 其它协议配置变化直接从0xD0开始。
* PD配置或CC发生变化时进入切换流程;跨PD类别切换时先执行完整复位。
* 同类别协议配置变化和仅CC切换直接从0xD0开始。
*/
if (north_config_changed) {
chrg_roll_nor_source_switch_reset(ch);
+1851 -1
View File
File diff suppressed because it is too large Load Diff
-6
View File
@@ -1,6 +0,0 @@
# Allegro advisory lock file
DATE=Tue Aug 25 19:43:27 2026
USER=Adminuser
HOST=DESKTOP-5RA9F3K
PROGRAM=Allegro
PID=39932
+2
View File
@@ -4,6 +4,8 @@
### Source 复位后的初始化流程
- 从其他协议切换到 PD 时复位加入断开CC,D+D-,GND逻辑,等断开后再复位,再初始化
- 增加 PD 切换到非 PD 协议时的完整复位;PD/非PD跨类别切换统一执行复位。
- PD切PD、非PD切非PD以及仅切换CC线时不复位。
- 新增 `SOURCE_WORK_INIT_WAIT`,复位回码后重新执行 Source 初始化,并等待南向初始化批次完成。
- 加入了读取版本号