/*函数:uint SPI_RW(uint uchar)
/*功能:NRF24L01的SPI写时序
/****************************************************************************************************/
uchar SPI_RW(uchar byte)
{
uchar bit_ctr;
for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
{
MOSI = (byte & 0x80); // output 'uchar', 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 uchar
}
/****************************************************************************************************/
/*功能:NRF24L01读写寄存器函数
/****************************************************************************************************/
uchar SPI_RW_Reg(uchar reg, uchar value)
{
uchar status;
CSN = 0; // CSN low, init SPI transaction
status = SPI_RW(reg); // select register
SPI_RW(value); // ..and write value to it..
CSN = 1; // CSN high again
return(status); // return nRF24L01 status uchar
}
不懂的是,status=SPI_RW(reg);这个为什么是Select register to write to.
谢谢解答!!
此帖出自
小平头技术问答
{
uchar i;
CSN=0;
spi_Write(WC);
for(i=0;i<10;i++)
{
spi_Write(nRFConfig[i]);
}
CSN=1;
}
这个是nRF905和SPI写程序,效果和你写的程序是一样的,不过写了10个值。
spi_Write(WC)就相当于SPI_RW(reg);
spi_Write(nRFConfig[i])相当于SPI_RW(value);
那个WC在前面定义过了#define WC 0x00 //写配置寄存器
一周热门 更多>