RX enable time on the PA LNA driver for nRF21540

Hi

I'm using the PA LNA driver for the nRF21540 with the function:

void mesh_lna_setup_start(uint32_t rampup_start_capture_time, uint32_t timer_index)

Now, when I check the TX and RX signals, I can see that the RX enable PIN is switched low every 200ms, not only during the TX interval.

How can I change this to 100% receiving time? When a packet is coming over BLE and the RX is switched off, this packet is getting lost.

Here is the plot of the TX, RX enable Pins:

CH1 is TX, CH2 (green) is RX:

Parents Reply Children
  • Hi,

    Dominik Eugster said:
    What is the reason why BLE Mesh is not recommended?

    nRF5 SDK for Mesh is in maintenance mode only so newer features won't addded. New features and improvements will only come to nRF Connect SDK moving forward, which is why it is recommended to move to nRF Connect SDK with newer designs. More details can be found here.

    What is your scan window(BEARER_SCAN_WINDOW_DEFAULT_MS) and scan interval(BEARER_SCAN_INT_DEFAULT_MS) set to?

  • /**
     * External power amplifier (PA) setup time in microseconds.
     *
     * Must be lower than the radio rampup time (as specified in the Electrical specification of each chip's Product Specification).
     */
    #ifndef MESH_PA_SETUP_TIME_US
    #define MESH_PA_SETUP_TIME_US 18
    #endif
    
    /**
     * External low noise amplifier (LNA) setup time in microseconds.
     *
     * Must be lower than the radio rampup time (as specified in the Electrical specification of each chip's Product Specification).
     */
    #ifndef MESH_LNA_SETUP_TIME_US
    #define MESH_LNA_SETUP_TIME_US 18
    #endif
    
    /** HF timer peripheral index to allocate for bearer handler. E.g. if set to 2, NRF_TIMER2 will be used. Must be a literal number. */
    #ifndef BEARER_ACTION_TIMER_INDEX
    #define BEARER_ACTION_TIMER_INDEX 2
    #endif
    
    /** Maximum overhead of application TX Complete call, */
    #ifndef APPLICATION_TX_COMPLETE_OVERHEAD_US
    #define APPLICATION_TX_COMPLETE_OVERHEAD_US 80
    #endif
    
    /** Default access address. */
    #ifndef BEARER_ACCESS_ADDR_DEFAULT
    #define BEARER_ACCESS_ADDR_DEFAULT BEARER_ACCESS_ADDR_NONCONN
    #endif
    
    /** Maximum number of channels an advertiser can transmit on. */
    #ifndef BEARER_ADV_CHANNELS_MAX
    #define BEARER_ADV_CHANNELS_MAX 3
    #endif
    
    /** Default advertisement interval. */
    #ifndef BEARER_ADV_INT_DEFAULT_MS
    #define BEARER_ADV_INT_DEFAULT_MS 20
    #endif
    
    /** Default scan interval */
    #ifndef BEARER_SCAN_INT_DEFAULT_MS
    #define BEARER_SCAN_INT_DEFAULT_MS 2000
    #endif
    
    /** Default scan window */
    #ifndef BEARER_SCAN_WINDOW_DEFAULT_MS
    #define BEARER_SCAN_WINDOW_DEFAULT_MS 2000
    #endif
    
    /** Default scanner buffer size */
    #ifndef SCANNER_BUFFER_SIZE
    #define SCANNER_BUFFER_SIZE 512
    #endif
    
    /** Buffer size for the Instaburst RX module. */
    #ifndef INSTABURST_RX_BUFFER_SIZE
    #define INSTABURST_RX_BUFFER_SIZE   (1024)
    #endif
    
    /** Instaburst feature flag. Normally enabled through CMake option. */
    #ifndef EXPERIMENTAL_INSTABURST_ENABLED
    #define EXPERIMENTAL_INSTABURST_ENABLED 0
    #endif
    /** @} end of MESH_CONFIG_BEARER */
    
    /**
     * @defgroup MESH_CONFIG_BEARER_EVENT Bearer event configuration
     * Compile time configuration of the bearer event module.
     * @{
     */
    
    /** Length of the asynchronous processing queue. */
    #ifndef BEARER_EVENT_FIFO_SIZE
    #define BEARER_EVENT_FIFO_SIZE 16
    #endif
    
    /** Number of flags available for allocation. */
    #ifndef BEARER_EVENT_FLAG_COUNT
    #define BEARER_EVENT_FLAG_COUNT     17
    #endif
    
    /**
     * Configure the bearer event module to use the SWI0 IRQ handler for processing the events.
     *
     * By default, the bearer event module uses the QDEC IRQ handler.
     * See @ref md_doc_user_guide_mesh_hw_resources for details.
     */
    #ifndef BEARER_EVENT_USE_SWI0
    #define BEARER_EVENT_USE_SWI0 0
    #endif
    

  • What is the reason for this RX low every 200ms? Is it a sleep mode? This should not happen, I need RX on high-level all the time wehn TX is low.

Related