# CAN错误：邮箱2 FIFO溢出，消息丢失

- **ID:** `embedded/can-fifo-overrun-error`
- **领域:** embedded
- **类别:** runtime_error
- **错误码:** `CAN_FLAG_FOV`
- **验证级别:** ai_generated
- **修复率:** 85%

## 根因

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

## 版本兼容性

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

## 解决方案

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);
   ```

## 无效尝试

- **** — Faster baud rate increases message frequency, worsening the overflow issue. (80% 失败率)
- **** — Filtering reduces noise but does not address the root cause of slow message processing. (60% 失败率)
