Hello,
My name is krishna, I have couple of NRF24L01+ modules,
I am trying to implement MultiCeiver in the NRF module. The problem is i am able to receive or transmit data through Pipe 0 and Pipe 1. But unable to communicate with the remaining Pipes.
unsigned char TX_ADDRESS_P0[TX_ADR_WIDTH]= {0x78,0x78,0x78,0x78,0x78}; //
unsigned char RX_ADDRESS_P0[RX_ADR_WIDTH]= {0x78,0x78,0x78,0x78,0x78}; //
unsigned char TX_ADDRESS_P1[TX_ADR_WIDTH]= {0xB3,0xB4,0xB5,0xB6,0xF1}; //
unsigned char RX_ADDRESS_P1[RX_ADR_WIDTH]= {0xB3,0xB4,0xB5,0xB6,0xF1}; //
unsigned char TX_ADDRESS_P2[TX_ADR_WIDTH]= {0xB3,0xB4,0xB5,0xB6,0x01}; //
unsigned char RX_ADDRESS_P2[RX_ADR_WIDTH]= {0xB3,0xB4,0xB5,0xB6,0x01}; //
unsigned char TX_ADDRESS_P3[TX_ADR_WIDTH]= {0xB3,0xB4,0xB5,0xB6,0xF3}; //
unsigned char RX_ADDRESS_P3[RX_ADR_WIDTH]= {0xB3,0xB4,0xB5,0xB6,0xF3}; //
unsigned char TX_ADDRESS_P4[TX_ADR_WIDTH]= {0xB3,0xB4,0xB5,0xB6,0xF4}; //
unsigned char RX_ADDRESS_P4[RX_ADR_WIDTH]= {0xB3,0xB4,0xB5,0xB6,0xF4}; //
unsigned char TX_ADDRESS_P5[TX_ADR_WIDTH]= {0xB3,0xB4,0xB5,0xB6,0xF5}; //
unsigned char RX_ADDRESS_P5[RX_ADR_WIDTH]= {0xB3,0xB4,0xB5,0xB6,0xF5}; //
void init_NRF24L01(void)
{
delay_us(100);
PORT_RF_OUT clr BIT(CE); // chip enable
PORT_RF_OUT set BIT(CSN); // Spi disable
PORT_RF_OUT clr BIT(SCK); // Spi clock line init high
nRF24L01_SPI_RW_Reg(WRITE_REG + EN_AA, 0x3f); // Turn on auto acknowledge
nRF24L01_SPI_RW_Reg(WRITE_REG + SETUP_AW, 0x03); // Address widht 5 bytes
nRF24L01_SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x03); //Enable data P0
nRF24L01_SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1a); //500us + 86us, 10 retrans...
nRF24L01_SPI_RW_Reg(WRITE_REG + RF_CH, 0); // Chanel 0 ; RF = 2400 + RF_CH* (1or 2 M)
nRF24L01_SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x04 | 0x06); // 1M, 0dbm (0x26 => 250kpbs, 0x07 => 1Mbps, 0x0F => 2Mbps)
nRF24L01_SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); // Do rong data truyen 32 byte
nRF24L01_SPI_RW_Reg(WRITE_REG + RX_PW_P1, RX_PLOAD_WIDTH); // Do rong data truyen 32 byte
nRF24L01_SPI_RW_Reg(WRITE_REG + RX_PW_P2, RX_PLOAD_WIDTH); // Do rong data truyen 32 byte
nRF24L01_SPI_RW_Reg(WRITE_REG + RX_PW_P3, RX_PLOAD_WIDTH); // Do rong data truyen 32 byte
nRF24L01_SPI_RW_Reg(WRITE_REG + RX_PW_P4, RX_PLOAD_WIDTH); // Do rong data truyen 32 byte
nRF24L01_SPI_RW_Reg(WRITE_REG + RX_PW_P5, RX_PLOAD_WIDTH); // Do rong data truyen 32 byte
nRF24L01_SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS_P2, TX_ADR_WIDTH); //
nRF24L01_SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS_P0, RX_ADR_WIDTH); //
nRF24L01_SPI_Write_Buf(WRITE_REG + RX_ADDR_P1, RX_ADDRESS_P1, RX_ADR_WIDTH); //
nRF24L01_SPI_Write_Buf(WRITE_REG + RX_ADDR_P2, RX_ADDRESS_P2, RX_ADR_WIDTH); //
nRF24L01_SPI_Write_Buf(WRITE_REG + RX_ADDR_P3, RX_ADDRESS_P3, RX_ADR_WIDTH); //
nRF24L01_SPI_Write_Buf(WRITE_REG + RX_ADDR_P4, RX_ADDRESS_P4, RX_ADR_WIDTH); //
nRF24L01_SPI_Write_Buf(WRITE_REG + RX_ADDR_P5, RX_ADDRESS_P5, RX_ADR_WIDTH); //
nRF24L01_SPI_RW_Reg(WRITE_REG + CONFIG, 0x0); // Enable CRC, 2 byte CRC, Send
delay_ms(16);
}
this is the code i used to communicate but it is not working for Pipe2 to Pipe5. is there any mistakes in my code or i am add something in my code?
please help me.
Thanks a lot,
regards, Krishna.