Cannot use nRF24L01 pipe 1,only pipe 0 can work,why?

Now I am using nRF24L01 to set a simple 3 point star network.I use pipe 1 as the physical address of the point,pipe 0 as the broadcast address.All pipe is no ack.

Now,I set the physical address of point 2,also pipe 1 of point 2,as C1 C1 C1 C1 C1,then set the transmit address of the point 1 as C1 C1 C1 C1 C1.But, there is transmitting,no receiving, if I use the pipe 0 as the physical address, there is no problem.

Can anyone help me?

My setting:

Point 1(TX):tx address:C1 C1 C1 C1 C1

Point 2(RX):pipe 1 address:C1 C1 C1 C1 C1

No receiving.

If I set as follows:

Point 1(TX):tx address:C1 C1 C1 C1 C1

Point 2(RX):pipe 0 address:C1 C1 C1 C1 C1

No problem.


Register map:

EN_AA=0x00,EN_RXADDR=0x03

Is there any further requirements of register map to use pipe 1,2…? :frowning:

I would first suggest leaving all the default addresses on the pipes of your RX unit. Enable each pipe at the RX by setting its payload width appropriately (something > 1 that matches the number of bytes you want to send from the TX). Then, at your TX, set the TX address to pipe 0, and send a packet to it. Next set the TX address to pipe 1, send a packet. Do this until you have gotten to the point of being able to ping all 6 pipes at the RX. Only then should you try to start changing the addresses, etc. Tutorial 3 on my website does this automatically, and also prints out the statistics of each pipe’s pings.

Thank you for quick reply!

Last night,I figured out pipe 1 with the default address,but pipe 2…still doesn’t work.This morning,I changed the array used for store the address:

first,I define as follow:

unsigned char phyadd[5]={0xC2,0xC2,0xC2,0xC2,0xC3};

then,I change to:

unsigned char phyadd[5]={0xC3,0xC2,0xC2,0xC2,0xC2};

Then,pipe 2,3…worked.That’s because the SPI transmit LSByte first.

After that,I use auto ack with all pipe,the device also can work properly.But when I enable a specific pipe to auto ack,ex.pipe 5,there is transmiting,but no receiving.

I am puzzled.In the TX unit, there should be MAX_RT interrupt,if there is no receving,but I got TX_DS interrupt in the TX unit.Why?

Thanks again!