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
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.
官方文档
https://www.st.com/resource/en/reference_manual/dm00031020.pdf解决方案
-
Increase the CAN receive FIFO depth in configuration: hcan.Instance->FMR |= CAN_FMR_FINIT; hcan.Instance->FS1R |= CAN_FS1R_FSC1;
-
Implement DMA-based CAN message reading to offload CPU: HAL_CAN_Start_DMA(&hcan, CAN_RX_FIFO0);
无效尝试
常见但无效的做法:
-
80% 失败
Faster baud rate increases message frequency, worsening the overflow issue.
-
60% 失败
Filtering reduces noise but does not address the root cause of slow message processing.