【求助】SPI通信stm32从机返回数据有错位

2019-08-23 15:01发布

之前发过帖子请教用STM32做SPI从机时候给主机返回的数据有误。可是问题还是没有解决。我再描述一下吧,从机给主机返回的数据有错位。主机的时钟极性跟从机是一模一样的,master跟slave也没有设置错。请问有没有人知道从机返回数据有错位这个大概会是什么原因。从机的程序在配置好RCC GPIO 和SPI之后就直接senddata(0x32)了。能这样操作吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
33条回答
Rocks
2019-08-24 02:48
Master端
uint8_t RX_Data;
uint8_t TX_Data = 0xFF;

SPI1->DR = TX_Data;
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE) == RESET){};
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY) == SET){}
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE) == 1){
RX_Data = SPI1->DR;
}

Slave端
主循環用這段試試

uint8_t RX_Data;
uint8_t TX_Data = 0x32;
while(1)
{
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)== RESET);
RX_Data = SPI1->DR;
SPI1->DR = TX_Data;
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE) == RESET){};
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY) == SET){}
}

看最後Master端有收到0x32嗎?


官方例程有主從對傳的 但是要去找找

一周热门 更多>