请问下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条回答
chenzhufly
1楼-- · 2019-03-24 20:25
看spi控制时序
jxw82284134
2楼-- · 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          //写配置寄存器
Li_Lei
3楼-- · 2019-03-25 03:26
 精彩回答 2  元偷偷看……
xywust
4楼-- · 2019-03-25 03:58
huo_hu 发表于 2014-4-14 17:48
24l01每个寄存器有个地址,每次写某个寄存器时都是写指令0x20+寄存器号,读寄存器0x00+寄存器号,
#define NR ...

谢谢··~~~~~刚开始学这个。各种不懂,非常感激~~~~
xywust
5楼-- · 2019-03-25 05:15
jxw82284134 发表于 2014-4-14 16:31
void nRF905_Config()
{
        uchar i;

谢谢哈,非常感激~~ ~刚学这个在~
xywust
6楼-- · 2019-03-25 09:56
 精彩回答 2  元偷偷看……

一周热门 更多>