Usage

You can use the Distance Measurement library as follows:

  1. Call the nrf_dm_init() function. The library expects as arguments the PPI channel numbers, the antenna configuration, and a timer instance. The NRF_DM_DEFAULT_SINGLE_ANTENNA_CONFIG macro provides a default antenna configuration.

    Note

    Only a single antenna is currently supported.

  2. Configure the execution of the measurements using the nrf_dm_configure() function. Use the structure in nrf_dm_config_t to configure the library.

  3. To perform a measurement, call the nrf_dm_proc_execute() function passing the corresponding timeout as an argument. This call should be executed at the same time on both the reflector and the initiator, but the reflector must start first.

    You can meet this synchronization requirement by starting the reflector earlier and increasing the timeout value, at the cost of higher power consumption.

  4. Load the raw data using the nrf_dm_populate_report() function.

  5. Call the nrf_dm_calc() function or the nrf_dm_high_precision_calc() function to perform the calculation. On the nRF53 Series, do this on the application core for a reduced execution time. On the network core of the nRF53 Series, the calculations are performed without an FPU which results in a much higher execution time.

nRF53 Series

The Distance Measurement library comes with two precompiled libraries for the nRF53 Series.

  • The libnrf_dm.a library implements the interface specified in nrf_dm.h.

  • The libnrf_dm_calc.a library partially implements the interface specified in nrf_dm.h.

    It only includes an implementation for the functions nrf_dm_calc() and nrf_dm_high_precision_calc().

The libnrf_dm_calc.a library allows computing of the distance estimates on the application core. On the network core, the calculation is done without an FPU, which results in a much higher execution time.

The libraries can be used as follows:

  1. Perform the measurement on the network core as explained above.

  2. On the network core, load the raw data using the nrf_dm_populate_report() function.

  3. Transfer the populated report from the network core to the application core.

  4. On the application core, call the nrf_dm_calc() function or the nrf_dm_high_precision_calc() function to perform the calculation.