radio exemple for FCC

Hello, 

I am making a Firmware for the FCC certification, I must emit at 3 different frequency, 2404MHz (ch37), 2440MHz (ch17) and 2480MHz (ch39) on a nrf52832.

I unfortunately don’t have a spectrum analyzer so I’m trying to use the Direct Test Mode on nRF Connect Desktop

I set up the receiver like this: 

and for the transmitter i used the radio_test example like this: 

and then started the tx: 

But on the receiveng end of the Direct Test Mode i have nothing.

But if I use the Direct Test Mode on a second demo board with this setup:

The receiving end actually sees the carriers on the 17th channel.

What is missing for the setup so the whole system works ?

it does not work it i use start_tx_carrier either:

The goal if to have a code like this:

void set_test_config()
{
	  m_test_config.type                          = MODULATED_TX;
    m_test_config.mode                          = NRF_RADIO_MODE_BLE_1MBIT;
    m_test_config.params.unmodulated_tx.txpower = NRF_RADIO_TXPOWER_POS4DBM;
    m_test_config.params.unmodulated_tx.channel = 17;
		m_test_config.params.modulated_tx.pattern		= TRANSMIT_PATTERN_11110000;
}

 and init the test like this:

int main(void)
{
    uint32_t err_code;

    log_init();

    err_code = nrf_drv_clock_init();
    APP_ERROR_CHECK(err_code);
    nrf_drv_clock_lfclk_request(NULL);

    err_code = app_timer_init();
    APP_ERROR_CHECK(err_code);

    clock_init();
	set_test_config();


    cli_init();
    cli_start();


    NRF_LOG_RAW_INFO("Radio test example started.\r\n");
		
		radio_test_init(&m_test_config);
		radio_test_start(&m_test_config);

    while (true)
    {
        UNUSED_RETURN_VALUE(NRF_LOG_PROCESS());
        nrf_cli_process(&m_cli_uart);
    }
}

Thank you for your help

Parents Reply Children
  • Hello, 

    i tried with this configuration

    The receiver still doesn't catch anything, do you have an idea of what I missed ?

  • Hi,

    The Direct Test mode(DTM) in nRF Connect for desktop is made to be a stand in for a Bluetooth tester, this requires the packets transmitted to contain some specific data. In the radio test example this part of the packet is randomized. This is will cause the direct test mode application to not register the transmitted packages.

    You can try to use the RSSI viewer application in nRF connect for desktop to verify that your test firmware is transmitting at the correct frequencies, but it won't be useful for much other than this.

     

    Best regards,

    Bendik

  • Hello,

    it indeed is enoug for testing, i can see the channel responding to the packets.

    I just have an issue with the code, i changed the main a little bit to get rid of the cli (our device won't be plugged to the computer) but i can't manage to make it work. Here is the main code : 

    uint32_t err_code;
    
        log_init();
    
        err_code = nrf_drv_clock_init();
        APP_ERROR_CHECK(err_code);
        nrf_drv_clock_lfclk_request(NULL);
    
        err_code = app_timer_init();
        APP_ERROR_CHECK(err_code);
    
        clock_init();
    	
    		radio_test_config_t  m_radio_test;
    
    
        NRF_LOG_INFO("Radio test example started.\r\n");
    		
    		radio_test_init(&m_radio_test);
    		
    		memset(&m_radio_test, 0, sizeof(m_radio_test));
    	  m_radio_test.type                          = MODULATED_TX;
        m_radio_test.mode                          = NRF_RADIO_MODE_BLE_1MBIT;
        m_radio_test.params.unmodulated_tx.txpower = NRF_RADIO_TXPOWER_POS4DBM;
        m_radio_test.params.unmodulated_tx.channel = 40;
    		m_radio_test.params.modulated_tx.pattern		= TRANSMIT_PATTERN_11110000;
    		
    		radio_test_cancel();
    		radio_test_start(&m_radio_test);
    
        while (true)
        {
            NRF_LOG_FLUSH();
        }

  • Hi,

    Since the test type is modulated TX  I was able to get your code working on a nRF52DK by changing:

    m_radio_test.params.unmodulated_tx.txpower = NRF_RADIO_TXPOWER_POS4DBM;
    m_radio_test.params.unmodulated_tx.channel = 40;

    to:

    m_radio_test.params.modulated_tx.txpower = NRF_RADIO_TXPOWER_POS4DBM;
    m_radio_test.params.modulated_tx.channel = 40;

    Best regards,

    Bendik

  • Yes that was my error, thank you so mush for your help

Related