Hi team,
I am working with the nRF5340 PDK v0.8.0 and I am trying to request the additional voltage for the VREGRADIO to support the additional 3 dB TX power on the RADIO. I am using the radio_test example in the SDK (nrf\samples\peripheral\radio_test) for this. To facilitate this, the only changes I made were to the main.c file as seen below. Is this the correct way to request the higher voltage? When debugging I am not seeing the bit value in the register change but I am printing out the correct value of the register (see screenshot below).
Unfortunately, I do not have the proper RF equipment to measure the extra 3 dB change in output power. I only have the RSSI Viewer with the nRF52840 Dongle which doesn't look to be changing from having this to not having this.
Added:
#include <nrfx/hal/nrf_vreqctrl.h>
nrf_vreqctrl_radio_high_voltage_set(NRF_VREQCTRL_NS, true); while(!nrf_vreqctrl_radio_high_voltage_check(NRF_VREQCTRL_NS));
Also some printk statements. Here is my final main.c file:
/* * Copyright (c) 2020 Nordic Semiconductor ASA * * SPDX-License-Identifier: LicenseRef-BSD-5-Clause-Nordic */ #include <sys/printk.h> #include <drivers/clock_control.h> #include <drivers/clock_control/nrf_clock_control.h> #include <nrfx/hal/nrf_vreqctrl.h> static void clock_init(void) { int err; struct device *clock; enum clock_control_status clock_status; clock = device_get_binding(DT_INST_0_NORDIC_NRF_CLOCK_LABEL); if (!clock) { printk("Unable to find clock device binding\n"); return; } err = clock_control_on(clock, CLOCK_CONTROL_NRF_SUBSYS_HF); if (err) { printk("Unable to turn on the clock: %d", err); } do { clock_status = clock_control_get_status(clock, CLOCK_CONTROL_NRF_SUBSYS_HF); } while (clock_status != CLOCK_CONTROL_STATUS_ON); printk("Clock has started\n"); } void main(void) { printk("Starting Radio Test example\n"); clock_init(); nrf_vreqctrl_radio_high_voltage_set(NRF_VREQCTRL_NS, true); while(!nrf_vreqctrl_radio_high_voltage_check(NRF_VREQCTRL_NS)); // NRF_VREQCTRL->VREGRADIO.VREQH = 1; // while (!VREGRADIO.VREQHREADY); printk("Register value is %d\n", NRF_VREQCTRL->VREGRADIO.VREQHREADY); printk("RADIO is ready to operate on high voltage\n"); }
Regards,
Akash Patel