NRF多机通信

最近在接了一个项目,要求各个设备能够联网(不是互联网)控制。NRF24L01刚好有这个功能。但是之前只做过一对一的通信,还是用例程的那一种。我在想,用两个地址,共用同一个通道应该也可以完成。后来他又要求发过去的数据还要能回传,这下我只好来研究多通道通信了。

多机通信和一对一通信基本上相同,就是要配置其他通道的地址和使能其他通道的有效数据宽度,还有自动应答。

这是接收机的:

void NRF24L01_Init_RX(void)
{    
    CE=0;    
    CSN=1;    
    SCK=0;   
    SPI_Write_Buf(WRITE_REG + TX_ADDR, RX_ADDRESS, TX_ADR_WIDTH);
    SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); 
    SPI_Write_Buf(WRITE_REG + RX_ADDR_P1, RX_ADDRESS1,            RX_ADR_WIDTH);
    SPI_Write_Reg(WRITE_REG + EN_AA, 0x3f);
    SPI_Write_Reg(WRITE_REG + EN_RXADDR, 0x3f);
    SPI_Write_Reg(WRITE_REG + RF_CH, 40);
    SPI_Write_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); 
    SPI_Write_Reg(WRITE_REG + RX_PW_P1, RX_PLOAD_WIDTH);
    SPI_Write_Reg(WRITE_REG + RF_SETUP, 0x0F);
    SPI_Write_Reg(WRITE_REG + CONFIG, 0x0f); 
}

下面就到了发送机了的配置了:

void NRF24L01_Init_TX(uint8_t *ADDRn)
{    
    CE=0;
    CSN=1;
    SCK=0;
    SPI_Write_Buf(WRITE_REG + TX_ADDR, (uint8_t*)ADDRn, TX_ADR_WIDTH);
    SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, (uint8_t*)ADDRn, RX_ADR_WIDTH);
    SPI_Write_Reg(WRITE_REG + EN_AA, 0x3f); 
    SPI_Write_Reg(WRITE_REG + EN_RXADDR, 0x3f);
    SPI_Write_Reg(WRITE_REG + RF_CH, 40);
    SPI_Write_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); 
    SPI_Write_Reg(WRITE_REG + RX_PW_P1, RX_PLOAD_WIDTH);
    SPI_Write_Reg(WRITE_REG + SETUP_RETR, 0xff);
    SPI_Write_Reg(WRITE_REG + RF_SETUP, 0x0f);
    SPI_Write_Reg(WRITE_REG + CONFIG, 0x0E); 
}

发送给其他通道,只要改成其他通道的地址就可以了,不用改通道号,现在还不知道为什么。

接下来就是发送函数:

uint8_t nRF24L01_TxPacket(unsigned char * tx_buf)
{
    uint8_t Return_Flag=0;
    CE=0;
    SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH);
    Delayms(2);
    Return_Flag = Check_ACK(1);
    return Return_Flag;
}

由于我是通过电脑串口控制上位机,发给某一个下位机,然后再发回到我的上位机中,最后回传到电脑,所以没有数据抢答的问题。

最后再说一句,要配置第N个​的通道,前N个通道也必须被配置,要不然配置不成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值