# 修改日志 ## V1.1.32 - 2026-09-17 ### 版本号管理 - 协议板版本寄存器 `0x0300` 的版本编码移至 `chrg_comm.c` 管理,当前返回 `0x0130`(V1.1.32)。 - 应用启动日志版本更新为 `V1.1.32`。 ## V1.1.26 - 2026-09-17 ### 修复Sink角色往返时初始化上下文残留 - Source切回Sink时清除旧Sink初始化阶段、提交标记和延时计时;重新执行清短路及继电器等完整初始化,避免角色切换回码被误判为旧初始化成功。 - 应用版本更新为 `V1.1.26`,对外固件版本寄存器 `0x0300` 为 `0x012A`;Bootloader不变。 ## V1.1.25 - 2026-09-17 ### 修复Sink重复启动及退出Short时初始化卡住 - 同角色Sink参数生效只复制PC可写配置,不再覆盖实时work_mode、sub、On_work、test_mode_old及量测数据。 - 初始化/退出Short期间,相同运行请求继续原事务,不重复取消批次;不同配置返回Modbus忙(异常码0x06),PC需等待后重新发送参数生效。停止流程未完成时也拒绝新运行请求。 - 已开始的初始化收到重复INIT时恢复到INIT_AUX_WAIT,避免被last_state去重卡住;停止和掉电保护允许抢占初始化。 - 按阶段记录初始化命令是否入队,入队失败或批次失败时重试当前阶段,禁止用上一阶段的成功结果跳过未发送的命令。 - 重复/拒绝的Sink配置不再无条件递增北向配置版本,避免连续参数生效导致有效回码被反复丢弃。 - STOP入队失败后由北向轮询继续重试,不依赖On_work或通道使能。 - 应用版本V1.1.25,对外寄存器0x0300返回0x0129;Bootloader不变。不修改Von门槛、串口超时和南向队列容量。 - 增加主机回归测试tests/sink_init(运行真实状态机及COM生效函数,模拟南向批次和时钟)。硬件仍需验证单/四通道循环启停、反复Short进入退出、通信超时恢复及停止安全性。 ## V1.1.24 - 2026-09-15 ### 统一应用版本定义 - CHRG应用版本统一为 `V1.1.24`,版本信息集中定义在 `chrg_def.h`。 - 上位机读取寄存器 `0x0300` 返回 `0x0128`。 - `apps/chrg` 各C源文件和头文件的文件头版本统一为 `V1.1.24`。 - Bootloader版本保持 `V1.0.0` 不变。 - 后续每次修改应用代码时,必须同步更新应用版本号、对外版本编码和本修改日志。 ## V1.1.31 - 2026-09-16 ### 通道保护代码注释 - 补充上位机地址解码、非法通道初值、跨通道写保护的中文注释。 - 补充南向物理选通同步、自动轮询重新选通及电流命令顺序入队的中文注释。 - 协议板版本号更新为 `V1.1.31`,固件版本寄存器更新为 `0x012F`。 ## V1.1.30 - 2026-09-16 ### 南向通道选择与地址校验 - 南向物理选通成功后统一记录 `chrgsouth.idx`,自动轮询每次发送前重新选通目标通道。 - COM、LCD、升级和控制台发送路径同步更新当前通道,选通失败时禁止继续发送。 - 单寄存器写初始化通道变量,并通过统一解码函数拒绝非法分区和越界地址。 - 多寄存器写按每通道50个地址计算通道,并拒绝跨通道写入。 - `SOUTH_COMMAND_DEBUG` 日志增加队列通道、实际物理通道、寄存器和值。 - 协议板版本号更新为 `V1.1.30`,固件版本寄存器更新为 `0x012E`。 ## V1.1.29 - 2026-09-16 ### 取消电流命令覆盖去重 - 删除南向队列对未发送电流命令的覆盖逻辑。 - 同一通道新增的电流设置按提交顺序逐条发送,并分别等待功率板回码。 - 协议板版本号更新为 `V1.1.29`,固件版本寄存器更新为 `0x012D`。 - 待验证:快速连续设置电流时,确认每条电流命令都能在南向日志和功率板侧收到。 ## V1.1.28 - 2026-09-16 ### 测试态退出结果确认 - 初始化发送 `WORK_STOP` 后,通过新的 `P1` 量测重新读取功率板 `status1`。 - 只有确认 `status1` 不再是 `0x05/0x06/0x07`,才继续打开辅助继电器和后续初始化命令。 - 关机流程同样在关闭南向继电器前确认测试态已退出;每连续重发 `WORK_STOP` 3 次后重新计数,仍未退出时保持安全等待并继续重试。 - 协议板版本号更新为 `V1.1.28`,固件版本寄存器更新为 `0x012C`。 ## V1.1.27 - 2026-09-16 ### 功率板测试状态退出保护 - 新增功率板 `status1=0x05/0x06/0x07` 的 Short、OCP、DYNA 状态定义。 - 初始化前识别功率板测试状态,优先发送 `WORK_STOP` 后再继续初始化。 - 负载关机流程调整为 `WORK_STOP` 优先,避免测试退出命令被后续启动状态覆盖。 - 上位机版本寄存器 `0x0300` 更新为 `0x012B`(`V1.1.27`)。 ## V1.1.23 - 2026-09-11 ### 负载初始化继电器时序调整 - 负载初始化先单独下发辅助继电器 `FU_REL_ON (0x01 0x02)`。 - 只有收到匹配回码后,等待 `30ms` 才打开北向负载继电器。 - 北向继电器打开后,再继续下发电流、模式、V_On等初始化参数。 - 辅助继电器回码失败时只重发当前初始化阶段,不提前打开北向继电器。 - 协议板版本号更新为 `V1.1.23`,固件版本寄存器更新为 `0x0127`。 ### 待验证 - 上电初始化日志中确认先收到 `01 02`,约30ms后才出现北向继电器打开。 - 辅助继电器无回码时确认北向继电器保持关闭。 ## V1.1.22 - 2026-09-11 ### 增加纹波滤波调试打印 - 记录每个通道主继电器闭合的 tick 和忽略帧配置。 - 打印忽略帧的序号、原始纹波值及继电器闭合后的经过时间。 - 打印实际进入滤波的帧序号、原始值、滤波值及经过时间。 - 协议板版本号更新为 `V1.1.22`,固件版本寄存器更新为 `0x0126`。 - 待验证:确认宏调整后忽略帧数量和实际进入滤波的时间同步变化。 ## V1.1.21 - 2026-09-11 ### 继电器切换纹波滤波 - 主继电器闭合回码成功后,忽略 `RIPPLE_RELAY_IGNORE_P1_COUNT` 个新P1采样帧;当前值为 `2U`,可在 `chrg_north.h` 中调整。 - 后续纹波持续使用三点中值滤波,滤除单帧尖峰;连续异常纹波仍会正常显示。 - LCD和上位机纹波寄存器统一使用滤波后的纹波值。 - 协议板版本号更新为 `V1.1.21`,固件版本寄存器更新为 `0x0125`。 ### 验证记录 - 待硬件验证:继电器闭合瞬间出现约500mV尖峰时,LCD和上位机不显示该尖峰;忽略2帧后再累计3帧并更新为稳定纹波。 - 待硬件验证:持续三帧以上的高纹波仍能在LCD和上位机显示。 ## V1.1.20 - 2026-09-10 ### D+/D-上位机显示单位修正 - 上位机读取各通道 `D+`、`D-` 保持寄存器时,返回值由内部原始值放大 `10` 倍,适配上位机按 `0.001V` 解析。 - LCD显示、北向回码解析及内部控制值保持原有 `0.01V` 单位,不受影响。 - 增加16位寄存器上限保护,放大结果超过 `65535` 时返回 `65535`。 - 协议板版本号更新为 `V1.1.20`,固件版本寄存器更新为 `0x0124`。 ### 验证记录 - 待硬件验证:D+或D-内部值为 `260` 时,LCD继续显示 `2.60V`,上位机读取值为 `2600` 并显示 `2.600V`。 ## V1.1.19 - 2026-09-10 ### 短路测试绕过 V_ON 门槛 - 短路测试启动批次增加 `Eload_Start_V_ON=500mV`,保证5V输入时不因用户设置的6V V_ON而拒绝短路启动。 - 短路测试期间忽略普通 V_ON 更新,保持功率板使用500mV短路启动门槛。 - 退出短路测试时由初始化流程恢复用户设定的 V_ON。 - 协议板版本号更新为 `V1.1.19`,固件版本寄存器更新为 `0x0123`。 ### 验证记录 - 待硬件验证:V_ON=6V、输入PD5V时,短路模式仍能启动并按周期发送 `WORK_START`。 - 待硬件验证:退出短路模式后,功率板恢复用户设定的 V_ON。 ## V1.1.18 - 2026-09-10 ### 修复 CC 切换时 V_ON 丢失 - 修复 V_ON 与 CC 线同时修改时,V_ON 命令先入队后被完整握手清队列取消的问题。 - 协议软卸载和完整握手统一按 `WORK_STOP -> Eload_Start_V_ON` 顺序下发。 - 握手或命令重试时会重新携带当前 V_ON,避免功率板继续使用旧阈值。 - 协议板版本号更新为 `V1.1.18`,固件版本寄存器更新为 `0x0122`。 ### 验证记录 - 待硬件验证:同时修改 V_ON 与 CC 线,确认功率板收到 `Eload_Start_V_ON`。 - 待硬件验证:确认 CC 切换失败重试、协议电压切换和其他通道调度正常。 ## V1.1.17 - 2026-09-10 ### 协议切换期间禁止误启动 - 将 V_On 稳定确认计数提升为通道级状态,并在协议软卸载、完整握手和自动停止时清零。 - `UNLOAD_WAIT`、`HANDSHAKE_WAIT` 以及协议配置未完成前,电压采样只推进安全流程,不允许进入 `RUNING` 或发送 `WORK_START`。 - 协议/模式配置完成并回到 `IDX_GET_SINK_VC` 后,才重新累计 V_On 稳定确认帧,避免停止后约40ms因旧电压再次启动。 - 协议板版本号更新为 `V1.1.17`,固件版本寄存器更新为 `0x0121`。 ### 验证记录 - 待硬件验证:协议电压切换时确认 `WORK_STOP` 后、协议配置完成前不再出现 `WORK_START`。 - 待硬件验证:确认协议切换、自动停止恢复和三个通道并行调度不受影响。 ## V1.1.16 - 2026-09-09 ### Sink 自动停止后的恢复保护 - 新增 `SINK_LOAD_RESTART_CONFIRM_COUNT`,位于 `chrg_north.h`,当前设为 `2U`。 - 功率板电压作为 V_On 判定源时,仅消费新的 P1 采样帧,旧采样不再重复累计稳定次数。 - 自动停止带载时取消本通道残留南向批次,再单独下发 `WORK_STOP`,避免残留 `WORK_START` 在停止后执行。 - 自动恢复带载前必须收到连续 `2` 帧新的、满足 `V_On` 的电压采样。 ### 验证记录 - 待硬件验证:触发 CH1 自动停止后,确认停止后 2 帧新P1到达前不再出现 `WORK_START`;同时确认其它通道南向命令正常调度。 ## V1.1.15 - 2026-09-09 ### 运行中 V_On 更新 - Sink 通道处于运行状态时,参数生效检测到 `V_On` 改变,会向对应功率板下发 `Eload_Start_V_ON`。 - 下发值保持既有下限:小于或等于 `500mV` 时按 `500mV` 发送。 - 南向队列提交失败时,本次参数生效返回忙,协议板运行参数保持原 `V_On`。 ### 验证记录 - 待硬件验证:运行中修改 `SINK_REG_VON_VOLT (0x0B)` 并执行参数生效,确认功率板收到 `Eload_Start_V_ON` 新值。 ## V1.1.9 - 2026-08-25 ### Source 复位后的初始化流程 - 从其他协议切换到 PD 时复位加入断开CC,D+D-,GND逻辑,等断开后再复位,再初始化 - 增加 PD 切换到非 PD 协议时的完整复位;PD/非PD跨类别切换统一执行复位。 - PD切PD、非PD切非PD以及仅切换CC线时不复位。 - 新增 `SOURCE_WORK_INIT_WAIT`,复位回码后重新执行 Source 初始化,并等待南向初始化批次完成。 - 加入了读取版本号 ## V1.1.8 - 2026-08-24 ### 修改主题 修复了source部分的PD协议长时间运行后会出不来的问题 对应芯海3221/source版本V_1.07 ### Source协议复位切换 - 新增`SOURCE_RESET`命令:发送`06 00 02 18 00 0E`,校验回码`05 00 02 18 16`。 - 首次发送协议不复位;PD与非PD跨类别切换时先复位。 - PD切PD、非PD切非PD以及仅切换CC线时不复位。 - 删除`CC_CLOSE`状态及其共享等待屏障。 - 协议设置回码有效后更新`last_pd_pro`,避免协议尚未生效时错误判断。 ### 验证记录 - 使用1-2,3-4测试自举例程测试俩百次正常 - git diff --check`:通过。 - 旧`CC_CLOSE`状态、宏和调用引用:已检查清理。 - Keil编译:按当前要求未执行,待现场烧录后验证复位回码和协议切换时序。 ## V1.1.7 - 2026-08-08 ### 修改主题 并行执行Sink完整握手中的南向低电流确认与北向协议/CC设置。 ### 主要修改 - 南向安全批次完成并收到辅助继电器回码、建立量测基线后,立即允许北向设置协议和CC线。 - 南向实际电流连续两次不大于 `100mA` 的确认过程与北向协议/CC设置并行执行。 - 北向进入 `GET_SINK_VC` 后,只有低电流确认完成且CC后的 `200ms` 查询保护时间到期,才发送第一条 `0x20`。 - 电压稳定后再发送 `ALL_REL_ON -> 目标电流 -> WORK_START`,防止协议协商期间提前带载。 ### 涉及文件 - `apps/chrg/applications/thread/chrg_roll_nor.c` - `apps/chrg/applications/utils/chrg_sink.c` - `apps/chrg/applications/utils/chrg_sink.h` ### 编译验证 - Keil MDK 编译结果:`0 Error(s), 0 Warning(s)`。 ## V1.1.5 - 2026-08-08 ### 修改主题 协议电压和协议电流变化统一采用软卸载重发协议流程。 ### 主要修改 - 协议类型、CC线和协议组号变化仍进入完整握手并切换南向继电器。 - 协议电压、协议电流单独变化或同时变化时,只发送 `WORK_STOP`,不关闭南向继电器。 - 软卸载不再额外发送 `CURRENT=0`,仅通过实际电流连续两次不大于 `100mA`确认电子负载已停止。 - 协议重新生效且电压稳定后,由RUNNING先写入实际负载电流,再发送 `WORK_START`。 ### 涉及文件 - `apps/chrg/applications/thread/chrg_comm.c` - `apps/chrg/applications/utils/chrg_sink.c` ### 编译验证 - Keil MDK 编译结果:`0 Error(s), 0 Warning(s)`。 ## V1.1.4 - 2026-08-07 ### 修改主题 调整负载低电流启动时的继电器和工作命令顺序。 ### 主要修改 - 设定电流为 `0A` 或低于 `100mA` 时,协议握手仍正常执行。 - 电压达到目标后发送 `ALL_REL_ON`,确保主继电器打开。 - 主继电器打开后继续发送 `WORK_STOP` 和 `CURRENT=0`,保持电子负载不带载。 - 已经处于运行状态切换到低电流时,沿用原有停止流程,不重复切换继电器。 ### 涉及文件 - `apps/chrg/applications/utils/chrg_sink.c` ### 编译验证 - Keil MDK 编译结果:`0 Error(s), 0 Warning(s)`。 ## V1.1.3 - 2026-08-07 ### 修改主题 并行执行Sink南向初始化与北向握手,并优化握手查询和RUNING继电器时序。 ### 主要修改 - `INIT`将 `FU_REL_ON -> CURRENT=0 -> MODE -> VON` 作为一个有序南向批次提交。 - 南向初始化批次成功入队后立即打开北向Sink继电器、设置 `enable=1` 并开始协议握手。 - `SINK_WORK_INIT_AUX_WAIT`改为后台监控南向初始化,不再阻塞北向协议、CC和电压查询。 - 南向初始化失败重试时保留当前北向 `sub`,不重复拉回协议设置起点。 - 协议或CC有效回码后,首条 `0x20` 等待 `200ms`;电压未稳定时后续每 `100ms` 查询一次。 - 一帧通过CRC、ID、命令和配置版本校验的电压达到目标后立即进入 `RUNING`,不再等待第二帧。 - 进入稳定运行后立即解除查询节流,恢复北向正常轮询速度。 - `RUNING`删除重复的 `FU_REL_ON`,调整为 `ALL_REL_ON -> 目标负载值 -> WORK_START`。 ### 涉及文件 - `apps/chrg/applications/utils/chrg_sink.c` - `apps/chrg/applications/thread/chrg_roll_nor.c` - `apps/chrg/applications/thread/chrg_north.c` ### 编译验证 - Keil MDK 编译结果:`0 Error(s), 0 Warning(s)`。 ### 硬件验证 - 待确认南向初始化命令与北向协议/CC设置并行执行且互不重置状态。 - 待确认首条和后续 `0x20` 间隔分别约为 `200ms` 和 `100ms`。 - 待确认进入 `RUNING` 时不再发送 `FU_REL_ON`,主继电器不会被重复断开。 ## V1.1.2 - 2026-08-07 ### 修改主题 降低Sink协议握手阶段的北向电压电流查询频率。 ### 主要修改 - 新增 `SINK_HANDSHAKE_QUERY_INTERVAL_MS`,设置为 `200ms`。 - Sink协议或CC设置收到有效回码后,不立即发送或连续快速发送 `0x20` 查询。 - CC路径的 `200ms` 从有效 `0x17` 回码时刻开始计时,包含原有 `50ms` CC稳定保护。 - 协议握手、软恢复等待和掉电恢复监控阶段的 `0x20` 查询按每 `200ms` 一次执行。 - 北向量测连续两次达到稳定条件后解除节流,`RUNING` 和低电流待机恢复正常查询频率。 - 仅重发协议的 `IDX_SET_SINK_PD_ONLY` 路径同样启动 `200ms` 查询等待。 - 设置协议和CC命令仍然按有效回码、超时和原有重试机制处理。 ### 涉及文件 - `apps/chrg/applications/thread/chrg_roll_nor.c` ### 编译验证 - Keil MDK 编译结果:`0 Error(s), 0 Warning(s)`。 ### 硬件验证 - 待观察协议/CC设置后 `0x20` 的发送间隔是否稳定为不小于 `200ms`。 - 待验证电压连续两次稳定后是否恢复正常量测频率。 ## V1.1.1 - 2026-08-07 ### 修改主题 增加普通负载最低带载电流控制,低电流时保持协议在线但关闭电子负载。 ### 主要修改 - 新增 `SINK_LOAD_ENABLE_MIN_MA`,恒流负载设定低于 `100mA` 时禁止发送 `WORK_START`。 - 最低带载门限只判断南向负载电流 `loadc`,不影响北向协议电流 `pro_loadc` 和协议握手。 - 首次启动或完整重握手后为低电流时,发送 `WORK_STOP -> CURRENT=0` 并保持主继电器关闭。 - 运行中由有效电流降至低电流时,发送 `WORK_STOP -> CURRENT=0`,保持协议、CC和继电器不变。 - 运行中低电流待机恢复有效电流时,只发送目标电流和 `WORK_START`,不重新握手或切换继电器。 - 主继电器未打开的低电流待机使用独立 `SINK_WORK_LOAD_START` 恢复入口,避免被 `RUNING` 状态去重。 - 低电流待机期间仅修改协议电压时不重复卸载,并保持原有主继电器状态语义。 - 将 COM 端运行电流跨门限判断封装为 `chrg_comm_handle_sink_load_current()`,避免生效分支继续膨胀。 - 北向解析将两种低电流待机状态作为稳定状态,不因实际电流为零反复进入 `RUNING`。 - 低电流待机恢复有效电流时,`SINK_WORK_LOAD_START`/`SINK_WORK_LOAD_RESUME` 只作为待启动标记,必须等北向实际电压稳定后才下发 `WORK_START`。 ### 涉及文件 - `apps/chrg/applications/utils/chrg_sink.h` - `apps/chrg/applications/utils/chrg_sink.c` - `apps/chrg/applications/thread/chrg_comm.c` - `apps/chrg/applications/thread/chrg_north.c` ### 编译验证 - Keil MDK 编译结果:`0 Error(s), 0 Warning(s)`。 ### 硬件验证 - 待验证 `20V/3A -> 20V/0A -> 20V/3A` 的南向命令顺序和协议保持情况。 - 待验证首次以低于 `100mA` 的电流启动时,北向握手正常且南向不执行 `WORK_START`。 ## V1.1.0 - 2026-08-07 ### 修改主题 负载启动、掉电恢复、协议重握手和协议电压软切换时序调整。 ### 主要修改 - 负载启动时先向南向发送 `FU_REL_ON`,收到有效回码后才打开北向 Sink 继电器。 - 剩余的负载初始化命令在副继电器确认后入队,北向协议握手与南向初始化并行执行。 - `RUNING` 阶段的南向命令继续追加到同一队列,保持初始化配置、继电器、目标电流/电压和 `WORK_START` 的顺序。 - 掉电恢复时执行 `WORK_STOP -> CURRENT=0 -> ALL_REL_OFF -> FU_REL_ON`,副继电器恢复后等待输入电压重新出现。 - 掉电恢复检测到电压后重新设置协议和 CC,不能使用掉电前的电压样本直接进入 `RUNING`。 - 协议类型、CC、协议组号或协议电流变化进入完整重握手,关闭主副继电器后重新打开副继电器。 - 仅协议电压变化使用软卸载,只发送 `WORK_STOP` 和 `CURRENT=0`,不切换继电器。 - 软卸载恢复时只发送目标电流/电压和 `WORK_START`,不再发送继电器命令。 - 保留连续两次实际电流不大于 `100mA` 的安全确认,以及连续两次稳定电压确认。 - 暂时保持南向主副继电器之间的固定延时为屏蔽状态。 ### 涉及文件 - `apps/chrg/applications/utils/chrg_sink.h` - `apps/chrg/applications/utils/chrg_sink.c` - `apps/chrg/applications/thread/chrg_comm.c` - `apps/chrg/applications/thread/chrg_roll_nor.c` - `apps/chrg/applications/thread/chrg_north.c` ### 编译验证 - Keil MDK 编译结果:`0 Error(s), 0 Warning(s)`。 - 尚未完成硬件验证,需重点观察南向命令顺序、北向协议握手时刻、掉电恢复和协议电压软切换。 ### 后续记录格式 后续每次修改按以下格式追加: ```text ## Vx.y.z - YYYY-MM-DD ### 修改主题 ### 主要修改 ### 涉及文件 ### 编译验证 ### 硬件验证 ```