如何解决使用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 举报,一经查实,本站将立刻删除。