# SPI：接收时 CRC 错误，计算值 0x1A2B 期望值 0x3C4D

- **ID:** `embedded/spi-crc-error-receive-mode`
- **领域:** embedded
- **类别:** protocol_error
- **验证级别:** ai_generated
- **修复率:** 88%

## 根因

SPI CRC 不匹配因线路噪声、多项式配置错误或主从设备数据长度不一致。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| STM32Cube_FW_G4 V1.5.0 | active | — | — |
| SPI HAL V1.4.0 | active | — | — |

## 解决方案

1. ```
   验证主从设备的 SPI CRC 多项式一致：`SPI_CR1_CRCPOLY` 寄存器必须相同。使用 `SPI_CR1_CRCEN` 使能 CRC。
   ```
2. ```
   每次传输后添加软件 CRC 检查作为后备：计算接收数据的 CRC16-CCITT 并比较。
   ```
3. ```
   将 SPI 时钟降至 5 MHz 以下以改善嘈杂线路上的信号完整性。
   ```

## 无效尝试

- **** — Increasing SPI clock speed exacerbates signal integrity issues, making CRC errors more frequent. (80% 失败率)
- **** — Reseating cables does not fix incorrect polynomial settings in software. (50% 失败率)
