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

data send from nrf52832 to nrf24l01p

Hello,

Can I send data from nrf52832 to nrf24l01p? If yes, please suggest me the simple code for it. I tried to send data but it failed. Here is my piece of code :

Transmitter side (nRF52832)
#include <stdbool.h>
#include <stdint.h>
#include <string.h>
#include "sdk_common.h"
#include "nrf.h"
#include "nrf_esb.h"
#include "nrf_error.h"
#include "nrf_esb_error_codes.h"
#include "nrf_delay.h"
#include "nrf_gpio.h"
#include "boards.h"
#include "nrf_delay.h"
#include "app_util.h"

#include "nrf_log.h"
#include "nrf_log_ctrl.h"
#include "nrf_log_default_backends.h"

static nrf_esb_payload_t        tx_payload = NRF_ESB_CREATE_PAYLOAD(0, 0x01, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00);

static nrf_esb_payload_t        rx_payload;

void nrf_esb_event_handler(nrf_esb_evt_t const * p_event)
{
    switch (p_event->evt_id)
    {
        case NRF_ESB_EVENT_TX_SUCCESS:
            NRF_LOG_INFO("TX SUCCESS EVENT");
            break;
        case NRF_ESB_EVENT_TX_FAILED:
            NRF_LOG_INFO("TX FAILED EVENT");
            (void) nrf_esb_flush_tx();
            (void) nrf_esb_start_tx();
            break;
        case NRF_ESB_EVENT_RX_RECEIVED:
            NRF_LOG_INFO("RX RECEIVED EVENT");
            while (nrf_esb_read_rx_payload(&rx_payload) == NRF_SUCCESS)
            {
                if (rx_payload.length > 0)
                {
                    NRF_LOG_INFO("RX RECEIVED PAYLOAD");
                }
            }
            break;
    }
}


void clocks_start( void )
{
    NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
    NRF_CLOCK->TASKS_HFCLKSTART = 1;

    while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0);
}


void gpio_init( void )
{
    nrf_gpio_range_cfg_output(8, 15);
    bsp_board_init(BSP_INIT_LEDS);
}


uint32_t esb_init( void )
{
    uint32_t err_code;
    uint8_t base_addr_0[4] = {0xE7, 0xE7, 0xE7, 0xE7};
    uint8_t base_addr_1[4] = {0xC2, 0xC2, 0xC2, 0xC2};
    uint8_t addr_prefix[8] = {0xE7, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8 };

    nrf_esb_config_t nrf_esb_config         = NRF_ESB_LEGACY_CONFIG;
    nrf_esb_config.protocol                 = NRF_ESB_PROTOCOL_ESB;
    nrf_esb_config.retransmit_delay         = 600;
    nrf_esb_config.bitrate                  = NRF_ESB_BITRATE_2MBPS;
    nrf_esb_config.event_handler            = nrf_esb_event_handler;
    nrf_esb_config.mode                     = NRF_ESB_MODE_PTX;
    nrf_esb_config.selective_auto_ack       = false;

    err_code = nrf_esb_init(&nrf_esb_config);

    VERIFY_SUCCESS(err_code);

    err_code = nrf_esb_set_base_address_0(base_addr_0);
    VERIFY_SUCCESS(err_code);

    err_code = nrf_esb_set_base_address_1(base_addr_1);
    VERIFY_SUCCESS(err_code);

    err_code = nrf_esb_set_prefixes(addr_prefix, NRF_ESB_PIPE_COUNT);
    VERIFY_SUCCESS(err_code);
		
		err_code = nrf_esb_set_rf_channel(0); 
    VERIFY_SUCCESS(err_code);

    return err_code;
}


