如题,SPI的发和收是同步进行的,正点的程序如下,比如在前8个周期写SPI,然后在8个时钟周期后进行读操作,那会不会因为还没有到后8个周期就进行了读操作导致读到错误数据?
u8 SPI1_ReadWriteByte(u8 TxData)
{
u8 retry=0;
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET)
{
retry++;
if(retry>200)return 0;
}
SPI_I2S_SendData(SPI1, TxData);
retry=0;
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET)
{
retry++;
if(retry>200)return 0;
}
return SPI_I2S_ReceiveData(SPI1);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
没遇到过这问题,spi还是蛮稳定的。硬件走线问题?配置不对?把操作w25q16代码发上来
一周热门 更多>