通达0和通道1,没问题,关键是通道2,就没反应了,咋办- void NRF24L01_TX_Mode(void)
- {
- NRF24L01_CE_LOW();
- NRF24L01_Write_Buf(NRF_WRITE_REG+TX_ADDR,(uint8_t*)TX_ADDRESS2,TX_ADR_WIDTH);//写TX节点地址
- NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P2,(uint8_t*)RX_ADDRESS2,RX_ADR_WIDTH); //设置TX节点地址,主要为了使能ACK
-
- NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x07); //使能通道0~1的自动应答
- NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x07); //使能通道0~1的接收地址
- NRF24L01_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);//设置自动重发间隔时间:500us + 86us;最大自动重发次数:10次
- NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40); //设置RF通道为40
- NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f); //设置TX发射参数,0db增益,2Mbps,低噪声增益开启
- NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG,0x0e); //配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式,开启所有中断
- NRF24L01_CE_HIGH();//CE为高,10us后启动发送
- }
复制代码
这是发送,地址是0x36(通道2)
- void NRF24L01_RX_Mode(void)
- {
- NRF24L01_CE_LOW();
- NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(uint8_t*)RX_ADDRESS,RX_ADR_WIDTH);//写RX节点地址
- NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P1,(uint8_t*)RX_ADDRESS1,RX_ADR_WIDTH);//写RX节点地址
- NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P2,(uint8_t*)RX_ADDRESS2,1);//写RX节点地址
-
- NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x07); //使能通道0的自动应答
- NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x07);//使能通道0的接收地址
- NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40); //设置RF通信频率
- NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//选择通道0的有效数据宽度
- NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P1,RX_PLOAD_WIDTH);//选择通道0的有效数据宽度
- NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P2,RX_PLOAD_WIDTH);//选择通道0的有效数据宽度
- NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);//设置TX发射参数,0db增益,2Mbps,低噪声增益开启
- NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG, 0x0f);//配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式
- NRF24L01_CE_HIGH(); //CE为高,进入接收模式
- }
复制代码
这是接收。。。
|