[51单片机] 请教一个关于nrf24l01的问题,搞不明白

[复制链接]
1601|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 | 显示全部楼层
只是一个普通的数组,里面是接收端的地址。
junou168 发表于 2015-4-9 22:01 | 显示全部楼层
把这段程序spi_reg_buf给看看
 楼主| 淡明致宁 发表于 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;
}
 楼主| 淡明致宁 发表于 2015-4-10 10:16 | 显示全部楼层
xiao_yp2015 发表于 2015-4-9 21:35
只是一个普通的数组,里面是接收端的地址。

TX_ADDR是寄存器地址,TX_ADDRESS是寄存器里面的地址?不太懂
xiao_yp2015 发表于 2015-4-10 20:25 | 显示全部楼层
TX_ADDR是nrf24l01芯片的寄存器地址,TX_ADDRESS是一个数组的名称。也就是要发送的数据
junou168 发表于 2015-4-11 09:36 | 显示全部楼层
               MOSI=(dat & 0x80);
                dat<<=1;
                SCK=1;
                dat|=MISO;
                SCK=0;  

其中的  dat|=MISO;这句是啥意思???SCK是一个脉冲?中间插这句来延时?
xiao_yp2015 发表于 2015-4-25 09:20 | 显示全部楼层
dat|=MISO;是用于读取NRF24L01寄存器的状态,在我们用NRF24L01的时候,通信方式是用的SPI通信,那么SPI就会有一个主设备和一个从设备,此时,单片机就是主设备,NRF24L01就是从设备,MOSI主设备发出,从设备接收,MISO从设备发出,主设备接收,如果要获取从设备(NRF24L01)的数据,就必须得主设备发一个字节的数据,从设备才会返回一个字节的数据,这是SPI通信的一个规则,遵循它的规则就可以了。
304381190 发表于 2017-7-28 15:05 | 显示全部楼层
xiao_yp2015 发表于 2015-4-9 21:35
只是一个普通的数组,里面是接收端的地址。

正解
304381190 发表于 2017-7-28 15:06 | 显示全部楼层
xiao_yp2015 发表于 2015-4-10 20:25
TX_ADDR是nrf24l01芯片的寄存器地址,TX_ADDRESS是一个数组的名称。也就是要发送的数据 ...

正解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部