请问下NRF24L01的问题。

2019-03-24 18:24发布

/*函数: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.
谢谢解答!! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
jxw82284134
2019-03-25 00:17
void nRF905_Config()
{
        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          //写配置寄存器

一周热门 更多>