int main(void)
{
    ret_code_t err_code;

    gpio_init();

    err_code = NRF_LOG_INIT(NULL);
    APP_ERROR_CHECK(err_code);

    NRF_LOG_DEFAULT_BACKENDS_INIT();

    clocks_start();

    err_code = esb_init();
    APP_ERROR_CHECK(err_code);

    NRF_LOG_INFO("Enhanced ShockBurst Transmitter Example started.");
	
		uint32_t c_channel = 0;
		nrf_esb_get_rf_channel(&c_channel);
		NRF_LOG_INFO("Channel %d", c_channel);
		NRF_LOG_FLUSH();
	
    while (true)
    {
        NRF_LOG_INFO("Transmitting packet %02x", tx_payload.data[1]);

        tx_payload.noack = false;
        if (nrf_esb_write_payload(&tx_payload) == NRF_SUCCESS)
        {
            // Toggle one of the LEDs.
            nrf_gpio_pin_write(LED_1, !(tx_payload.data[1]%8>0 && tx_payload.data[1]%8<=4));
            nrf_gpio_pin_write(LED_2, !(tx_payload.data[1]%8>1 && tx_payload.data[1]%8<=5));
            nrf_gpio_pin_write(LED_3, !(tx_payload.data[1]%8>2 && tx_payload.data[1]%8<=6));
            nrf_gpio_pin_write(LED_4, !(tx_payload.data[1]%8>3));
            tx_payload.data[1]++;
        }
        else
        {
            NRF_LOG_WARNING("Sending packet failed");
        }

        nrf_delay_ms(200);
				
				if (NRF_LOG_PROCESS() == false)
        {
            __WFE();
        }
    }
}


Receiver side(nRF24l01p)

