feat(canfd): 添加TX错误事件驱动的快速重发机制
添加TX错误事件标志和相关API以支持ARD模式下单发帧丢失的快速检测和重发, 实现停等式OTA在丢帧后的立即重发,避免等待ACK超时的延迟。 - 新增s_txErrorEvent数组跟踪各通道TX错误事件 - 添加readChannelErrorReg()读取CAN_ERR寄存器原始值 - 添加consumeTxError()消费TX错误事件并返回状态 - 在TX中断中检测MTE位设置错误事件标志 fix(motor-ota): 优化OTA重发策略和错误处理 调整OTA重发参数和逻辑,提升传输可靠性和响应速度。 - 将ACK超时重发间隔从500ms调整为100ms,提高响应速度 - 增加每包补发上限从2次到4次,保持总容错时间窗 - 实现TX错误驱动的快速重发,丢帧后立即按间隔补发 - 增加错误统计信息输出,包含重发和快速重发计数 - 提高仲裁段再同步跳跃宽度从1TQ到2TQ,增强总线容错能力
This commit is contained in:
@@ -150,6 +150,14 @@ public:
|
||||
|
||||
/** @brief 运行时切换指定通道 CAN 自动重发(ARD 位,需 init-mode);停等式 OTA 期间关闭、结束后恢复。 */
|
||||
static void setChannelAutoRetrans(uint8_t channelIndex, bool enable);
|
||||
|
||||
/** @brief 读取指定通道 CAN_ERR 寄存器原始值(事件时刻只读快照,不依赖 1Hz 采样)。
|
||||
* 解码:TEC=bit16-23,REC=bit24-31,ERRN=bit4-6;无效通道返回 0。仅供诊断日志,禁用于发送门控。 */
|
||||
static uint32_t readChannelErrorReg(uint8_t channelIndex);
|
||||
|
||||
/** @brief 读取并清除指定通道的 TX 错误事件(ARD=1 单发下 MTE 置位 = 帧已确认丢失)。
|
||||
* 供停等式 OTA 在丢帧后立即重发,免等 ACK 超时;仅主循环调用。 */
|
||||
static bool consumeTxError(uint8_t channelIndex);
|
||||
static const Diag *diag();
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user