feat(can): 反馈报文刷新率逐帧可配置并持久化

STATUS/CONFIG 反馈帧各自独立按 period_ms(1ms 节拍分频,0=停发)发送,
默认 STATUS 1kHz、CONFIG 250Hz,可运行时修改:

- 0x0400 扩展格式(DLC=4):[选择器 u16][值 u16],选择器 0x0000=节点 ID
  (仅单播),0x0100/0x0101=对应帧刷新周期;回 5B ACK,广播只应用不应答
- 0x0401 扩展格式(DLC=2):查询选择器对应值,回 [sel][val](4B);
  DLC<=1 及 SET DLC 1~2 保持旧格式行为完全不变
- 刷新率经 FlashEEPROM 独立 u16 记录(虚拟地址 0x08/0x09)持久化,
  不并入 6 参数 CRC 组,避免老设备升级后整组参数回退默认值
- save_system_config 追加从 RAM 副本回写两条记录,页满 format()
  重建后配置不丢失;read() 增加保留字节校验防 CRC 头部字误匹配
- CANFD_all_Send 拆分为 send_status_frame/send_config_frame,
  初始化失败上报路径直调 STATUS 帧不受分频影响

GATE_DRIVER_DRV8323 0/1 两种板型均编译通过
This commit is contained in:
cbb
2026-09-12 19:00:06 +08:00
parent 0d3bd9cbc6
commit 40fea328b0
6 changed files with 283 additions and 49 deletions
+9
View File
@@ -331,6 +331,15 @@ constexpr u8 CONFIG_SAVED_NUM = 6;
constexpr u16 CANFD_STATUS_ID = 0x0100; // 状态反馈基础 ID
constexpr u16 CANFD_CONFIG_ID = 0x0101; // 配置信息基础 ID
constexpr u16 CANFD_VERSION_ID = 0x00FF; // 版本信息基础 ID
// 周期反馈帧刷新周期(单位 ms,基于 1ms CAN 任务节拍分频;0=停发),
// 可通过 SET_NODE_ID(0x0400) 扩展格式运行时修改并持久化,
// 未配置时使用以下默认值(CONFIG 帧内容为控制模式/目标设定回显,
// 不实时依赖,默认 250Hz 降低总线占用)
constexpr u16 CANFD_TX_PERIOD_STATUS_DEFAULT_MS = 1; // STATUS 帧默认 1kHz
constexpr u16 CANFD_TX_PERIOD_CONFIG_DEFAULT_MS = 4; // CONFIG 帧默认 250Hz
// 0x0400/0x0401 扩展格式(DLC>=2/4)的参数选择器:0x0000=节点 ID,
// 其余选择器直接使用目标反馈帧的基础 ID(如 0x0100/0x0101)
constexpr u16 CANFD_PARAM_NODE_ID = 0x0000;
// 命令基础 ID
constexpr u16 CANFD_CMD_ID = 0x0200; // 控制命令基础 ID
constexpr u16 CANFD_RESET_ID = 0x0301; // 重置命令基础 ID