nrf24l01实现多通道通信的步骤

一、收发端共同的设置

  1. 设置信道工作频率(发射端和接收端必须一致)

如:SPI_RW_Reg(WRITE_REG+RF_CH,40);

  1. 设置发射速率(2mbps或1mbps)和发射功率(收发必须一致);

如:SPI_RW_Reg(WRITE_REG+RF_SETUP,0x0f);         //发射速率为2Mbps,发射功率  最大为0dB

二、接收端的设置(最关键)

  1. 设置频道0-5,自动ACK应答允许

如:

SPI_RW_Reg(WRITE_REG+EN_AA,0x3f);

  1. 设置接收通道全部允许

如:

SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x3f);

 

3、发送地址寄存器写入本地地址(5byte

4、向各个频道的接收地址寄存器写入接收地址(调试成不成功的关键)

频道0:5个字节的地址

频道1:5个字节的地址(和频道0的地址必须不同)

频道2:1个字节的地址(为该通道发射机地址的第一个字节)

如:有一个配置为发射模式的24l01要通过该通道与接收机通信,发射机的本地地        址为{0x37,0xa1,0xb3,0xc9,0xda};则接收机频道2的地址为(0x37)

频道3:1个字节的地址(同上)

频道4:1个字节的地址(同上)

频道5:1个字节的地址(同上)

  1. 向各个频道接收数据长度寄存器写入接收数据宽度(最快均为32

 频道n:SPI_RW_Reg(WRITE_REG + RX_PW_Pn, RX_PLOAD_WIDTH);   

如:

频道5:SPI_RW_Reg(WRITE_REG + RX_PW_P5, RX_PLOAD_WIDTH);

  1. 配置为接收模式

如:SPI_RW_Reg(WRITE_REG+CONFIG,0x0f);

 

  • 发射端的设置
  1. 发送地址寄存器写入本地地址(5byte

对发给接收机频道0的发射机:发射机本地地址必须和接收机写入该频道的接收地址一致;

对发给接收机频道1的发射机:发射机本地地址必须和接收机写入该频道的接收地址一致;对发给接收机频道2的发射机:

发射机本地地址的第1个字节必须和接收机写入该频道的接收地址一致;后4个字 节必须和接收机写入频道1的接收地址的后4个字节一致;

其他频道类同频道2;

如:

接收机地址如下:

uchar RX_ADDRESS0[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x00}; //频道0接收地址

uchar RX_ADDRESS1[RX_ADR_WIDTH]={0x35,0xa1,0xb3,0xc9,0xda};     //频道1接收地址

 

uchar RX_ADDRESS2[1]={0x36};     //频道2接收地址

uchar RX_ADDRESS3[1]={0x37};     //频道3接收地址

uchar RX_ADDRESS4[1]={0x38};     //频道4接收地址

uchar RX_ADDRESS5[1]={0x39};     //频道5接收地址

对发给接收机频道0的发射机

uchar TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x00};     //本地地址

对发给接收机频道1的发射机

uchar TX_ADDRESS[TX_ADR_WIDTH]= {0x35,0xa1,0xb3,0xc9,0xda};      //本地地址

对发给接收机频道2的发射机

uchar TX_ADDRESS[TX_ADR_WIDTH]= {0x36,0xa1,0xb3,0xc9,0xda};      //本地地址

对发给接收机频道3的发射机

uchar TX_ADDRESS[TX_ADR_WIDTH]= {0x37,0xa1,0xb3,0xc9,0xda};      //本地地址

.............

2、向接收地址寄存器写入接收地址(5byte

均写接收机的本地地址

  1. 设置为发送模式

如:SPI_RW_Reg(WRITE_REG+CONFIG,0x0e);    

4、设置自动重发(可有可无)

如:SPI_RW_Reg(WRITE_REG+SETUP_RETR ,0x3f);          //自动重发15次,等待最长   时间

 

 

 

 

 

 

上一篇:1085 PAT单位排行 (25 分


下一篇:开班前自学--python list