Radio Test¶
The Radio Test sample demonstrates how to configure the radio in a specific mode and then test its performance. The sample provides a set of predefined commands that allow you to configure the radio in three modes:
Constant RX or TX carrier
Modulated TX carrier
RX or TX sweep
Overview¶
You can run the tests by connecting to the board through the serial port and sending shell commands. Zephyr’s Shell module is used to handle the commands. At any time during the tests, you can dynamically set the radio parameters, such as output power, bit rate, and channel. In sweep mode, you can set the time for which the radio scans each channel from 1 millisecond to 99 milliseconds, in steps of 1 millisecond. The sample also allows you to send a data pattern to another board.
The sample starts with enabling the high frequency crystal oscillator and configuring the shell. You can then start running commands to set up and control the radio. See User interface for a list of available commands.
Note
For the IEEE 802.15.4 mode, the start channel and the end channel must be within the channel range of 11 to 26.
Use the start_channel
and end_channel
commands to control this setting.
Requirements¶
The sample supports the following development kits:
Hardware platforms |
PCA |
Board name |
Build target |
---|---|---|---|
PCA10095 |
|
||
PCA10056 |
|
||
PCA10040 |
|
You can use any one of the development kits listed above.
Note
On nRF5340 DK, the sample is designed to run on the network core.
The sample also requires one of the following testing devices:
Another board with the same sample. See Testing with another board.
Another board connected to a PC with RSSI Viewer application (available in the nRF Connect for Desktop). See Testing with RSSI Viewer.
Note
The radio test can be also performed using a spectrum analyzer. This method of testing is not covered by this documentation.
User interface¶
Command |
Argument |
Description |
---|---|---|
cancel |
Cancel the sweep or the carrier. |
|
data_rate |
<sub_cmd> |
Set the data rate. |
end_channel |
<channel> |
End the channel for the sweep. |
output_power |
<sub_cmd> |
Output power set. |
parameters_print |
Print current delay, channel, and other parameters. |
|
print_rx |
Print the received RX payload. |
|
start_channel |
<channel> |
Start the channel for the sweep or the channel for the constant carrier. |
start_duty_cycle_modulated_tx |
<duty_cycle> |
Duty cycle in percent (two decimal digits, between 01 and 99). |
start_rx |
Start RX. |
|
start_rx_sweep |
Start the RX sweep. |
|
start_tx_carrier |
Start the TX carrier. |
|
start_tx_modulated_carrier |
<packet_num> |
Start the modulated TX carrier (continuous TX mode is used if no argument is provided). |
start_tx_sweep |
Start the TX sweep. |
|
time_on_channel |
<time> |
Time on each channel (between 1 ms and 99 ms). |
toggle_dcdc_state |
<state> |
Toggle DC/DC converter state. |
transmit_pattern |
<sub_cmd> |
Set transmission pattern. |
Building and running¶
This sample can be found under samples/peripheral/radio_test
in the nRF Connect SDK folder structure.
See Building and programming a sample application for information about how to build and program the application.
Note
On the nRF5340 DK board (PCA10095), the Radio Test sample is a standalone network sample that does not require any counterpart application sample. However, you must still program the application core to boot up the network core. You can use any sample for this, for example nRF5340: Empty firmware for application core.
Testing¶
After programming the sample to your board, you can test it in one of two ways.
Note
For the nRF5340 DK board (PCA10095), see Getting logging output for information about the COM terminals on which the logging output is available.
Testing with another board¶
Connect both boards to the computer using a USB cable. The boards are assigned a COM port (Windows) or ttyACM device (Linux), which is visible in the Device Manager.
Connect to both kits with a terminal emulator (for example, PuTTY). See How to connect with PuTTY for the required settings.
Run the following commands on one of the boards: #. Set the data rate with the
data_rate
command toble_2Mbit
. #. Set the transmission pattern with thetransmit_pattern
command topattern_11110000
. #. Set the radio channel with thestart_channel
command to 40.Repeat all steps for the second board.
On both boards, run the
parameters_print
command to confirm that the radio configuration is the same on both boards.Set one board in the Modulated TX Carrier mode using the
start_tx_modulated_carrier
command.Set the other board in the RX Carrier mode using the
start_rx
command.Print the received data with the
print_rx
command and confirm that they match the transmission pattern (0xF0).
Testing with RSSI Viewer¶
Connect the board to the computer using a USB cable. The board is assigned a COM port (Windows) or ttyACM device (Linux), which is visible in the Device Manager.
Connect to the kit with a terminal emulator (for example, PuTTY). See How to connect with PuTTY for the required settings.
Set the start channel with the
start_channel
command to 20.Set the end channel with the
end_channel
command to 60.Set the time on channel with the
time_on_channel
command to 50ms.Set the board in the TX sweep mode using the
start_tx_sweep
command.Start the RSSI Viewer application and select the board to communicate with.
On the application chart, observe the TX sweep in the form of a wave that starts at 2420 MHz frequency and ends with 2480MHz.
Dependencies¶
This sample uses the following nrfx dependencies:
nrfx/drivers/include/nrfx_timer.h
nrfx/hal/nrf_nvmc.h
nrfx/hal/nrf_power.h
nrfx/hal/nrf_radio.h
nrfx/hal/nrf_rng.h
In addition, it uses the following Zephyr libraries:
-
drivers/clock_control.h
-
include/init.h
-
include/shell/shell.h