数据传输
后,SPSR中的SPIF位何时复位假设
void SPITransmit(uint8_t data)
{
SPDR = data;
while(!(SPSR & (1<<SPIF)));
}
传输后SPIF将设置以及如何重置此位以进行接收。
使用 SPI,您无需选择是发送还是传输,而是同时进行。 因此,无需"重置接收的SPIF"。 我相信在循环终止后,收到的数据在SPDR
寄存器中可用,但您应该阅读特定 AVR 的数据表以确保。
下面是一个可用于同时发送和接收的功能:
uint8_t SPITransmit(uint8_t data)
{
SPDR = data;
while(!(SPSR & (1<<SPIF)));
return SPDR;
}