CAN_FLAG_FOV embedded runtime_error ai_generated true

CAN错误:邮箱2 FIFO溢出,消息丢失

CAN error: FIFO overrun on mailbox 2, message lost

ID: embedded/can-fifo-overrun-error

其他格式: JSON · Markdown 中文 · English
85%修复率
88%置信度
1证据数
2023-11-02首次发现

版本兼容性

版本状态引入弃用备注
STM32CubeFW_F4 v1.27.0 active
HAL_CAN v2.0.2 active
CANopen stack v4.0.1 active

根因分析

CAN接收FIFO溢出,因为CPU读取消息速度不够快,导致传入帧丢失。

English

CAN receive FIFO overflowed because the CPU did not read messages fast enough, causing loss of incoming frames.

generic

官方文档

https://www.st.com/resource/en/reference_manual/dm00031020.pdf

解决方案

  1. Increase the CAN receive FIFO depth in configuration: hcan.Instance->FMR |= CAN_FMR_FINIT; hcan.Instance->FS1R |= CAN_FS1R_FSC1;
  2. Implement DMA-based CAN message reading to offload CPU: HAL_CAN_Start_DMA(&hcan, CAN_RX_FIFO0);

无效尝试

常见但无效的做法:

  1. 80% 失败

    Faster baud rate increases message frequency, worsening the overflow issue.

  2. 60% 失败

    Filtering reduces noise but does not address the root cause of slow message processing.