嘿,我在自己的项目中使用 ADS1292,我对 SPI 协议感到困惑。
我在互联网上找到了一些代码,我发现它一次发送和接收。
例如,我想向从设备发送 0xFF。
然后它首先发送数据并等待接收。
而在接收数据时,它会发送一个虚拟字节然后接收。
任何人请解释他们为什么这样做?
uint8_t sEE_ReadByte(void)
{
return (sEE_SendByte(sEE_DUMMY_BYTE));
}
uint8_t sEE_SendByte(uint8_t byte)
{
/*!< Loop while DR register in not empty */
while (SPI_I2S_GetFlagStatus(sEE_SPI, SPI_I2S_FLAG_TXE) == RESET);
/*!< Send byte through the SPI peripheral */
SPI_SendData(sEE_SPI, byte);
/*!< Wait to receive a byte => I do not understand this point*/
while (SPI_I2S_GetFlagStatus(sEE_SPI, SPI_I2S_FLAG_RXNE) == RESET);
/*!< Return the byte read from the SPI bus */
return (uint8_t)SPI_ReceiveData(sEE_SPI);
}