打印
[51单片机]

请教一个关于nrf24l01的问题,搞不明白

[复制链接]
1369|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
淡明致宁|  楼主 | 2015-4-9 17:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
uchar TX_ADDRESS[]={0x01,0x32,0x31,0x20,0x61};

void nrf24l01_tx(*tx_buf)
{
   CE=0;
   spi_reg_buf(WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADDR_WIDTH);  //写入本机地址
   spi_reg_buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADDR_WIDTH);  //装载接收端地址
   spi_reg_buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH);  //装载要发送的数据
   spi_write_reg(WRITE_REG+CONFIG,0x0e);  //发射模式
   CE=1;
}
我想请问一下这里面的数组TX_ADDRESS它的含义,它可以定义为任何数组吗,谢谢

相关帖子

沙发
coody| | 2015-4-9 21:02 | 只看该作者
是的,可以定义成任何数组

使用特权

评论回复
板凳
淡明致宁|  楼主 | 2015-4-9 21:04 | 只看该作者
coody 发表于 2015-4-9 21:02
是的,可以定义成任何数组

数组TX_ADDRESS它的含义是什么呢?

使用特权

评论回复
地板
xiao_yp2015| | 2015-4-9 21:35 | 只看该作者
只是一个普通的数组,里面是接收端的地址。

使用特权

评论回复
5
junou168| | 2015-4-9 22:01 | 只看该作者
把这段程序spi_reg_buf给看看

使用特权

评论回复
6
淡明致宁|  楼主 | 2015-4-10 10:07 | 只看该作者
junou168 发表于 2015-4-9 22:01
把这段程序spi_reg_buf给看看

uchar spi_reg_Buf(uchar reg,uchar *pBuf,uchar uchars)//
{                       
        uchar status,i;
        CSN=0;
        status=SPI_RW(reg);
        for(i=0;i<uchars;i++)
        SPI_RW(*pBuf++);
        CSN=1;
        return status;
}
uchar SPI_RW(uchar dat)//写一字节并读出此地址的状态
{
        uchar i;
        for(i=0;i<8;i++)
        {               
                MOSI=(dat & 0x80);
                dat<<=1;
                SCK=1;
                dat|=MISO;
                SCK=0;               
        }
        return dat;
}

使用特权

评论回复
7
淡明致宁|  楼主 | 2015-4-10 10:16 | 只看该作者
xiao_yp2015 发表于 2015-4-9 21:35
只是一个普通的数组,里面是接收端的地址。

TX_ADDR是寄存器地址,TX_ADDRESS是寄存器里面的地址?不太懂

使用特权

评论回复
8
xiao_yp2015| | 2015-4-10 20:25 | 只看该作者
TX_ADDR是nrf24l01芯片的寄存器地址,TX_ADDRESS是一个数组的名称。也就是要发送的数据

使用特权

评论回复
9
junou168| | 2015-4-11 09:36 | 只看该作者
               MOSI=(dat & 0x80);
                dat<<=1;
                SCK=1;
                dat|=MISO;
                SCK=0;  

其中的  dat|=MISO;这句是啥意思???SCK是一个脉冲?中间插这句来延时?

使用特权

评论回复
10
xiao_yp2015| | 2015-4-25 09:20 | 只看该作者
dat|=MISO;是用于读取NRF24L01寄存器的状态,在我们用NRF24L01的时候,通信方式是用的SPI通信,那么SPI就会有一个主设备和一个从设备,此时,单片机就是主设备,NRF24L01就是从设备,MOSI主设备发出,从设备接收,MISO从设备发出,主设备接收,如果要获取从设备(NRF24L01)的数据,就必须得主设备发一个字节的数据,从设备才会返回一个字节的数据,这是SPI通信的一个规则,遵循它的规则就可以了。

使用特权

评论回复
11
304381190| | 2017-7-28 15:05 | 只看该作者
xiao_yp2015 发表于 2015-4-9 21:35
只是一个普通的数组,里面是接收端的地址。

正解

使用特权

评论回复
12
304381190| | 2017-7-28 15:06 | 只看该作者
xiao_yp2015 发表于 2015-4-10 20:25
TX_ADDR是nrf24l01芯片的寄存器地址,TX_ADDRESS是一个数组的名称。也就是要发送的数据 ...

正解

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