nrf24l01实现多通道通信的步骤
作者:互联网
一、收发端共同的设置
- 设置信道工作频率(发射端和接收端必须一致)
如:SPI_RW_Reg(WRITE_REG+RF_CH,40);
- 设置发射速率(2mbps或1mbps)和发射功率(收发必须一致);
如:SPI_RW_Reg(WRITE_REG+RF_SETUP,0x0f); //发射速率为2Mbps,发射功率 最大为0dB
二、接收端的设置(最关键)
- 设置频道0-5,自动ACK应答允许
如:
SPI_RW_Reg(WRITE_REG+EN_AA,0x3f);
- 设置接收通道全部允许
如:
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个字节的地址(同上)
- 向各个频道接收数据长度寄存器写入接收数据宽度(最快均为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);
- 配置为接收模式
如:SPI_RW_Reg(WRITE_REG+CONFIG,0x0f);
- 发射端的设置
- 向发送地址寄存器写入本地地址(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)
均写接收机的本地地址
- 设置为发送模式
如:SPI_RW_Reg(WRITE_REG+CONFIG,0x0e);
4、设置自动重发(可有可无)
如:SPI_RW_Reg(WRITE_REG+SETUP_RETR ,0x3f); //自动重发15次,等待最长 时间
标签:频道,uchar,RX,多通道,接收机,nrf24l01,地址,步骤,接收 来源: https://blog.csdn.net/lzy990828/article/details/89736287