feat(canfd): 添加收发器静默模式支持和SPI命令接口
添加了CAN FD收发器静默模式功能,允许通过硬件引脚控制发送使能: - 新增setTxSilent/isTxSilent接口控制TCAN1057收发器Silent模式 - 静默时驱动器关断但接收机继续工作,支持只听不发场景 - 添加SPI命令0xC8用于ESP32远程控制静默模式切换 - 在总线状态位图中增加bit5表示静默状态 - 新增canBusyWaitUs函数用于ISR安全的微秒延时 fix(esc_lan9252): 改进warm jump后LAN9252探测逻辑 修复warm jump导致的LAN9252初始化问题: - 识别warm jump后芯片非POR状态(idx0!=0x1234)的情况 - 自动补发硬件复位对齐到POR状态后再进行正常探测 - 改进调试信息输出,区分POR状态和warm jump残值情况 - 修正失败路径的复位标志初始化逻辑 refactor(spi): 整理SPI命令文件结构 调整SPI命令相关文件的组织结构: - 移动诊断相关文件到更合适的位置 - 重新整理SPI命令处理文件的分组
This commit is contained in:
@@ -48,8 +48,28 @@ constexpr uint8_t CONFIG_MOTOR_MAX_NODES = 9U;
|
||||
/** @brief 电机离线判定超时 (ms)。超过此时间未收到 STATUS 帧则标记 offline。 */
|
||||
constexpr uint16_t CONFIG_MOTOR_OFFLINE_MS = 3000U;
|
||||
/** @brief SPI 命令逐帧日志(#if)。开启后仅异常路径输出
|
||||
* (非v2帧/未知type/SEQ跳变/session不匹配),正常状态 UART 静默。 */
|
||||
#define CONFIG_SPI_APP_LOG_ENABLE 1
|
||||
* (非v2帧/未知type/SEQ跳变/session不匹配),正常状态 UART 静默。
|
||||
* @note 2026-10-09 置 0:SPI 联调已结束,USART0 不再打印逐帧明细。
|
||||
* 排查时改回 1;异常现场数据仍可通过 0xA4 快照读回(check_spi_diag.py),
|
||||
* 因为 CONFIG_SPI_DIAG_ENABLE 仍为 1,计数器与现场快照照常记录。 */
|
||||
#define CONFIG_SPI_APP_LOG_ENABLE 0
|
||||
/**
|
||||
* @brief SPI 链路全量硬件与协议诊断总开关 (0=发布/关闭, 1=开启)。
|
||||
* @note 【一键发布开关】:
|
||||
* - 0 (发布模式): 彻底裁剪 0xA4 诊断指令与 Handler 注册,清空诊断内存占用,
|
||||
* 关闭中断与事务中的所有计数/现场快照记录,完全静默 USART0 诊断输出(零 CPU/RAM/Flash 开销)。
|
||||
* - 1 (调试/诊断模式): 开启 CS/时序/硬件寄存器/SOF偏移/CRC错误统计、现场快照及 0xA4 查询支持。
|
||||
* 发布固件时,将此处改为 0 即可一键关闭全部诊断功能并重新编译。
|
||||
* 当前保持 1:只静默串口输出(见下 PERIODIC_PRINT),保留 0xA4 远程查询能力。
|
||||
*/
|
||||
#define CONFIG_SPI_DIAG_ENABLE 1
|
||||
/**
|
||||
* @brief SPI 诊断 USART0 周期打印开关 (仅在 CONFIG_SPI_DIAG_ENABLE=1 时生效)。
|
||||
* @note 0=静默串口周期输出 (仍保留 0xA4 远程查询与现场快照,不刷屏);
|
||||
* 1=每 5s 周期性或异常发生时在 USART0 打印 [SPI-DIAG] 单行摘要。
|
||||
* 2026-10-09 置 0:按铃超时取消告警同样按本开关裁剪(计数器仍经 SPI_DIAG_RECORD 记账,可 0xA4 读回)。
|
||||
*/
|
||||
#define CONFIG_SPI_DIAG_PERIODIC_PRINT 0
|
||||
/** @brief CAN_SEND 成功帧详细日志(#if)。 */
|
||||
#define CONFIG_SPI_CAN_SEND_VERBOSE_LOG 0
|
||||
/** @brief CAN-FD BRS 使能(canfd.cpp #if)。
|
||||
@@ -155,8 +175,8 @@ constexpr uint32_t CONFIG_CAN_QUIET_AFTER_SEC = 10U;
|
||||
* APP 固件版本号
|
||||
* ============================================================ */
|
||||
constexpr uint32_t APP_FW_VERSION_MAJOR = 1U;
|
||||
constexpr uint32_t APP_FW_VERSION_MINOR = 6U;
|
||||
constexpr uint32_t APP_FW_VERSION_PATCH = 51U; /* 1.6.50: CAN 空通道自动识别与降噪 */
|
||||
constexpr uint32_t APP_FW_VERSION_MINOR = 7U;
|
||||
constexpr uint32_t APP_FW_VERSION_PATCH = 2U; /* 1.7.2: CAN 通道收发器 Silent(只听不发)——S 脚 API + 0xC8 命令 + 0xC1 bus_state bit5;静默期发送入口回 0xE6 且不计错误 */
|
||||
constexpr uint32_t APP_FW_VERSION_BUILD = 0U;
|
||||
|
||||
|
||||
@@ -209,11 +229,17 @@ constexpr uint16_t CONFIG_SPI_LOG_BUF_SIZE = 256U;
|
||||
constexpr uint32_t CONFIG_SPI_RING_TIMEOUT_MS = 50U;
|
||||
/** @brief SPI 命令 handler 注册表容量。
|
||||
*
|
||||
* 当前 init 注册 12 个:boot_request / ota_wait / ping / init_status / can_bridge /
|
||||
* can_burst / can_feedback / id_snapshot / adc_feedback / motor_state / motor_ota / exmc_diag。
|
||||
* 当前 init 注册 13 个:boot_request / ota_wait / ping / init_status / can_bridge /
|
||||
* can_burst / can_feedback / id_snapshot / adc_feedback / motor_state / motor_ota /
|
||||
* exmc_diag / spi_diag。1.7.2 的 0xC8(CAN Silent)复用 can_feedback handler
|
||||
* 多加一个 frame_type,不占新槽位。
|
||||
* registerHandler 表满时静默丢弃,motor_ota 曾因容量=8 被丢弃(0xD0 回 0xEE)。
|
||||
* 取 14 留余量;新增 handler 时须确认本容量足够。 */
|
||||
* 新增 handler 时须确认本容量足够。 */
|
||||
#if (CONFIG_SPI_DIAG_ENABLE != 0)
|
||||
constexpr uint8_t CONFIG_SPI_MAX_COMMANDS = 16U;
|
||||
#else
|
||||
constexpr uint8_t CONFIG_SPI_MAX_COMMANDS = 14U;
|
||||
#endif
|
||||
/** @brief GD32 APP 版本(HELLO_ACK/PING 身份块;改功能后请递增便于现场核对)。 */
|
||||
/* 版本号在 app_spi_cmd_ping.cpp fillGd32AppIdentityPayload 维护 */
|
||||
/** @brief 每通道不重复 ID 快照表最大条目数(与 ESP32 CANFD_ID_SNAPSHOT_MAX 对齐)。 */
|
||||
|
||||
Reference in New Issue
Block a user