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

HI,I met a problem about the communication between nrf52832 and nrf24le over Gazell

Hello,

       the current situation is  nrf52832 can not receive the ack payload from nrf24le. 

       nrf52832 is DEVICE ,using the project from nrf5_sdk13.0.0\exzmples\multiprotocol\experimental_ble_app_gzll.After nrf52832 transfered  data to nrf24le,nrf52832 could receive ack from nrf24le

(void nrf_gzll_device_tx_success() could callback successfully),but tx_info was always false and nrf52832 can not fetch the ack_payload from nrf24le.The founction code of nrf_gzll_device_tx_sucess() is as follow:

void nrf_gzll_device_tx_success(uint32_t pipe,nrf_gzll_device_tx_info_t tx_info)

{

  uint8_t dummy[NRF_GZLL_CONST_MAX_PAYLOAD_LENGTH];

  uint32_t dummy_length=0;

  if(tx_info.payload_received_in_ack)   //tx_info.payload_received_in_ack is always false

    {

       nrf_gzll_fetch_packet_from_rx_fifo(pipe,dummy,&dummy_length);

     }

}

      nrf24le is HOST, using the project nrfgo_sdk2.3.0\source_code\gazell_examples\gzll_host_ack_payload. It could receive the data from nrf52832,and it used the function,gzll_ack_payload_write(),to write the ack_payload. The main founction code is as follow:

    void main(void)

{

   uint8_t gzll_rx_payload[GZLL_MAX_PAYLOAD_LENGTH];

   uint8_t gzll_rx_payload_length=0;

  uint8_t gzll_ack_payload[5]={0x22,0x33,0x44,0x55,0x66};

 

   mcu_init();

   gzll_init();

  

   EA=1;

  gzll_rx_start();

 for(;;)

 {

    if(gzll_rx_fifo_read(gzll_rx_payload,&gzll_rx_payload_length,0))

       {

           gzll_ack_payload_write(gzll_tx_payload,5,0);

       }

  }

}

Related