NRF24L01的通道1,频道40配置:
1、修改频道:
//#define CHANAL 40 //频道选择
#define CHANAL 10 //频道选择
2、保证 接发收地址宽度一致 #defineTX_ADR_WIDTH 5 //发射地址宽度
#define RX_ADR_WIDTH 5
3、修改接发收函数
void NRF_RX_Mode(void)
{
NRF_CE_LOW();
// 修改为通道1 寄存器地址
//SPI_NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);//写RX节点地址
SPI_NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P1,RX_ADDRESS,RX_ADR_WIDTH);//写RX节点地址
//SPI_NRF_WriteReg(NRF_WRITE_REG+EN_AA,0x00); //使能通道0的自动应答
SPI_NRF_WriteReg(NRF_WRITE_REG+EN_AA,0x02); //使能通道1的自动应答 //修改后 0x01 改为0x02
//SPI_NRF_WriteReg(NRF_WRITE_REG+EN_RXADDR,0x01);//使能通道0的接收地址
SPI_NRF_WriteReg(NRF_WRITE_REG+EN_RXADDR,0x02);//使能通道1的接收地址 //修改后, 0x01 改为0x02
SPI_NRF_WriteReg(NRF_WRITE_REG+RF_CH,CHANAL); //设置RF通信频率
//SPI_NRF_WriteReg(NRF_WRITE_REG+RX_PW_P1,RX_PLOAD_WIDTH);//选择通道0的有效数据宽度
SPI_NRF_WriteReg(NRF_WRITE_REG+RX_PW_P1,RX_PLOAD_WIDTH);//选择通道1的有效数据宽度 //修改RX_ADDR_P0 为RX_ADDR_P1
SPI_NRF_WriteReg(NRF_WRITE_REG+RF_SETUP,0x0f); //设置TX发射参数,0db增益,2Mbps,低噪声增益开启
SPI_NRF_WriteReg(NRF_WRITE_REG+CONFIG, 0x0f); //配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式
/*CE拉高,进入接收模式*/
NRF_CE_HIGH();
}
/**
* @brief 配置发送模式
* @param 无
* @retval 无
*/
void NRF_TX_Mode(void)
{
NRF_CE_LOW();
SPI_NRF_WriteBuf(NRF_WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH); //写TX节点地址
// 修改为通道1 寄存器地址
//SPI_NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);
SPI_NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P1,RX_ADDRESS,RX_ADR_WIDTH); //设置TX节点地址,主要为了使能ACK
//修改:通道0时为 0x01,使用通道1时 改为0x03
//SPI_NRF_WriteReg(NRF_WRITE_REG+EN_AA,0x00); //使能通道0的自动应答
SPI_NRF_WriteReg(NRF_WRITE_REG+EN_AA,0x03); //使能通道0的自动应答 //修改后, 0x01 改为0x03
//SPI_NRF_WriteReg(NRF_WRITE_REG+EN_RXADDR,0x03); //使能通道0的接收地址
SPI_NRF_WriteReg(NRF_WRITE_REG+EN_RXADDR,0x03); //使能通道0的接收地址 //修改后, 0x01 改为0x03
SPI_NRF_WriteReg(NRF_WRITE_REG+SETUP_RETR,0x1a);//设置自动重发间隔时间:500us + 86us;最大自动重发次数:10次
SPI_NRF_WriteReg(NRF_WRITE_REG+RF_CH,CHANAL); //设置RF通道为CHANAL
SPI_NRF_WriteReg(NRF_WRITE_REG+RF_SETUP,0x0f); //设置TX发射参数,0db增益,2Mbps,低噪声增益开启
SPI_NRF_WriteReg(NRF_WRITE_REG+CONFIG,0x0e); //配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,发射模式,开启所有中断
/*CE拉高,进入发送模式*/
NRF_CE_HIGH();
Delay(0xffff); //CE要拉高一段时间才进入发送模式
}
参考:https://blog.csdn.net/qq_31530791/article/details/80720102
来源:CSDN
作者:hu_sirs
链接:https://blog.csdn.net/hu_sirs/article/details/90411178