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

Spectrum measurements with DTM firmware

Hi all, we are performing some transmitter spectrum measurements using your nRFGo (PCA10005) board and an Aaronia HF-60105 spectrum analyzer. The SMA connector of nRFGo has been connected to the spectrum analyzer through a 30 dB attenuator. On the PCA10005 board we have uploaded a custom DTM firmware that performs only the TRANSMITTER_TEST.

This is the code of the main file:

#include <stdint.h>
#include <stdbool.h>
#include "nrf51.h"
#include "nrf51_bitfields.h"
#include "ble_dtm.h"
#include "boards.h"
#include "nrf_gpio.h"

#define UICR		0x10001080

int main(void)
{
    uint32_t    dtm_error_code;
    uint32_t	dtm_tx_power = ((*(uint32_t *)UICR) & 0xFFFF0000) >> 16;
    uint32_t	dtm_freq     = ((*(uint32_t *)UICR) & 0x0000FFFF);

    // dtm init
    dtm_error_code = dtm_init();
    if (dtm_error_code != DTM_SUCCESS)
    {
        // If DTM cannot be correctly initialized, then we just return.
        return -1;
    }

    if (dtm_set_txpower(dtm_tx_power) != true)
    {
        // Error
        return -1;
    }

    // dtm transmitter test
    dtm_error_code = dtm_cmd(LE_TRANSMITTER_TEST, dtm_freq, 32, DTM_PKT_PRBS9);
    if (dtm_error_code != DTM_SUCCESS)
    {
        // If DTM cannot be correctly initialized, then we just return.
        return -1;
    }

    for (;;)
    {
        // Will return every timeout, 625 us.
        dtm_wait();
    }
}

Using this firmware the physical channel and the tx power are read from the UICR register (that we write during flashing procedure).

We have found some strange spurs at about TX frequency + 430 MHz (see attached sweep image). This seems not to be the local oscillator which is about 330 Mhz above RX frequency. The spur level is about -23 dBm, much higher than the expected LO leakage.

Can someone explain this strange behavior?

image description

Related