高级会员

- 积分
- 906
- 金钱
- 906
- 注册时间
- 2016-3-26
- 在线时间
- 116 小时
|
1金钱
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);
}
分开写的时候总是卡在接收缓存区为空的循环里,读不了数据是怎么回事?一定要写一起?读数据之前总是要先发送数据吗?
|
最佳答案
查看完整内容[请看2#楼]
常规的SPI,发送与接收是同步完成的,
必须有发送,才会有收到。
你如果用这种方式,那必须先发送。
但芯片有个单线(好像是这名字)模式,不用发送就可以收,属于非常规了。
|