This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

bad range with nrf52840 as PTX and nrf24l01+ as PRX

I am using nrf52840 as PTX and nrf24l01+ as PRX. The application I am working on requires me to send 30 bytes from PTX to PRX at a 2 kHz packet rate. If both devices are near each other on my desk, it works very well. However if I pick up the transmitter and hold it far away from the receiver, I start to see a lot of packets be dropped. It completely stops working at a distance of about 1 meter.

For the transmitter I am using a Particle Boron (with the onboard chip antenna). The receiver, with the nrf24, is a custom board that is known to have about 20-30 ft range when used as PTX. It uses a big SMA antenna, so I'm not sure why this could be happening.

These are the settings on the PTX (nrf52)

  uint8_t base_addr_0[4] = {0xE7, 0xE7, 0xE7, 0xE7};
  uint8_t base_addr_1[4] = {0xC2, 0xC2, 0xC2, 0xC2};
  uint8_t addr_prefix[6] = {0xE7, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6}; // nrf24 has 6 pipes

  
  nrf_esb_config_t esb_cfg = NRF_ESB_LEGACY_CONFIG;
  
  esb_cfg.protocol = NRF_ESB_PROTOCOL_ESB_DPL;
  esb_cfg.mode = NRF_ESB_MODE_PTX;
  esb_cfg.event_handler = radio_callback;
  esb_cfg.bitrate = NRF_ESB_BITRATE_2MBPS;
  esb_cfg.crc = NRF_ESB_CRC_8BIT;
  esb_cfg.tx_output_power = NRF_ESB_TX_POWER_4DBM;
  esb_cfg.retransmit_delay = 500;
  esb_cfg.retransmit_count = 3;
  esb_cfg.tx_mode = NRF_ESB_TXMODE_MANUAL;
  esb_cfg.radio_irq_priority = 1;
  esb_cfg.event_irq_priority = 2;
  esb_cfg.payload_length = 32;
  esb_cfg.selective_auto_ack = true;

  nrf_esb_init(&esb_cfg);
  nrf_esb_set_base_address_0(base_addr_0);
  nrf_esb_set_base_address_1(base_addr_1);
  nrf_esb_set_prefixes(addr_prefix, 6); // 6 pipes

  nrf_esb_set_rf_channel(26);

  uint8_t pipe_mask = 1; // enable pipe 0
  nrf_esb_enable_pipes(pipe_mask);

And I configure the settings of nrf24 at boot as so:

CONFIG: 3B
EN_RXADDR: 01
RF_SETUP: 0E
SETUP_RETR: 1F
EN_AA: 01
FEATURE: 06
DYNPD: 01

I have checked the RPD register of the nrf24, and although sometimes the register returns a value of 01, more often than not the value will be 0. I have also tested the PTX by using a nrf52840 dk as PRX (with no antenna) and checking the RSSI. If the devices are close to each other on the desk, the receiver will indicate RSSI around -45 dBm, and about -86 dbM at 4 feet and already seeing dropped packets. I have tried many channels, including 2, 26, and 80, and always see the same problem. Not sure what else to try. Thank you in advance!

Parents Reply
  • If you are doing any layout with the nRF52 you can ask us for a layout review before shipping prototype to production, but before asking for an layout review make sure to check out:

    You can find some PCB guidelines in the nRF52840 product specifications that you should follow.

    In terms of PCB antenna, I suggest to check out the antenna for instance on the nRF52-DK (or any other 2.4GHz antenna design you may find (e.g. Wi-Fi, Bluetooth or other 2.4GHz application)). I recommend to add room for a Pi-network (as shown in chapter 4.2 here) between the RF matching network shown in the nRF52840 product specification and your PCB antenna, this will allow for tuning the antenna to 2.4GHz for best performance. If you choose to use a CHIP antenna, make sure to follow the manufacturer guidelines of placement and grounding.

    One final suggestion: Always start by placing the antenna first in the design you are doing.

    Kenneth

Children
Related