u8 SPI2_ReadWriteByte(u8 TxData)
{
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET){}
SPI_I2S_SendData(SPI2, TxData);
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET){}
return SPI_I2S_ReceiveData(SPI2);
}
void spi2_write(u8 txdata)
{
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI2, txdata); //í¨1yíaéèSPIx·¢Ëíò»¸öbyte êy¾Y
}
//spi read function
u8 spi2_read(void)
{
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
return (u8)SPI_I2S_ReceiveData(SPI2);
}
分开写的时候总是卡在接收缓存区为空的循环里,读不了数据是怎么回事?一定要写一起?读数据之前总是要先发送数据吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
常规的SPI,发送与接收是同步完成的,
必须有发送,才会有收到。
你如果用这种方式,那必须先发送。
但芯片有个单线(好像是这名字)模式,不用发送就可以收,属于非常规了。
一周热门 更多>