SPI_RW();是什么意思

来源:百度知道 编辑:UC知道 时间:2024/06/20 11:43:50
nrf24l01无线模块中的程序段,说什么写一个字节的同时输出这个字节。这个字节是干什么用的
uchar SPI_RW(uchar byte)
{
uchar bit_ctr;
for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
{
MOSI = (byte & 0x80); // output 'byte', MSB to MOSI
byte = (byte << 1); // shift next bit into MSB..
SCK = 1; // Set SCK high..
byte |= MISO; // capture current MISO bit
SCK = 0; // ..then set SCK low again
}
return(byte); // return read byte
}

SPI是收发同时进行的方式,主设备给从设备发送数据的同时,也能侦测从设备是否有数据要发送给主设备,byte |= MISO 这个语句就是接收从设备的数据,因为先给从设备发送了数据 MOSI = (byte & 0x80); 所以,在发送的同时接收数据的话,对数据本身没有影响

所有的读写操作都是SPI总线上的信号,输出就是通知SPI总线上的设备其正在处的状态,

发送和接受字节啊,发送一个bit同时接受一个bit。

MOSI发送端
MISO接受端