小学生
最后登录1970-1-1
在线时间 小时
注册时间2020-9-18
|
1火花
uint8_t SPI_Send_Byte(uint8_t data)
{
uint16_t timeout = SPI_Check_Time;
while(SPI_I2S_GetFlagStatus (SPIx,SPI_I2S_FLAG_TXE) == RESET)
{
if(timeout-- == 0)
{
SPI_TimeOut_CallBack(0);
return ;
}
}
SPI_I2S_SendData(SPIx,data);
}
uint8_t SPI_Recive_Byte(void)
{
uint16_t timeout = SPI_Check_Time;
SPI_Send_Byte(0xFF);
while(SPI_I2S_GetFlagStatus (SPIx,SPI_I2S_FLAG_RXNE) == RESET)
{
//检测超时
if(timeout-- == 0)
{
SPI_TimeOut_CallBack(1);
return 0;
}
}
return (uint8_t)SPI_I2S_ReceiveData(SPIx);
}
上方是自己写的SPI发送与接收函数,在发送函数中只发送一个字节;在接收函数中,先发送一个0xFF(Dummy_Byte),然后再接收数据。结果测试中接收到第一个字节一直是0xFF,但后边接收到的数据就是正确的。
这个是我用标准例程运行出来的结果,FLASH_ID是ef4015,下方读取的数据是从0开始。
这个是我用自己写的函数运行的结果,FLASH_ID是ff4015,下方读取的数据也变为从ff开始。
这是什么原因,请大家帮忙解答一下。
|
|