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

How does BLE + ESB receive?

Hello Nordic Engineer,

I'm a beginner

In this GitHub

If I add code after 473 lines

rx_payload.noack = true

what will the final result be?

Thanks

Parents
  • Hi Eric

    Which microcontroller are you using?

    If I add code after 473 lines

    rx_payload.noack = true

    Have you tried this yourself?
    If so, did it disable the ack in the rx payload as expected?

    Regards,
    Sigurd Hellesvik

  • Hi ,

    Can you answer this question, please?

    Thank you

  • eric_cheng said:
    RX can choose to turn off ack (do not send response to TX)

    This is not possible, it's only the TX that can control whether it want an ACK or not.

    eric_cheng said:
    TX can also choose to turn off ack (no response is received)

    Correct.

  • Thank you,

    TX can close or open ack, I understand this

    but for RX

    《rx_payload.noack = true;》What does this code do?

  • Calling rx_payload.noack in the callback irq handler will have no effect.

    If you don't want to receive an ack, then set this flag to true before calling nrf_esb_write_payload().

    Best regards,
    Kenneth

  • I don't quite understand the specific effect...

    But I turned them all off

    nrf_esb_config.selective_auto_ack = true;
    rx_payload.noack = true;

    =========================

    I describe my current approach

    Can you correct me if I'm doing something wrong?

    I used Timer1 to switch TX and RX In 《timer_event_handler》

    state = !state;
    
    if(state == true) 
    	{		
    		//memcpy(&nrf_esb_config, &tmp_config, sizeof(nrf_esb_config_t));
    		nrf_esb_config.payload_length     = 2; 
    		nrf_esb_config.protocol           = NRF_ESB_PROTOCOL_ESB_DPL;
    		nrf_esb_config.retransmit_delay   = 1000;
    		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.tx_output_power		= NRF_ESB_TX_POWER_4DBM;
    		nrf_esb_config.selective_auto_ack = true;
    		nrf_esb_config.radio_irq_priority = 0; 
    	}
    	else
    	{
    		//memcpy(&nrf_esb_config, &tmp_config, sizeof(nrf_esb_config_t)); 
    		nrf_esb_config.payload_length     = 8;
    		nrf_esb_config.protocol           = NRF_ESB_PROTOCOL_ESB_DPL;
    		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;
    		nrf_esb_config.selective_auto_ack = true;
    		nrf_esb_config.radio_irq_priority = 0;
    	}

    I don't know if it is correct to use timer to change TX and RX?

    Thank you

  • Hi,

    I suggest to get an PPK II, then you can see in real-time based on the current consumption when it's in rx, tx, idle, and switching. This will make it much easier to see how your changes affect timing etc.

    Best regards,
    Kenneth 

Reply Children
No Data
Related