通達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為高,進入接收模式
- }
復制代碼
這是接收。。。
|