需要手动添加的FIFO配置
CubeMX不会自动生成FIFO阈值配置,您需要在初始化后手动添加:
/* USER CODE BEGIN SPI2_Init 2 */
// 设置RX FIFO阈值为1/4满 (SPI_RXFIFO_THRESHOLD_QF)
SET_BIT(hspi2.Instance->CR2, SPI_CR2_FRXTH);
/* USER CODE END SPI2_Init 2 */
完整匹配您需求的解决方案
-
CubeMX图形化配置:
- NSS模式:Software
- 波特率分频:16
- CRC计算:Disable
- TI模式:Disable
- NSS脉冲模式:Disable
-
手动代码添加:
// 在HAL_SPI_Init()之后添加
SET_BIT(hspi2.Instance->CR2, SPI_CR2_FRXTH); // 设置FIFO阈值
-
GPIO配置注意事项:
- 确保NSS引脚被配置为GPIO输出(软件控制)
- 在传输前手动拉低NSS,传输后拉高
最终匹配结果
经过上述修改,CubeMX生成的初始化代码将与您的自定义设置完全一致:
- 软件控制的NSS
- 16分频的波特率(3MHz [url=home.php?mod=space&uid=72445]@[/url] 48MHz系统时钟)
- 8位数据大小
- FIFO阈值设置为1/4满
- 禁用CRC、TI模式和NSS脉冲
这样既保持了CubeMX配置的便利性,又满足了您的硬件要求。