#include <nRF24L01.h>
#include <RF24.h>
#include <printf.h>
//#define address "0xE7E7E7E7"
RF24 radio(10, 9); // CE, CSN
//const byte address[6] = "IT002";
const byte address[] = {0xE7, 0xE7, 0xE7, 0xE7};
//const byte address[] = {0xC2, 0xC2, 0xC2, 0xC2, 0xC2};
void setup() {
  Serial.begin(19200);
  printf_begin();
  radio.begin();
  radio.setChannel(0);
//  radio.setRetries(1, 1);
//  radio.setCRCLength(1);
  radio.setPayloadSize(32);
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_MAX);
  radio.startListening();
}
void loop() {
//  Serial.println(radio.getCRCLength());
  if (radio.available()) {
    Serial.println("Avail");
    char text[32] = "";
    radio.read(&text, sizeof(text));
    Serial.println(text);
//    delayMicroseconds(200);
      Serial.println(radio.testRPD());
  }
  else{
    Serial.println("Not available");
//    radio.printDetails();
}
//  Serial.println(radio.testRPD());
}
Parents
  • Hello,

    I got help and be able to send/receive data between above mentioned nRFs.

    Here is working code if anybody needs:

    nrf52832 as Receiver

    /**
     * Copyright (c) 2014 - 2019, Nordic Semiconductor ASA
     *
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without modification,
     * are permitted provided that the following conditions are met:
     *
     * 1. Redistributions of source code must retain the above copyright notice, this
     *    list of conditions and the following disclaimer.
     *
     * 2. Redistributions in binary form, except as embedded into a Nordic
     *    Semiconductor ASA integrated circuit in a product or a software update for
     *    such product, must reproduce the above copyright notice, this list of
     *    conditions and the following disclaimer in the documentation and/or other
     *    materials provided with the distribution.
     *
     * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
     *    contributors may be used to endorse or promote products derived from this
     *    software without specific prior written permission.
     *
     * 4. This software, with or without modification, must only be used with a
     *    Nordic Semiconductor ASA integrated circuit.
     *
     * 5. Any software provided in binary form under this license must not be reverse
     *    engineered, decompiled, modified and/or disassembled.
     *
     * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
     * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
     * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
     * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
     * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
     * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     *
     */
    #include "nrf_esb.h"
    
    #include <stdbool.h>
    #include <stdint.h>
    #include <string.h>
    #include "sdk_common.h"
    #include "nrf.h"
    #include "nrf_esb_error_codes.h"
    #include "nrf_delay.h"
    #include "nrf_gpio.h"
    #include "nrf_error.h"
    #include "boards.h"
    
    #include "nrf_log.h"
    #include "nrf_log_ctrl.h"
    #include "nrf_log_default_backends.h"
    
    #define LED_ON          0
    #define LED_OFF         1
    
    #define NRF_ESB_LEGACY
    
    /*lint -save -esym(40, BUTTON_1) -esym(40, BUTTON_2) -esym(40, BUTTON_3) -esym(40, BUTTON_4) -esym(40, LED_1) -esym(40, LED_2) -esym(40, LED_3) -esym(40, LED_4) */
    
    static nrf_esb_payload_t tx_payload;
    static nrf_esb_payload_t rx_payload;
    static uint8_t m_state[4];
    uint8_t led_nr;
    
    void nrf_esb_event_handler(nrf_esb_evt_t const * p_event)
    {
        switch (p_event->evt_id)
        {
            case NRF_ESB_EVENT_TX_SUCCESS:
                NRF_LOG_INFO("SUCCESS");
                break;
            case NRF_ESB_EVENT_TX_FAILED:
                NRF_LOG_INFO("FAILED");
                (void) nrf_esb_flush_tx();
                break;
            case NRF_ESB_EVENT_RX_RECEIVED:
                while (nrf_esb_read_rx_payload(&rx_payload) == NRF_SUCCESS) ;
                NRF_LOG_INFO("Receiving packet: %x", rx_payload.data[0]);
                NRF_LOG_INFO("Receiving RSSI: %x", rx_payload.rssi);
    
                switch (rx_payload.data[0] & 0xFUL)
                {
                    case 0x1:
                        m_state[0] = !m_state[0];
                        nrf_gpio_pin_write(LED_1, m_state[0]);
                        break;
    
                    case 0x2:
                        m_state[1] = !m_state[1];
                        nrf_gpio_pin_write(LED_2, m_state[1]);
                        break;
    
                    case 0x4:
                        m_state[2] = !m_state[2];
                        nrf_gpio_pin_write(LED_3, m_state[2]);
                        break;
    
                    case 0x8:
                        m_state[3] = !m_state[3];
                        nrf_gpio_pin_write(LED_4, m_state[3]);
                        break;
                }
    
                nrf_gpio_pin_write(LED_1, m_state[0]);
                nrf_gpio_pin_write(LED_2, m_state[1]);
                nrf_gpio_pin_write(LED_3, m_state[2]);
                nrf_gpio_pin_write(LED_4, m_state[3]);
    
                tx_payload.length = 32;
                tx_payload.data[0] = m_state[0] << 0
                                   | m_state[1] << 1
                                   | m_state[2] << 2
                                   | m_state[3] << 3;
                (void) nrf_esb_write_payload(&tx_payload);
    
                NRF_LOG_DEBUG("Queue transmitt packet: %02x", tx_payload.data[0]);
                break;
        }
    }
    
    
    void clocks_start( void )
    {
        // Start HFCLK and wait for it to start.
        NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
        NRF_CLOCK->TASKS_HFCLKSTART = 1;
        while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0);
    }
    
    
    uint32_t esb_init( void )
    {
        uint32_t err_code;
        uint8_t base_addr_0[4] = {0xE7, 0xE7, 0xE7, 0xE7};
        uint8_t base_addr_1[4] = {0xC2, 0xC2, 0xC2, 0xC2};
        uint8_t addr_prefix[8] = {0xE7, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8 };
    
    #ifndef NRF_ESB_LEGACY
        nrf_esb_config_t nrf_esb_config         = NRF_ESB_DEFAULT_CONFIG;
    #else // NRF_ESB_LEGACY
        nrf_esb_config_t nrf_esb_config         = NRF_ESB_LEGACY_CONFIG;
    #endif // NRF_ESB_LEGACY
        nrf_esb_config.selective_auto_ack       = 0;
        nrf_esb_config.payload_length           = 32;
        nrf_esb_config.bitrate                  = NRF_ESB_BITRATE_2MBPS;
        nrf_esb_config.mode                     = NRF_ESB_MODE_PRX;
        nrf_esb_config.event_handler            = nrf_esb_event_handler;
    
        err_code = nrf_esb_init(&nrf_esb_config);
        VERIFY_SUCCESS(err_code);
    
        err_code = nrf_esb_set_rf_channel(0); 
        VERIFY_SUCCESS(err_code);
    
        err_code = nrf_esb_set_base_address_0(base_addr_0);
        VERIFY_SUCCESS(err_code);
    
        err_code = nrf_esb_set_base_address_1(base_addr_1);
        VERIFY_SUCCESS(err_code);
    
        err_code = nrf_esb_set_prefixes(addr_prefix, 8);
        VERIFY_SUCCESS(err_code);
    
        tx_payload.length = 32;
    
        return NRF_SUCCESS;
    }
    
    void gpio_init( void )
    {
        m_state[0] = LED_OFF;
        m_state[1] = LED_OFF;
        m_state[2] = LED_OFF;
        m_state[3] = LED_OFF;
    
        //nrf_gpio_range_cfg_output(8, 31);
        bsp_board_init(BSP_INIT_LEDS);
    
        nrf_gpio_pin_write(LED_1, m_state[0]);
        nrf_gpio_pin_write(LED_2, m_state[1]);
        nrf_gpio_pin_write(LED_3, m_state[2]);
        nrf_gpio_pin_write(LED_4, m_state[3]);
    }
    
    
    uint32_t logging_init( void )
    {
        uint32_t err_code;
        err_code = NRF_LOG_INIT(NULL);
    
        NRF_LOG_DEFAULT_BACKENDS_INIT();
    
        return err_code;
    }
    
    
    void power_manage( void )
    {
        // WFE - SEV - WFE sequence to wait until a radio event require further actions.
        __WFE();
        __SEV();
        __WFE();
    }
    
    
    int main(void)
    {
        uint32_t err_code;
        err_code = logging_init();
        APP_ERROR_CHECK(err_code);
        gpio_init();
        err_code = esb_init();
        APP_ERROR_CHECK(err_code);
        clocks_start();
    
        NRF_LOG_INFO("Enhanced ShockBurst Receiver Example started.");
    
        err_code = nrf_esb_start_rx();
        APP_ERROR_CHECK(err_code);
    
        tx_payload.data[0] = m_state[0] << 0
                           | m_state[1] << 1
                           | m_state[2] << 2
                           | m_state[3] << 3;
        err_code = nrf_esb_write_payload(&tx_payload);
        APP_ERROR_CHECK(err_code);
    
        while (true)
        {
            if (NRF_LOG_PROCESS() == false)
            {
                power_manage();
            }
        }
    }
    /*lint -restore */
    

    nrf24l01 as Transmitter:

    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include "printf.h"
    
    RF24 radio(10, 9);
    int packetCounter = 0;
    //uint8_t incoming_data = 0;
    uint8_t incoming_data[32] = {0xDE, 0x00, 0xA0, 0x1D, 0xCE, 0xEE, 0xFF, 0xD6, 0xAF, 0x1F, 0xF0, 0x0E, 0x1A, 0x2C, 0x3F, 0x4F, 0xEF, 0xDE, 0x00, 0xA0, 0x1D, 0xCE, 0xEE, 0xFF, 0xD6, 0xAF, 0x1F, 0xF0, 0x0E, 0x1A, 0x2C, 0x3F};
    //uint8_t incoming_data[] = {0x05, 0x01, 0x02};
    uint8_t message[1];
    
    //int64_t pipe_adress[2] = {0xB3B4B5B601, 0x00E7E7E7E7};
    int64_t pipe_adress[2] = {0xE7E7E7E7E7,0xC2C2C2C2C2};
    
    void setupRadio()
    {
      radio.begin();
      radio.setRetries(15, 15);
      radio.setChannel(0);
      radio.setCRCLength(2);
      radio.setPayloadSize(32);
      radio.setDataRate(RF24_2MBPS);
      radio.setPALevel(RF24_PA_MAX);
      radio.setAutoAck(true);
    //  radio.enableDynamicPayloads();
    //  radio.openReadingPipe(0, pipe_adress[0]);
    //  radio.openReadingPipe(1, pipe_adress[1]);
    
      radio.openWritingPipe(pipe_adress[0]);
    //  radio.openWritingPipe(1, pipe_adress[1]);
      radio.stopListening();
    //  radio.startListening();
      radio.printDetails();
    }
    
    void setup() {
      Serial.begin(19200);
      Serial.println("SETUP");
      Serial.println(sizeof(incoming_data));
      printf_begin();
    
      setupRadio();
    }
     uint8_t i = 5;
    void loop() {
     
    //Serial.println("SUCCESS    ");
        if(radio.write(incoming_data, sizeof(incoming_data))){
          Serial.println("SUCCESS    ");
           Serial.println("SUCCESS    ");
          }
      delay(500);
    //  incoming_data[0] = i ++;
    }

