Fixed frequency for factory production test

Hi,

   We had a product developed with nRF52810( SDK15.3.0 ). Now we want to test RF frequency offset by signal carrier detection.We want to enter factory test mode to transmit a continuous fixed frequency 2402Mhz, it can run normal fuction after exit factory test mode . Can we reffer to radio_test excample to transmit a continuous fixed frequency 2402Mhz?If the  radio_test excample is ok,Can we use radio_unmodulated_tx_carrier() fucntion to  transmit a continuous fixed frequency 2402Mhz?

Parents Reply Children
  • Hi,

     

    Yes, you can copy in the radio_test.c/.h files into your project, or just run radio_test directly.

    Please note that the HFCLK must be started prior to calling the function.

     

    Kind regards,

    Håkon

  • Hi Håkon

       I'm sorry for my late reply. Because I wait for the spectrum analyzer. 

    either radio_modulated_tx_carrier or radio_unmodulated_tx_carrier, I had tested on spectrum analyzer, but the spectrum analyzer show nothing.

    You mention "the HFCLK must be started prior to calling the function", I the call radio_modulated_tx_carrier after 50ms by calling app_timer_start, Is it ok?

    How can I make sure the HFCLK  be started prior?

  • Hi,

     

    Have you verified that the stock radio_test example works on your end?

    james said:
    You mention "the HFCLK must be started prior to calling the function", I the call radio_modulated_tx_carrier after 50ms by calling app_timer_start, Is it ok?

    App_timer uses the LFCLK, not the HFCLK. Is the softdevice enabled when you're calling the radio_modulated_tx_carrier() function? If yes, then the SoftDevice must be disabled first.

     

    Kind regards,

    Håkon

  • We developed it with nRF52810 ,so the stock radio_test example can't work on our end.

    The radio_unmodulated_tx_carrier can work after  the softdevice had been disabled and the HFCLK had been enabled.

    But the radio_modulated_tx_carrier() still can't work.What do I miss?

  • Hi,

     

    Are you calling the init function, as done in the original radio_test sample?

    This also starts the RNG peripheral, required for generating a random address and payload:

    /** @brief Function for configuring all peripherals used in this example.
     */
    static void init(void)
    {
        NRF_RNG->TASKS_START = 1;
    
    #ifndef NRF52810_XXAA
        NRF_NVMC->ICACHECNF  = NVMC_ICACHECNF_CACHEEN_Enabled << NVMC_ICACHECNF_CACHEEN_Pos;
    #endif // NRF52810_XXAA 
    
        // Start 64 MHz crystal oscillator.
        NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
        NRF_CLOCK->TASKS_HFCLKSTART    = 1;
    
        // Wait for the external oscillator to start up.
        while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0)
        {
            // Do nothing.
        }
    }

     

    Kind regards,

    Håkon

Related