使用HAL_SPI_Receive的数据接收错误

问题描述

我试图建立两个使用SPI的STM32板之间的简单通信(NUCLEO-F401RE板作为全双工主设备,而NUCLE0-L152RE板作为全双工从机)。我还无法实现。这是我的代码

TX

uint8_t txdata[4] = {0x01,0x02,0x03,0x04};

int main(void)
{
  HAL_Init();
  SystemClock_Config();

  MX_GPIO_Init();
  MX_SPI2_Init();
  MX_USART2_UART_Init();

  printf("STM32F401RE - Master TX\r\n");

  while (1)
  {
      HAL_SPI_Transmit(&hspi2,txdata,4,100);
      HAL_Delay(200);
  }
}

RX

uint8_t rxdata[4] = {0x00};

int main(void)
{
  HAL_Init();
  SystemClock_Config();

  MX_GPIO_Init();
  MX_SPI2_Init();
  MX_USART2_UART_Init();

  printf("stm32l152RE - Master RX\r\n");

  while (1)
  {
      HAL_SPI_Receive(&hspi2,rxdata,1000);
      for(int i=0;i<sizeof(rxdata);i++)
      {
          printf("%X",rxdata[i]);
      }
      printf("\r\n");
      HAL_Delay(1000);
  }
}

这是我收到的:

stm32l152RE - Master RX
1413
1141
4141
4131
4131
4131
3131
4141
4141
3141
3141
4141
4131
4131
4141
3141
3141
4141
4141
4141
4131
3141
3131
4131
3131
4131
...

我希望rxdata为1234(0x01、0x02、0x03、0x04),但是正如您所看到的,数据已经移位,甚至没有看到字节0x02。可能是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)