Reply
  • Hello,

    I got help and be able to send/receive data between above mentioned nRFs.

    Here is working code if anybody needs:

    nrf52832 as Receiver

    /**
     * Copyright (c) 2014 - 2019, Nordic Semiconductor ASA
     *
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without modification,
     * are permitted provided that the following conditions are met:
     *
     * 1. Redistributions of source code must retain the above copyright notice, this
     *    list of conditions and the following disclaimer.
     *
     * 2. Redistributions in binary form, except as embedded into a Nordic
     *    Semiconductor ASA integrated circuit in a product or a software update for
     *    such product, must reproduce the above copyright notice, this list of
     *    conditions and the following disclaimer in the documentation and/or other
     *    materials provided with the distribution.
     *
     * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
     *    contributors may be used to endorse or promote products derived from this
     *    software without specific prior written permission.
     *
     * 4. This software, with or without modification, must only be used with a
     *    Nordic Semiconductor ASA integrated circuit.
     *
     * 5. Any software provided in binary form under this license must not be reverse
     *    engineered, decompiled, modified and/or disassembled.
     *
     * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
     * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
     * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
     * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
     * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
     * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     *
     */
    #include "nrf_esb.h"
    
    #include <stdbool.h>
    #include <stdint.h>
    #include <string.h>
    #include "sdk_common.h"
    #include "nrf.h"
    #include "nrf_esb_error_codes.h"
    #include "nrf_delay.h"
    #include "nrf_gpio.h"
    #include "nrf_error.h"
    #include "boards.h"
    
    #include "nrf_log.h"
    #include "nrf_log_ctrl.h"
    #include "nrf_log_default_backends.h"
    
    #define LED_ON          0
    #define LED_OFF         1
    
    #define NRF_ESB_LEGACY
    
    /*lint -save -esym(40, BUTTON_1) -esym(40, BUTTON_2) -esym(40, BUTTON_3) -esym(40, BUTTON_4) -esym(40, LED_1) -esym(40, LED_2) -esym(40, LED_3) -esym(40, LED_4) */
    
    static nrf_esb_payload_t tx_payload;
    static nrf_esb_payload_t rx_payload;
    static uint8_t m_state[4];
    uint8_t led_nr;
    
    void nrf_esb_event_handler(nrf_esb_evt_t const * p_event)
    {
        switch (p_event->evt_id)
        {
            case NRF_ESB_EVENT_TX_SUCCESS:
                NRF_LOG_INFO("SUCCESS");
                break;
            case NRF_ESB_EVENT_TX_FAILED:
                NRF_LOG_INFO("FAILED");
                (void) nrf_esb_flush_tx();
                break;
            case NRF_ESB_EVENT_RX_RECEIVED:
                while (nrf_esb_read_rx_payload(&rx_payload) == NRF_SUCCESS) ;
                NRF_LOG_INFO("Receiving packet: %x", rx_payload.data[0]);
                NRF_LOG_INFO("Receiving RSSI: %x", rx_payload.rssi);
    
                switch (rx_payload.data[0] & 0xFUL)
                {
                    case 0x1:
                        m_state[0] = !m_state[0];
                        nrf_gpio_pin_write(LED_1, m_state[0]);
                        break;
    
                    case 0x2:
                        m_state[1] = !m_state[1];
                        nrf_gpio_pin_write(LED_2, m_state[1]);
                        break;
    
                    case 0x4:
                        m_state[2] = !m_state[2];
                        nrf_gpio_pin_write(LED_3, m_state[2]);
                        break;
    
                    case 0x8:
                        m_state[3] = !m_state[3];
                        nrf_gpio_pin_write(LED_4, m_state[3]);
                        break;
                }
    
                nrf_gpio_pin_write(LED_1, m_state[0]);
                nrf_gpio_pin_write(LED_2, m_state[1]);
                nrf_gpio_pin_write(LED_3, m_state[2]);
                nrf_gpio_pin_write(LED_4, m_state[3]);
    
                tx_payload.length = 32;
                tx_payload.data[0] = m_state[0] << 0
                                   | m_state[1] << 1
                                   | m_state[2] << 2
                                   | m_state[3] << 3;
                (void) nrf_esb_write_payload(&tx_payload);
    
                NRF_LOG_DEBUG("Queue transmitt packet: %02x", tx_payload.data[0]);
                break;
        }
    }
    
    
    void clocks_start( void )
    {
        // Start HFCLK and wait for it to start.
        NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
        NRF_CLOCK->TASKS_HFCLKSTART = 1;
        while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0);
    }
    
    
    uint32_t esb_init( void )
    {
        uint32_t err_code;
        uint8_t base_addr_0[4] = {0xE7, 0xE7, 0xE7, 0xE7};
        uint8_t base_addr_1[4] = {0xC2, 0xC2, 0xC2, 0xC2};
        uint8_t addr_prefix[8] = {0xE7, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8 };
    
    #ifndef NRF_ESB_LEGACY
        nrf_esb_config_t nrf_esb_config         = NRF_ESB_DEFAULT_CONFIG;
    #else // NRF_ESB_LEGACY
        nrf_esb_config_t nrf_esb_config         = NRF_ESB_LEGACY_CONFIG;
    #endif // NRF_ESB_LEGACY
        nrf_esb_config.selective_auto_ack       = 0;
        nrf_esb_config.payload_length           = 32;
        nrf_esb_config.bitrate                  = NRF_ESB_BITRATE_2MBPS;
        nrf_esb_config.mode                     = NRF_ESB_MODE_PRX;
        nrf_esb_config.event_handler            = nrf_esb_event_handler;
    
        err_code = nrf_esb_init(&nrf_esb_config);
        VERIFY_SUCCESS(err_code);
    
        err_code = nrf_esb_set_rf_channel(0); 
        VERIFY_SUCCESS(err_code);
    
        err_code = nrf_esb_set_base_address_0(base_addr_0);
        VERIFY_SUCCESS(err_code);
    
        err_code = nrf_esb_set_base_address_1(base_addr_1);
        VERIFY_SUCCESS(err_code);
    
        err_code = nrf_esb_set_prefixes(addr_prefix, 8);
        VERIFY_SUCCESS(err_code);
    
        tx_payload.length = 32;
    
        return NRF_SUCCESS;
    }
    
    void gpio_init( void )
    {
        m_state[0] = LED_OFF;
        m_state[1] = LED_OFF;
        m_state[2] = LED_OFF;
        m_state[3] = LED_OFF;
    
        //nrf_gpio_range_cfg_output(8, 31);
        bsp_board_init(BSP_INIT_LEDS);
    
        nrf_gpio_pin_write(LED_1, m_state[0]);
        nrf_gpio_pin_write(LED_2, m_state[1]);
        nrf_gpio_pin_write(LED_3, m_state[2]);
        nrf_gpio_pin_write(LED_4, m_state[3]);
    }
    
    
    uint32_t logging_init( void )
    {
        uint32_t err_code;
        err_code = NRF_LOG_INIT(NULL);
    
        NRF_LOG_DEFAULT_BACKENDS_INIT();
    
        return err_code;
    }
    
    
    void power_manage( void )
    {
        // WFE - SEV - WFE sequence to wait until a radio event require further actions.
        __WFE();
        __SEV();
        __WFE();
    }
    
    
    int main(void)
    {
        uint32_t err_code;
        err_code = logging_init();
        APP_ERROR_CHECK(err_code);
        gpio_init();
        err_code = esb_init();
        APP_ERROR_CHECK(err_code);
        clocks_start();
    
        NRF_LOG_INFO("Enhanced ShockBurst Receiver Example started.");
    
        err_code = nrf_esb_start_rx();
        APP_ERROR_CHECK(err_code);
    
        tx_payload.data[0] = m_state[0] << 0
                           | m_state[1] << 1
                           | m_state[2] << 2
                           | m_state[3] << 3;
        err_code = nrf_esb_write_payload(&tx_payload);
        APP_ERROR_CHECK(err_code);
    
        while (true)
        {
            if (NRF_LOG_PROCESS() == false)
            {
                power_manage();
            }
        }
    }
    /*lint -restore */
    

    nrf24l01 as Transmitter:

    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include "printf.h"
    
    RF24 radio(10, 9);
    int packetCounter = 0;
    //uint8_t incoming_data = 0;
    uint8_t incoming_data[32] = {0xDE, 0x00, 0xA0, 0x1D, 0xCE, 0xEE, 0xFF, 0xD6, 0xAF, 0x1F, 0xF0, 0x0E, 0x1A, 0x2C, 0x3F, 0x4F, 0xEF, 0xDE, 0x00, 0xA0, 0x1D, 0xCE, 0xEE, 0xFF, 0xD6, 0xAF, 0x1F, 0xF0, 0x0E, 0x1A, 0x2C, 0x3F};
    //uint8_t incoming_data[] = {0x05, 0x01, 0x02};
    uint8_t message[1];
    
    //int64_t pipe_adress[2] = {0xB3B4B5B601, 0x00E7E7E7E7};
    int64_t pipe_adress[2] = {0xE7E7E7E7E7,0xC2C2C2C2C2};
    
    void setupRadio()
    {
      radio.begin();
      radio.setRetries(15, 15);
      radio.setChannel(0);
      radio.setCRCLength(2);
      radio.setPayloadSize(32);
      radio.setDataRate(RF24_2MBPS);
      radio.setPALevel(RF24_PA_MAX);
      radio.setAutoAck(true);
    //  radio.enableDynamicPayloads();
    //  radio.openReadingPipe(0, pipe_adress[0]);
    //  radio.openReadingPipe(1, pipe_adress[1]);
    
      radio.openWritingPipe(pipe_adress[0]);
    //  radio.openWritingPipe(1, pipe_adress[1]);
      radio.stopListening();
    //  radio.startListening();
      radio.printDetails();
    }
    
    void setup() {
      Serial.begin(19200);
      Serial.println("SETUP");
      Serial.println(sizeof(incoming_data));
      printf_begin();
    
      setupRadio();
    }
     uint8_t i = 5;
    void loop() {
     
    //Serial.println("SUCCESS    ");
        if(radio.write(incoming_data, sizeof(incoming_data))){
          Serial.println("SUCCESS    ");
           Serial.println("SUCCESS    ");
          }
      delay(500);
    //  incoming_data[0] = i ++;
    }

Children
Related