SparkFun Forums 

Where electronics enthusiasts find answers.

All things pertaining to wireless and RF links
By articCircle
#24973
Hi there! I have been using the nrf24L01 for a while without problems. But now I need to use multiple pipes, not just one as I have been doing so far.

The problem I'm facing is that I can't receive any data unless it goes to pipe_0. If I use the same code on the transmitter but just change the TX address to be one from pipe_1 to pipe_5, the transmission will stop.

I am using AA and ESB.
Registers ENAA_Px is 1
Registers ERX_Px is 1
The LSB of the RX_ADDR_Px registers is not the same.
PTX RX_ADDR_P0 is equal to PTX TX_ADDR, wich is equal to the PRX RX_ADDP_Px.

I have followed all the specifications on the datasheet, but the pipes_1-5 are just not receiving data.

Has any one used multiple pipes or has some advice to give?, Thanks
Last edited by articCircle on Wed Jan 17, 2007 2:58 am, edited 1 time in total.
By brennen
#24987
Have you set the RX_PW_Px field for the pipe you're trying to receive on to something other than 0 (specifically on the pipes other than 0)? If not, you won't be able to receive data on that pipe.
By articCircle
#25035
Yes, I have set up the length of the pipes on the PRX, which is the same length of the packets sent by the Transmitter.

In the transmitter I have Enable Auto.Ack for pipe_0 and pipe_0 enabled in order to receive the Ack. from the receiver. Should I set the RX_PW_P0 to any value on the transmitter? But any way, when I send a packet to the pipe_0 of the receiver, the data is received without problems.

There is some other relevant action to take care of in order to receive data in other pipes than 0?
By brennen
#25048
articCircle wrote:Should I set the RX_PW_P0 to any value on the transmitter?
This shouldn't make any difference on the transmitter. For the transmitter, you have to get the data rate, address, address width, # of CRC bytes, and payload width right for the chips talk.

My suggestion to you is to start off leaving everything in a default configuration (except PWR_UP bit on TX/RX and PRIM_RX bit on RX). This allows you to receive data on pipes 0 and 1. Test this to see if you can get it working. Remember to change the TX address in your transmitting unit to exactly the default address of pipe 1 of your receiving unit when you try to talk to it (0xC2C2C2C2C2).

You can also look at my code to see if I do anything differently than you do. A quick search on the forum for nrf24l01.h and nrf24l01.c should turn up a link to my files.