I am working with the DTM sample on nRF52840 using nRF Connect SDK (Zephyr).
My goal is to run a continuous TX test automatically at boot (standalone), without requiring UART or external commands
Setup
- Board: nrf52840dk_nrf52840 (compatible based on direct_test_mode)
- Hardware: Custom Board (based in Circuit configuration no. 2 for CKAA WLCSP)
- SDK: nRF Connect SDK v2.6.1
- Measurement: LiteVNA connected to ANT output
- Programming: JTAG+SWD ARM Tool
What I observe
When the device boots without RTT connected:
- Then TX stops completely

When I connect RTT Viewer:
- Continuous TX starts immediately
- RF signal is stable and visible on LiteVNA

What I am doing in code
I run DTM (based on direct_test_mode example) directly from main():
dtm_tr_init(); dtm_setup_prepare(); dtm_setup_set_phy(DTM_PHY_2M); dtm_setup_set_modulation(DTM_MODULATION_STANDARD); dtm_setup_set_transmit_power(DTM_TX_POWER_REQUEST_MAX, 8, 0); dtm_test_transmit(0, 37, DTM_PKT_PRBS9); // Select Channel
No external commands are used.
My prj.conf:
#RTT console configuration CONFIG_USE_SEGGER_RTT=y CONFIG_RTT_CONSOLE=y CONFIG_UART_CONSOLE=n # CONFIG_PRINTK=n CONFIG_LOG=y # CONFIG_BT_DEBUG_MONITOR_RTT=y # CONFIG_LOG_MODE_IMMEDIATE=y # Send logs immediately to backend (no internal buffering) # CONFIG_LOG_MODE_DEFERRED=y # If Disabled: logs are not deferred/buffered CONFIG_LOG_BUFFER_SIZE=8192 # CONFIG_BT_DEBUG_MONITOR_RTT_BUFFER_SIZE=4096 CONFIG_SEGGER_RTT_BUFFER_SIZE_UP=4096 CONFIG_SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL=y # Configure assertions CONFIG_ASSERT=n CONFIG_ASSERT_NO_COND_INFO=y CONFIG_ASSERT_NO_MSG_INFO=y CONFIG_HW_STACK_PROTECTION=n CONFIG_CONSOLE=y CONFIG_UART_CONSOLE=n CONFIG_LOG=y CONFIG_LOG_PRINTK=y CONFIG_USE_SEGGER_RTT=y CONFIG_LOG_BACKEND_RTT=y CONFIG_LOG_MODE_DEFERRED=y CONFIG_LOG_BLOCK_IN_THREAD=n # Use necessary peripherals CONFIG_NRFX_TIMER0=y CONFIG_NRFX_TIMER1=y CONFIG_NRFX_TIMER2=y CONFIG_NRFX_TIMER3=y CONFIG_FEM_AL_LIB=y # Power management configuration CONFIG_PM_DEVICE=y CONFIG_NRFX_POWER=y CONFIG_POWEROFF=y CONFIG_DTM_POWER_CONTROL_AUTOMATIC=n CONFIG_DTM_RADIO_IRQ_PRIORITY=0 CONFIG_DTM_TIMER_IRQ_PRIORITY=0 CONFIG_DTM_FAST_RAMP_UP=n # CONFIG_DTM_TRANSPORT_TWOWIRE=y
Questions
- Is there any config in the DTM sample to keep TX running by default and stable?
- Could the issue be related to:
- timers not running properly config?
- missing clock configuration?
- scheduler or idle behavior?