ST意法半导体
直播中

study875

12年用户 1160经验值
私信 关注
[问答]

怎样去接收STM32F407-disco板上的SPI Master呢

我正在为 STM32F407-disco 板上的 SPI Master 接收而苦苦挣扎。
我计划使用 SPI2 主接收接口连接到麦克风。
我设置了 DMA,但我总是进入 HAL_SPI_ErrorCallback()。
我使用 Nucleo-G474 设置了相同的设置,但它可以转到 HAL_SPI_RxCpltCallback()。
我对 G474 和 F407 使用了相同的代码。
  • HAL_SPI_Receive_DMA(&hspi2, receive_data, 5);
  • void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)
  • {
  •         printf("SPI Received!
    ");
  • }
  • void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi)
  • {
  •         printf("TRANSFER_ERROR!
    ");
  • }
我正在使用 CubeMX 来设置 F407,如下所示。
F407参数设置

F407 DMA 设置

我在 G474 上使用了相同的,如下所示。
G474参数设置

G474 DMA 设置

基本上一切都差不多。
调试时,我检查了 SPI 和 DMA 寄存器数据的 HAL_SPI_Receive_DMA() 之前和之后,如下所示。
HAL_SPI_Receive_DMA() 之前的 G474 DMA1

HAL_SPI_Receive_DMA() 之后的 G474 DMA1

HAL_SPI_Receive_DMA() 之前的 G474 SPI2

HAL_SPI_Receive_DMA() 之后的 G474 SPI2

F407 HAL_SPI_Receive_DMA() 之前的 DMA1

F407 HAL_SPI_Receive_DMA() 之后的 DMA1

知道我错过了什么吗?我正在使用 CubeIDE 1.7.0 和 STM32Cube_FW_F4_V1.26.2 和 STM32Cube_FW_G4_V1.4.0。
这是两个设备的 IOC 文件。


回帖(1)

张彪其

2022-12-21 11:26:49
在 HAL_SPI_ErrorCallback 中,hspi->ErrorCode 中存储的错误代码是什么?
SPI 上的只接收模式很奇怪,可能会导致问题。使用未初始化的 MOSI 进行双向传输可能效果更好。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分