This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

nRF24L01+ Multiple Pipes

I am trying to build a system with a single PRX and up to 5 PTX devices. Initial development work was done with a single PTX with it's address on Pipe0 in the PRX. I have communications working as expected.

I now have two PTX devices. Device 1 is on the PRX Pipe0 address. Device 2 is on the PRX Pipe1 address.

I have setup my application with #defines that allow me to easily rebuild the PRX with Pipe0 ONLY enabled, Pipe0 and Pipe1 enabled, or all pipes enabled.

If I enable only Pipe0 on the PRX, I can communicate with device that matches the Pipe0 address.

If I enable Pipe0 and Pipe1 on the PRX, I can communiate ONLY with the device that matches the Pipe1 address. If I only have the device that matches the Pipe0 address running, the PRX always reports no data in any pipe, and the Rx FIFO is always empty.

I am running Enhanced Shockburst, Auto Ack with payload, and Dynamic payload length.

Can anyone offer some insight into what is going on here?

Please see below for the register setups:

3000 79 !!!!!! Start Radio Initialization !!!!!! 3000 135 PIPE0 Only 3000 161 Rx Addr0: JDXY1 3000 193
3000 208 CONFIG: 0x0B EN_AA: 0x01 EN_RXADDR: 0x01 3000 268 SETUP_AW: 0x03 SETUP_RETR: 0x13 RF_CH: 0x02 3050 58 Status: 0x0E OBSERVE_TX: 0x00 RPD: 0x00 3100 55 Rx Addr0: JDXY1 Rx Addr1: JDTB2 Rx Addr2: 3 3150 56 Rx Addr3: 4 Rx Addr4: 5 Rx Addr5: 6 3200 46 Tx Addr: JDTB1 3250 25 FIFO Status: 0x11 DYNPD: 0x01 FEATURE: 0x06 3250 88 !!!!!! Radio Initialization Complete !!!!!!

Receives packets from JDXY1


3000 79 !!!!!! Start Radio Initialization !!!!!! 3000 135 PIPE0 PIPE1 3000 162 Rx Addr0: JDXY1 Rx Addr1: JDTB2 3000 210
3000 225 CONFIG: 0x0B EN_AA: 0x03 EN_RXADDR: 0x03 3000 286 SETUP_AW: 0x03 SETUP_RETR: 0x13 RF_CH: 0x02 3050 58 Status: 0x0E OBSERVE_TX: 0x00 RPD: 0x00 3100 55 Rx Addr0: JDXY1 tRx Addr1: JDTB2 Rx Addr2: 3 3150 56 Rx Addr3: 4 Rx Addr4: 5 Rx Addr5: 6 3200 46 Tx Addr: JDTB1 3250 25 FIFO Status: 0x11 DYNPD: 0x03 FEATURE: 0x06 3250 88 !!!!!! Radio Initialization Complete !!!!!!

Does NOT receive packets from JDXY1 DOES receive packetsfrom JDTB2

  • The first four bytes of the address for pipe0-5 needs to be unique compare to address defined for pipe0. With the current setting to first two bytes of all the addresses are the same (JDxxx). So if you keep JDXY1 for pipe0 you should change pipe1-5 to for example pqTBx (where x is incremented for each pipe). Avoid starting an address with a 0x5 (hex) or 0xA (hex) as 5 and A in hex would be just continuation of the preamble. Also, have a look in chapter 7.6 of the nRF24L01+ product specification.

Related