Giter VIP home page Giter VIP logo

dwm1001-examples's Introduction

dwm1001-keil-examples

Note that the examples below consist in very basic application using the UWB features of the DWM1001C. These examples are not intended to be used in a commercial application and may not comply with regulation requirements.

Advanced firmware for DWM1001C that would comply with regulations can be found on https://www.decawave.com/product/dwm1001-module/

Overview

This project contains C simple examples for DWM1001 hardware and its derivatives, such as the DWM1001-DEV board.

The DWM1001 module is a Ultra Wideband (UWB) and Bluetooth hardware based on DecaWave's DW1000 IC and Nordic Semiconductor nrF52832 SoC. It allows to build a scalable Two-Way-Ranging (TWR) RTLS systems with up to thousands of tags.

The DWM1001-DEV is a development board for the DWM1001 module. It contains an integrated Jlink to facilitate development and debbuging. For more information about DWM1001, please visit www.decawave.com.

The C simple examples allow user to discover the key functionalities offered by the DWM1001 and UWB. These examples are customized for DWM1001-DEV, and some modifications will be necessary to port them to other DWM1001 based hardware (in particular LED and button interface)

The project is built as follow :

dwm1001-keil-examples/
├── boards            // DWM1001-DEV board specific definitions
├── deca_driver       // DW1000 API software package 2.04 
├── examples          // C simple examples 
│   ├── ss_twr_init   // Single Sided Two Way Ranging Initiator example
│   ├── ss_twr_resp   // Single Sided Two Way Ranging Responder example
│   └── twi_accel     // LIS2DH12 accelerometer example with Two Wire interface 
├── nRF5_SDK_14.2.0   // Nordic Semiconductor SDK 14.2 for nrF52832
└── README.md

For more information about nrF52832 and nrF SDK, please visit http://infocenter.nordicsemi.com/

Supported IDE

The examples are ready to use with the following IDE :

  • Segger Embedded Studio (SES)
  • Keil KEIL µVision

Segger Embedded Studio

Each example contains a emproject project file for SES. The examples compile and load cleanly to the DWM1001.
The project was created with the SES version V3.34a.

SES has a free license for nrF52832 development. Consequently, this IDE can be used without any limitation for DWM1001 development.

For more information regarding Segger Embedded Studio, please visit https://www.segger.com/products/development-tools/embedded-studio/

For more information about free license for nrF52832, please read https://www.nordicsemi.com/News/News-releases/Product-Related-News/Nordic-Semiconductor-adds-Embedded-Studio-IDE-support-for-nRF51-and-nRF52-SoC-development

SES : Additional Package

When using SES IDE, you will need to install the following package :

Package
CMSIS 5 CMSIS-CORE Support Package (version 5.02)
CMSIS-CORE Support Package (version 4.05)
Nordic Semiconductor nRF CPU Support Package (version 1.06)

They can be install from SES itself, through the package manager in the tools menu.

KEIL µVision IDE

Each example contains a µVision5 project file for Keil µVision IDE. The examples compile and load cleanly to the DWM1001. The project was created with the KEIL uVision version V5.24.2.0.

Keil µVision has a free license for project up to 32KB. For more information regarding Keil µVision, please visit http://www2.keil.com/mdk5/uvision/

µVision Error: Flash Download failed - "Cortex-M4"

This error can be observed if there is a memory conflict between the binary to load and the current firmware on the target hardware. This issue can be easily fixed by fully erasing the target device 's flash memory. Keil µVision cannot perform a full erase and the following free tool can be used :

  • J-flash lite
  • nrfjprog command line script

For more information about the issue, please see :

https://devzone.nordicsemi.com/f/nordic-q-a/18278/error-flash-download-failed---cortex---m4-while-flashing-softdevice-from-keil-uvision-5

Example Details

The SS-TWR scheme can be implemented using two DWM1001 modules, the first one programmed as an initiator and the second one as a responder.

Single Sided Two Way Ranging -- Initiator

This example contains the source code for the initiator. The initiator will send a frame, wait for the response from the receiver, calculate the distance and output it on the UART (can be observed on a serial terminal)

dwm1001-keil-examples/examples/ss_twr_init/
├── config                    // Contains sdk_config.h file for nrF SDK 14.2 customization
├── main.c                    // Initialization and main program
├── ss_init_main.c            // Single sided initiator core program
├── UART                      // Uart 
├── SES
│   └── ss_twr_init.emProject // Segger Embedded Studio project
└── Keil uvision
     └── ss_twr_init.uvprojx  // Keil uvision project

The application function is detailed in the main.c and the ss_init_main.c files.

Calibration may be necessary in order to have an accurate measurement. It can be done by adjusting the antenna delay which is hardware dependent.

Single Sided Two Way Ranging -- Responder

This example contains the source code for the responder. The receiver will receive a frame from the initiator and send the corresponding answer.

dwm1001-keil-examples/examples/ss_twr_resp/
├── config                    // Contains sdk_config.h file for nrF SDK 14.2 customization
├── main.c                    // Initialization and main program
├── ss_resp_main.c            // Single sided responder core program
├── SES
│   └── ss_twr_resp.emProject // Segger Embedded Studio project
└── Keil uvision
     └── ss_twr_resp.uvprojx  // Keil uvision project

The application function is detailed in the main.c and the ss_resp_main.c files.

Calibration may be necessary in order to have an accurate measurement. It can be done by adjusting the antenna delay which is hardware dependent.

Two Wire Interface Accelerometer

This example implements a TWI between the LIS2DH12 and the nrF52832. The blue led will be on when a motion is detected by the LIS2DH12. It also reports the accelerometer state on the UART.

dwm1001-keil-examples/examples/twi_accel/
├── config                    // Contains sdk_config.h file for nrF SDK 14.2 customization
├── LIS2DH12                  // LIS2DH12 (accelerometer) low level driver and api
├── main.c                    // Initialization and main program
├── TWI                       // TWI
├── UART                      // Uart
├── SES
│   └── twi_accel.emProject // Segger Embedded Studio project
└── Keil uvision
     └── twi_accel.uvprojx  // Keil uvision project

The application function is detailed in the main.c file.

dwm1001-examples's People

Contributors

ybdecawave avatar yves-bernard avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dwm1001-examples's Issues

Error: unknown type name '__printf_tag_ptr'

Hi there,

I want to build ss_twr_init, but I kept getting an error. I have followed the changes as shown in the pull requests, but I still kept getting the same error.
Error: unknown type name '__printf_tag_ptr'

Do you have any suggestions on how can I fix this?

Thank you

Implementing the ds_twr init and resp DW1000 api examples

Hello there.

I was wondering if I could get help regarding the implementation of the ds_twr_init and ds_twr_resp accompanying the DW1000 API. I noticed that the ss_twr examples in this project are the same as in the DW1000 API corresponding ss_twr examples. So I replaced the ss with the ds code in the examples, successfully added the UART support for the responder as well since in the ds example the responder is the one calculating the distance. Now, the initiator seems to be working fine, I mean it transmits, but the responder's receiver times out without getting any poll messages and so it doesn't continue in to reading data from its buffer or sending a reply. I did my best to put any delay constants the same as in the DW1000 API examples.

I'm attaching the code files in case you'd like to take a closer look.
ds_twr_examples.zip

Thank you very much in advance.

How to using Bluetooth to control ranging using this example

Hi,
I am now trying to use Bluetooth to control dwm1001 to measure distance. I find out this example is based on the nRF5_SDK_14.2.0 example ble_app_hrs_freertos. Is there any way to use the battery service in ble_app_hrs_freertos together with this dwm1001-example?

I tried to merge both examples myself, but I always get an error code 0xDEADBEEF. Could you please give me some hint how to solve this?

No Makefile provided

Currently KEIL and SES projects are provided. A tool-agnostic build would be nice.
Usually for nRF5x projects Nordic provides a Makefile to this end.

Potential GPL-2.0 licence violations

The source file https://github.com/Decawave/dwm1001-examples/blob/master/deca_driver/port/port_platform.h contains the line

Taken from the Linux Kernel

Indeed, that section of port_platform.h appears to be a copy of https://github.com/torvalds/linux/blob/6f0d349d922ba44e4348a17a78ea51b7135965b1/include/linux/circ_buf.h

I believe that material, being part of the Linux kernel, is licensed under the GPL-2.0. That means any binary containing this material must be placed under the same licence. This is obviously deeply problematic for anyone producing a commercial binary using this driver.

Do you have a non-GPL licensed version of this file available?

Unable to use the NRF_LOG_INFO()

Hi, I am using DWM1001 to try to run the example code. Once I enable NRF_LOG and NRF_LOG_BACKEND_UART in sdk_config.h, The program cannot run properly. After I disabled NRF_LOG and NRF_LOG_BACKEND_UART, everything goes all right.
Is this the problem of the module? I have tried also the examples in the Nordic nRF5_SDK_14.2.0. The problem is the same, I cannot read anything out from the UART, because Nordic examples are using NRF_LOG_INFO() to implement the UART.

Sending data before polling

Hi,

I am trying a simple multi sided tag-anchor data exchange with distance. Problem is anchors dont know IDs of the tags. So tags need to broadcast their ID before responsing anchor’s polling for distance measurement. And anchors need to check if there is any coming message so they can save the tag’s ID and start polling to those IDs. I dont know why but anchors can get response to their polling but they can not get the other message.

void distance_uwb_run(target_device_info *target)
{
  uint16_t counter = 0;

  /* Activate reception immediately. */
  dwt_rxenable(DWT_START_RX_IMMEDIATE);

  do
  {
    counter++;
    /* Wait for reception, timeout or error interrupt flag*/
    while (!(to_int_flag|| er_int_flag));
    if(counter == 10)
    {
      break;
    }
  }while (!rx_int_flag);

  if(rx_int_flag)
  {
    uint32 frame_len;

    /* A frame has been received, read it into the local buffer. */
    frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFLEN_MASK;
    if (frame_len <= RX_BUFFER_LEN)
    {
      dwt_readrxdata(rx_hsr_msg, frame_len, 0);
    }
    if (data_header_check(rx_hsr_msg, HAND_SHAKE_CODE) == true)
    {	
      uint8_t temp_id[ID_LENGTH + 1] = {0};

      /*Reseting receive interrupt flag*/
      rx_int_flag = 0;

      memcpy(temp_id, rx_hsr_msg, ID_LENGTH);
      if(is_id_hand_shaked(temp_id) == false)
      {
        uint8_t hs_device_count = 0;
        int ret;

        /* Hand Shaked Device Count */
        hs_device_count = get_config(HAND_SHAKED_DEVICE_CONF);

        /* Hand Shaked Device ID */
        memcpy(tag[hs_device_count].id, temp_id, ID_LENGTH);
        
        printf("ID : %s, count: %d\r\n", temp_id, hs_device_count);
        /* Enter Time */
        //tag[hs_device_count].entry_time = get_time();

        /* Hand Shaked Device Count + 1 */
        hs_device_count++;
        set_config(HAND_SHAKED_DEVICE_CONF, hs_device_count);
      }
    }
  }
  if (to_int_flag || er_int_flag)
  {
    dwt_rxreset();
    /*Reseting interrupt flag*/
    to_int_flag = 0 ;
    er_int_flag = 0 ;
  }

  //static uint8_t temp_buf[12] = {0x41,0x88,0,0xca,0xde,'W','A','V','E',0xe0,0,0};

  /* Making ready Tx Buffer for distance polling */
  make_frame(DISTANCE_CODE, target->id, tx_dist_msg);
  
  dwt_writetxdata(sizeof(tx_dist_msg), tx_dist_msg, 0); /* Zero offset in TX buffer. */
  dwt_writetxfctrl(sizeof(tx_dist_msg), 0, 1); /* Zero offset in TX buffer, ranging. */
  dwt_starttx(DWT_START_TX_IMMEDIATE | DWT_RESPONSE_EXPECTED);

  counter = 0;
  do
  {
    counter++;
    if(counter >= 1000)
    {
      break;
    }
  }while (!(tx_ds_int_flag));

  if (tx_ds_int_flag)
  {
    /*Reseting tx interrupt flag*/
    tx_ds_int_flag = 0 ;
  }

  /* Wait for reception, timeout or error interrupt flag*/  
  while (!(rx_int_flag || to_int_flag|| er_int_flag));

  if (rx_int_flag)
  {		
    uint32 frame_len;
    uint8_t *device_id;

    /* A frame has been received, read it into the local buffer. */
    frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFLEN_MASK;
    if (frame_len <= RX_BUFFER_LEN)
    {
      dwt_readrxdata(rx_dist_msg, frame_len, 0);
      device_id = get_config_addr(ID_CONF);
    
      /* A frame has been received, read it into the local buffer. */
      frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFLEN_MASK;
      if (frame_len <= RX_BUFFER_LEN)
      {
        dwt_readrxdata(rx_dist_msg, frame_len, 0);
      }
      /* As the sequence number field of the frame is not relevant, it is cleared to simplify the validation of the frame. */
      if(data_header_check(rx_dist_msg, DISTANCE_CODE) == true)
      {	
        uint32 poll_tx_ts, resp_rx_ts, poll_rx_ts, resp_tx_ts;
        int32 rtd_init, rtd_resp;
        float clockOffsetRatio;
        uint8_t temp_id[ID_LENGTH + 1] = {0};

        /* Retrieve poll transmission and response reception timestamps. See NOTE 4 below. */
        poll_tx_ts = dwt_readtxtimestamplo32();
        resp_rx_ts = dwt_readrxtimestamplo32();

        /* Read carrier integrator value and calculate clock offset ratio. See NOTE 6 below. */
        clockOffsetRatio = dwt_readcarrierintegrator() * (FREQ_OFFSET_MULTIPLIER * HERTZ_TO_PPM_MULTIPLIER_CHAN_5 / 1.0e6) ;

        /* Get timestamps embedded in response message. */
        resp_msg_get_ts(&rx_dist_msg[RESP_MSG_POLL_RX_TS_IDX], &poll_rx_ts);
        resp_msg_get_ts(&rx_dist_msg[RESP_MSG_RESP_TX_TS_IDX], &resp_tx_ts);

        /* Compute time of flight and distance, using clock offset ratio to correct for differing local and remote clock rates */
        rtd_init = resp_rx_ts - poll_tx_ts;
        rtd_resp = resp_tx_ts - poll_rx_ts;

        tof = ((rtd_init - rtd_resp * (1.0f - clockOffsetRatio)) / 2.0f) * DWT_TIME_UNITS; // Specifying 1.0f and 2.0f are floats to clear warning 
        distance = tof * SPEED_OF_LIGHT;

        memcpy(temp_id, rx_dist_msg + ID_LENGTH, ID_LENGTH);
        printf("ID : %s, Distance : %f\r\n", temp_id, distance);
        target->distance = distance;

        /*Reseting receive interrupt flag*/
        rx_int_flag = 0;
      }
    }
  }
  if (to_int_flag || er_int_flag)
  {
    dwt_rxreset();
    /*Reseting interrupt flag*/
    to_int_flag = 0 ;
    er_int_flag = 0 ;
  }	
  if((timeot_counter % 5) == 0)
  {
    /* Reset RX to properly reinitialise LDE operation. */
    dwt_rxreset();
  }
  /* Execute a delay between ranging exchanges. */
  // deca_sleep(RNG_DELAY_MS);
}`

tag

`void distance_uwb_response(target_device_info *target)
{
  static uint8_t counter = 0;

  counter++;

  if((counter % 1) == 0) 
  {
/* Making ready Tx Buffer for hand shake polling */
make_frame(HAND_SHAKE_CODE, NULL, tx_hs_msg);

dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_TXFRS);
dwt_writetxdata(sizeof(tx_hs_msg), tx_hs_msg, 0); /* Zero offset in TX buffer. */
dwt_writetxfctrl(sizeof(tx_hs_msg), 0, 1); /* Zero offset in TX buffer, ranging. */

/* Start transmission, indicating that a response is expected so that reception is enabled automatically after the frame is sent and the delay
* set by dwt_setrxaftertxdelay() has elapsed. */
dwt_starttx(DWT_START_TX_IMMEDIATE);

if (tx_int_flag)
{
  /*Reseting tx interrupt flag*/
  tx_int_flag = 0 ;
}
  }

  /* Activate reception immediately. */
  dwt_rxenable(DWT_START_RX_IMMEDIATE);

  /* Wait for reception, timeout or error interrupt flag*/
  while (!(rx_int_flag || to_int_flag|| er_int_flag));

  if (rx_int_flag)
  {
uint32 frame_len;

/* Clear good RX frame event in the DW1000 status register. */
dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG);

/* A frame has been received, read it into the local buffer. */
frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFL_MASK_1023;
if (frame_len <= RX_BUFFER_LEN)
{
  dwt_readrxdata(rx_dist_msg, frame_len, 0);
}
if (data_header_check(rx_dist_msg, DISTANCE_CODE) == true)
{
  uint32 resp_tx_time;
  int ret;

  /* Making ready Tx Buffer for command send */
  make_frame(DISTANCE_CODE, target->id, tx_dist_msg);

  /* Retrieve poll reception timestamp. */
  poll_rx_ts = get_rx_timestamp_u64();

  /* Compute final message transmission time. See NOTE 7 below. */
  resp_tx_time = (poll_rx_ts + (POLL_RX_TO_RESP_TX_DLY_UUS * UUS_TO_DWT_TIME)) >> 8;
  dwt_setdelayedtrxtime(resp_tx_time);

  /* Response TX timestamp is the transmission time we programmed plus the antenna delay. */
  resp_tx_ts = (((uint64)(resp_tx_time & 0xFFFFFFFEUL)) << 8) + TX_ANT_DLY;

  /* Write all timestamps in the final message. See NOTE 8 below. */
  resp_msg_set_ts(&tx_dist_msg[RESP_MSG_POLL_RX_TS_IDX], poll_rx_ts);
  resp_msg_set_ts(&tx_dist_msg[RESP_MSG_RESP_TX_TS_IDX], resp_tx_ts);

  /* Write and send the response message */
  dwt_writetxdata(sizeof(tx_dist_msg), tx_dist_msg, 0); /* Zero offset in TX buffer. See Note 5 below.*/
  dwt_writetxfctrl(sizeof(tx_dist_msg), 0, 1); /* Zero offset in TX buffer, ranging. */
  ret = dwt_starttx(DWT_START_TX_DELAYED);

  //ret = dwt_starttx(DWT_START_TX_IMMEDIATE);

  /* If dwt_starttx() returns an error, abandon this ranging exchange and proceed to the next one. */
  if (ret == DWT_SUCCESS)
  {
    /*Waiting for transmission success flag*/
    while (!(tx_int_flag))
    {};

    if (tx_int_flag)
    {
      /*Reseting tx interrupt flag*/
      tx_int_flag = 0 ;
    }
  }
  else
  {
    dwt_rxreset();
  }
  /*Reseting receive interrupt flag*/
  rx_int_flag = 0; 
}
  }
  if (to_int_flag || er_int_flag)
  {
/* Reset RX to properly reinitialise LDE operation. */
dwt_rxreset();

/*Reseting interrupt flag*/
to_int_flag = 0 ;
er_int_flag = 0 ;
  }
}`

deep sleep mode

Hi, we used dwm1001 for tag, but i can not reduce the consumption.
Currently, my consumption is up to 5ma after i set mcu and dw1000 to sleep.

Any one can supply a example for deep sleep?

Linker error: Undefined reference to `stdout`

The code compiles but i am getting some linker error. The log is bellow:

2> Generating linker script 'ss_twr_init.ld'�[0m
2> Linking ss_twr_init.elf�[0m
2> /usr/share/segger_embedded_studio_for_arm_6.22a/gcc/arm-none-eabi/bin/ld: /usr/share/segger_embedded_studio_for_arm_6.22a/lib/libc_v7em_fpv4_sp_d16_hard_t_le_eabi_balanced.a(fileops.o): in function `putchar':�[0m
2> fileops.c:(.text.libc.putchar+0x0): undefined reference to `stdout'�[0m
2> /usr/share/segger_embedded_studio_for_arm_6.22a/gcc/arm-none-eabi/bin/ld: fileops.c:(.text.libc.putchar+0x4): undefined reference to `stdout'�[0m
2> /usr/share/segger_embedded_studio_for_arm_6.22a/gcc/arm-none-eabi/bin/ld: /usr/share/segger_embedded_studio_for_arm_6.22a/lib/libc_v7em_fpv4_sp_d16_hard_t_le_eabi_balanced.a(fileops.o): in function `puts':�[0m
2> fileops.c:(.text.libc.puts+0x2): undefined reference to `stdout'�[0m
2> /usr/share/segger_embedded_studio_for_arm_6.22a/gcc/arm-none-eabi/bin/ld: fileops.c:(.text.libc.puts+0x6): undefined reference to `stdout'�[0m
2> /usr/share/segger_embedded_studio_for_arm_6.22a/gcc/arm-none-eabi/bin/ld: fileops.c:(.text.libc.puts+0x18): undefined reference to `__SEGGER_RTL_X_file_write'�[0m
2> /usr/share/segger_embedded_studio_for_arm_6.22a/gcc/arm-none-eabi/bin/ld: /usr/share/segger_embedded_studio_for_arm_6.22a/lib/libc_v7em_fpv4_sp_d16_hard_t_le_eabi_balanced.a(fileops.o): in function `fwrite':�[0m
2> fileops.c:(.text.libc.fwrite+0xc): undefined reference to `__SEGGER_RTL_X_file_stat'�[0m
2> /usr/share/segger_embedded_studio_for_arm_6.22a/gcc/arm-none-eabi/bin/ld: fileops.c:(.text.libc.fwrite+0x24): undefined reference to `__SEGGER_RTL_X_file_write'�[0m
2> /usr/share/segger_embedded_studio_for_arm_6.22a/gcc/arm-none-eabi/bin/ld: /usr/share/segger_embedded_studio_for_arm_6.22a/lib/libc_v7em_fpv4_sp_d16_hard_t_le_eabi_balanced.a(prinops.o): in function `vfprintf':�[0m
2> prinops.c:(.text.libc.vfprintf+0xe): undefined reference to `__SEGGER_RTL_X_file_bufsize'�[0m
2> /usr/share/segger_embedded_studio_for_arm_6.22a/gcc/arm-none-eabi/bin/ld: /usr/share/segger_embedded_studio_for_arm_6.22a/lib/libc_v7em_fpv4_sp_d16_hard_t_le_eabi_balanced.a(prinops.o): in function `printf':�[0m
2> prinops.c:(.text.libc.printf+0xe): undefined reference to `stdout'�[0m
2> /usr/share/segger_embedded_studio_for_arm_6.22a/gcc/arm-none-eabi/bin/ld: prinops.c:(.text.libc.printf+0x12): undefined reference to `stdout'�[0m
Build failed�[0m

Can anyone help-me?

O downloaded the most recent version of segger studio and installed the necessary packages

SEGGER Embedded Studio for ARM
Release 6.22a Build 2022032300.49847
Linux x64

Array bound check error

Pretty sure the bound check here is reversed.

int dwt_setlocaldataptr(unsigned int index)
{
// Check the index is within the array bounds
if (DWT_NUM_DW_DEV > index) // return error if index outside the array bounds
{
return DWT_ERROR ;
}

pdw1000local = &dw1000local[index];

return DWT_SUCCESS ;

}

Printing/Input over UART for SS_TWR_Resp example?

Hi, I would like to have the code on the SS_TWR_Resp example take in and print out over uart, and I can monitor that over puTTy or something similar. So far, it seems like the init example can do this, but I can't find a way to get the response example to work the same way. Any Help would be appreciated.
I am using the SES example, if that helps too.

Frame filtering with multiple tags

Hi

I just bought 2 DWM1001-DEV, one tag and one anchor, they work perfectly fine with the provided example trough UART. I was wondering if anyone know how to filter multiples anchors data in one tag.
Will the data from all anchors be transmitted into one tag using the example project?

Thanks in advance

Defined SPEED_OF_LIGHT ...

Guys, I think there is a mistake in your code since you define the speed of light as 299702547 m/sec but it is actually 299792458 m/sec. ... That's a bit over 90Km difference. Did you actually intend to put the speed of light or you have changed it a bit to compensate for something and didn't explain why in the code's comments?

https://en.wikipedia.org/wiki/Speed_of_light

BLE Example

Do you have a BLE Example for this SDK as well?

Error while building ss_twr_init

Hello,
I have successfully built ss_twr_resp. I am getting error while building ss_twr_init. I have send the log here , there is controversy in putchar.
Building ‘ss_twr_init’ from solution ‘ss_twr_init’ in configuration ‘nrf52832_xxaa’
Compiling ‘retarget.c’
"C:/Program Files/SEGGER/SEGGER Embedded Studio for ARM 4.16/gcc/arm-none-eabi/bin/cc1" -fmessage-length=0 -fno-diagnostics-show-caret -mcpu=cortex-m4 -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mthumb -mtp=soft -munaligned-access -nostdinc "-isystemC:/Program Files/SEGGER/SEGGER Embedded Studio for ARM 4.16/include" "-isystemC:/Users/Admin/AppData/Local/SEGGER/SEGGER Embedded Studio/v3/packages/include" "-IC:/Users/Admin/AppData/Local/SEGGER/SEGGER Embedded Studio/v3/packages/nRF/CMSIS/Device/Include" "-IC:/Users/Admin/AppData/Local/SEGGER/SEGGER Embedded Studio/v3/packages/CMSIS_5/CMSIS/Core/Include" -I../../../nRF5_SDK_14.2.0/components/device -I../UART -I../config -I../../../nRF5_SDK_14.2.0/components -I../../../nRF5_SDK_14.2.0/components/boards -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/clock -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/common -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/delay -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/gpiote -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/hal -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/nrf_soc_nosd -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/spi_master -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/uart -I../../../nRF5_SDK_14.2.0/components/libraries/atomic -I../../../nRF5_SDK_14.2.0/components/libraries/balloc -I../../../nRF5_SDK_14.2.0/components/libraries/bsp -I../../../nRF5_SDK_14.2.0/components/libraries/button -I../../../nRF5_SDK_14.2.0/components/libraries/fifo -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_log -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_log/src -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_memobj -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_section_vars -I../../../nRF5_SDK_14.2.0/components/libraries/scheduler -I../../../nRF5_SDK_14.2.0/components/libraries/strerror -I../../../nRF5_SDK_14.2.0/components/libraries/timer -I../../../nRF5_SDK_14.2.0/components/libraries/util -I../../../nRF5_SDK_14.2.0/components/libraries/uart -I../../../nRF5_SDK_14.2.0/components/toolchain -I../../../deca_driver -I../../../deca_driver/port -I../../../nRF5_SDK_14.2.0/external/fprintf -I../../../nRF5_SDK_14.2.0/external/segger_rtt -I../../../nRF5_SDK_14.2.0/external/freertos/ -I../../../nRF5_SDK_14.2.0/external/freertos/source -I../../../nRF5_SDK_14.2.0/external/freertos/config -I../../../nRF5_SDK_14.2.0/external/freertos/source/include -I../../../nRF5_SDK_14.2.0/external/freertos/portable/ARM/nrf52 -I../../../nRF5_SDK_14.2.0/external/freertos/portable/CMSIS/nrf52 -I../../../nRF5_SDK_14.2.0/external/freertos/source/portable -I../../../boards -I../../.. -D__SIZEOF_WCHAR_T=4 -D__ARM_ARCH_7EM
_ -D__SES_ARM -D__ARM_ARCH_FPV4_SP_D16__ -D__SES_VERSION=41600 -DBOARD_DW1001_DEV -DBSP_SIMPLE -DCONFIG_GPIO_AS_PINRESET -DFLOAT_ABI_HARD -DNRF52 -DNRF52832_XXAA -DNRF52_PAN_74 -DSWI_DISABLE0 -MD "E:/Projects/RTLS/nRF/GitCodes/dwm1001-examples/dwm1001-examples/examples/ss_twr_init/SES/Output/ss_twr_init nrf52832_xxaa/Obj/retarget.d" -MQ "Output/ss_twr_init nrf52832_xxaa/Obj/retarget.o" -quiet -std=gnu99 -g2 -gpubnames -fomit-frame-pointer -fno-dwarf2-cfi-asm -fno-builtin -ffunction-sections -fdata-sections -fshort-enums -fno-common E:\Projects\RTLS\nRF\GitCodes\dwm1001-examples\dwm1001-examples\nRF5_SDK_14.2.0\components\libraries\uart\retarget.c -o "E:/Projects/RTLS/nRF/GitCodes/dwm1001-examples/dwm1001-examples/examples/ss_twr_init/SES/Output/ss_twr_init nrf52832_xxaa/Obj/retarget.asm"
conflicting types for 'putchar'
retarget.c
previous declaration of 'putchar' was here
Compiling ‘nrf_log_backend_rtt.c’
"C:/Program Files/SEGGER/SEGGER Embedded Studio for ARM 4.16/gcc/arm-none-eabi/bin/cc1" -fmessage-length=0 -fno-diagnostics-show-caret -mcpu=cortex-m4 -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mthumb -mtp=soft -munaligned-access -nostdinc "-isystemC:/Program Files/SEGGER/SEGGER Embedded Studio for ARM 4.16/include" "-isystemC:/Users/Admin/AppData/Local/SEGGER/SEGGER Embedded Studio/v3/packages/include" "-IC:/Users/Admin/AppData/Local/SEGGER/SEGGER Embedded Studio/v3/packages/nRF/CMSIS/Device/Include" "-IC:/Users/Admin/AppData/Local/SEGGER/SEGGER Embedded Studio/v3/packages/CMSIS_5/CMSIS/Core/Include" -I../../../nRF5_SDK_14.2.0/components/device -I../UART -I../config -I../../../nRF5_SDK_14.2.0/components -I../../../nRF5_SDK_14.2.0/components/boards -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/clock -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/common -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/delay -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/gpiote -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/hal -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/nrf_soc_nosd -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/spi_master -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/uart -I../../../nRF5_SDK_14.2.0/components/libraries/atomic -I../../../nRF5_SDK_14.2.0/components/libraries/balloc -I../../../nRF5_SDK_14.2.0/components/libraries/bsp -I../../../nRF5_SDK_14.2.0/components/libraries/button -I../../../nRF5_SDK_14.2.0/components/libraries/fifo -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_log -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_log/src -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_memobj -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_section_vars -I../../../nRF5_SDK_14.2.0/components/libraries/scheduler -I../../../nRF5_SDK_14.2.0/components/libraries/strerror -I../../../nRF5_SDK_14.2.0/components/libraries/timer -I../../../nRF5_SDK_14.2.0/components/libraries/util -I../../../nRF5_SDK_14.2.0/components/libraries/uart -I../../../nRF5_SDK_14.2.0/components/toolchain -I../../../deca_driver -I../../../deca_driver/port -I../../../nRF5_SDK_14.2.0/external/fprintf -I../../../nRF5_SDK_14.2.0/external/segger_rtt -I../../../nRF5_SDK_14.2.0/external/freertos/ -I../../../nRF5_SDK_14.2.0/external/freertos/source -I../../../nRF5_SDK_14.2.0/external/freertos/config -I../../../nRF5_SDK_14.2.0/external/freertos/source/include -I../../../nRF5_SDK_14.2.0/external/freertos/portable/ARM/nrf52 -I../../../nRF5_SDK_14.2.0/external/freertos/portable/CMSIS/nrf52 -I../../../nRF5_SDK_14.2.0/external/freertos/source/portable -I../../../boards -I../../.. -D__SIZEOF_WCHAR_T=4 -D__ARM_ARCH_7EM -D__SES_ARM -D__ARM_ARCH_FPV4_SP_D16
-D__SES_VERSION=41600 -DBOARD_DW1001_DEV -DBSP_SIMPLE -DCONFIG_GPIO_AS_PINRESET -DFLOAT_ABI_HARD -DNRF52 -DNRF52832_XXAA -DNRF52_PAN_74 -DSWI_DISABLE0 -MD "E:/Projects/RTLS/nRF/GitCodes/dwm1001-examples/dwm1001-examples/examples/ss_twr_init/SES/Output/ss_twr_init nrf52832_xxaa/Obj/nrf_log_backend_rtt.d" -MQ "Output/ss_twr_init nrf52832_xxaa/Obj/nrf_log_backend_rtt.o" -quiet -std=gnu99 -g2 -gpubnames -fomit-frame-pointer -fno-dwarf2-cfi-asm -fno-builtin -ffunction-sections -fdata-sections -fshort-enums -fno-common E:\Projects\RTLS\nRF\GitCodes\dwm1001-examples\dwm1001-examples\nRF5_SDK_14.2.0\components\libraries\experimental_log\src\nrf_log_backend_rtt.c -o "E:/Projects/RTLS/nRF/GitCodes/dwm1001-examples/dwm1001-examples/examples/ss_twr_init/SES/Output/ss_twr_init nrf52832_xxaa/Obj/nrf_log_backend_rtt.asm"
Compiling ‘nrf_log_backend_serial.c’
"C:/Program Files/SEGGER/SEGGER Embedded Studio for ARM 4.16/gcc/arm-none-eabi/bin/cc1" -fmessage-length=0 -fno-diagnostics-show-caret -mcpu=cortex-m4 -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mthumb -mtp=soft -munaligned-access -nostdinc "-isystemC:/Program Files/SEGGER/SEGGER Embedded Studio for ARM 4.16/include" "-isystemC:/Users/Admin/AppData/Local/SEGGER/SEGGER Embedded Studio/v3/packages/include" "-IC:/Users/Admin/AppData/Local/SEGGER/SEGGER Embedded Studio/v3/packages/nRF/CMSIS/Device/Include" "-IC:/Users/Admin/AppData/Local/SEGGER/SEGGER Embedded Studio/v3/packages/CMSIS_5/CMSIS/Core/Include" -I../../../nRF5_SDK_14.2.0/components/device -I../UART -I../config -I../../../nRF5_SDK_14.2.0/components -I../../../nRF5_SDK_14.2.0/components/boards -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/clock -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/common -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/delay -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/gpiote -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/hal -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/nrf_soc_nosd -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/spi_master -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/uart -I../../../nRF5_SDK_14.2.0/components/libraries/atomic -I../../../nRF5_SDK_14.2.0/components/libraries/balloc -I../../../nRF5_SDK_14.2.0/components/libraries/bsp -I../../../nRF5_SDK_14.2.0/components/libraries/button -I../../../nRF5_SDK_14.2.0/components/libraries/fifo -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_log -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_log/src -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_memobj -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_section_vars -I../../../nRF5_SDK_14.2.0/components/libraries/scheduler -I../../../nRF5_SDK_14.2.0/components/libraries/strerror -I../../../nRF5_SDK_14.2.0/components/libraries/timer -I../../../nRF5_SDK_14.2.0/components/libraries/util -I../../../nRF5_SDK_14.2.0/components/libraries/uart -I../../../nRF5_SDK_14.2.0/components/toolchain -I../../../deca_driver -I../../../deca_driver/port -I../../../nRF5_SDK_14.2.0/external/fprintf -I../../../nRF5_SDK_14.2.0/external/segger_rtt -I../../../nRF5_SDK_14.2.0/external/freertos/ -I../../../nRF5_SDK_14.2.0/external/freertos/source -I../../../nRF5_SDK_14.2.0/external/freertos/config -I../../../nRF5_SDK_14.2.0/external/freertos/source/include -I../../../nRF5_SDK_14.2.0/external/freertos/portable/ARM/nrf52 -I../../../nRF5_SDK_14.2.0/external/freertos/portable/CMSIS/nrf52 -I../../../nRF5_SDK_14.2.0/external/freertos/source/portable -I../../../boards -I../../.. -D__SIZEOF_WCHAR_T=4 -D__ARM_ARCH_7EM__ -D__SES_ARM -D__ARM_ARCH_FPV4_SP_D16__ -D__SES_VERSION=41600 -DBOARD_DW1001_DEV -DBSP_SIMPLE -DCONFIG_GPIO_AS_PINRESET -DFLOAT_ABI_HARD -DNRF52 -DNRF52832_XXAA -DNRF52_PAN_74 -DSWI_DISABLE0 -MD "E:/Projects/RTLS/nRF/GitCodes/dwm1001-examples/dwm1001-examples/examples/ss_twr_init/SES/Output/ss_twr_init nrf52832_xxaa/Obj/nrf_log_backend_serial.d" -MQ "Output/ss_twr_init nrf52832_xxaa/Obj/nrf_log_backend_serial.o" -quiet -std=gnu99 -g2 -gpubnames -fomit-frame-pointer -fno-dwarf2-cfi-asm -fno-builtin -ffunction-sections -fdata-sections -fshort-enums -fno-common E:\Projects\RTLS\nRF\GitCodes\dwm1001-examples\dwm1001-examples\nRF5_SDK_14.2.0\components\libraries\experimental_log\src\nrf_log_backend_serial.c -o "E:/Projects/RTLS/nRF/GitCodes/dwm1001-examples/dwm1001-examples/examples/ss_twr_init/SES/Output/ss_twr_init nrf52832_xxaa/Obj/nrf_log_backend_serial.asm"
Compiling ‘nrf_log_backend_uart.c’
"C:/Program Files/SEGGER/SEGGER Embedded Studio for ARM 4.16/gcc/arm-none-eabi/bin/cc1" -fmessage-length=0 -fno-diagnostics-show-caret -mcpu=cortex-m4 -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mthumb -mtp=soft -munaligned-access -nostdinc "-isystemC:/Program Files/SEGGER/SEGGER Embedded Studio for ARM 4.16/include" "-isystemC:/Users/Admin/AppData/Local/SEGGER/SEGGER Embedded Studio/v3/packages/include" "-IC:/Users/Admin/AppData/Local/SEGGER/SEGGER Embedded Studio/v3/packages/nRF/CMSIS/Device/Include" "-IC:/Users/Admin/AppData/Local/SEGGER/SEGGER Embedded Studio/v3/packages/CMSIS_5/CMSIS/Core/Include" -I../../../nRF5_SDK_14.2.0/components/device -I../UART -I../config -I../../../nRF5_SDK_14.2.0/components -I../../../nRF5_SDK_14.2.0/components/boards -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/clock -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/common -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/delay -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/gpiote -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/hal -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/nrf_soc_nosd -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/spi_master -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/uart -I../../../nRF5_SDK_14.2.0/components/libraries/atomic -I../../../nRF5_SDK_14.2.0/components/libraries/balloc -I../../../nRF5_SDK_14.2.0/components/libraries/bsp -I../../../nRF5_SDK_14.2.0/components/libraries/button -I../../../nRF5_SDK_14.2.0/components/libraries/fifo -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_log -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_log/src -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_memobj -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_section_vars -I../../../nRF5_SDK_14.2.0/components/libraries/scheduler -I../../../nRF5_SDK_14.2.0/components/libraries/strerror -I../../../nRF5_SDK_14.2.0/components/libraries/timer -I../../../nRF5_SDK_14.2.0/components/libraries/util -I../../../nRF5_SDK_14.2.0/components/libraries/uart -I../../../nRF5_SDK_14.2.0/components/toolchain -I../../../deca_driver -I../../../deca_driver/port -I../../../nRF5_SDK_14.2.0/external/fprintf -I../../../nRF5_SDK_14.2.0/external/segger_rtt -I../../../nRF5_SDK_14.2.0/external/freertos/ -I../../../nRF5_SDK_14.2.0/external/freertos/source -I../../../nRF5_SDK_14.2.0/external/freertos/config -I../../../nRF5_SDK_14.2.0/external/freertos/source/include -I../../../nRF5_SDK_14.2.0/external/freertos/portable/ARM/nrf52 -I../../../nRF5_SDK_14.2.0/external/freertos/portable/CMSIS/nrf52 -I../../../nRF5_SDK_14.2.0/external/freertos/source/portable -I../../../boards -I../../.. -D__SIZEOF_WCHAR_T=4 -D__ARM_ARCH_7EM__ -D__SES_ARM -D__ARM_ARCH_FPV4_SP_D16__ -D__SES_VERSION=41600 -DBOARD_DW1001_DEV -DBSP_SIMPLE -DCONFIG_GPIO_AS_PINRESET -DFLOAT_ABI_HARD -DNRF52 -DNRF52832_XXAA -DNRF52_PAN_74 -DSWI_DISABLE0 -MD "E:/Projects/RTLS/nRF/GitCodes/dwm1001-examples/dwm1001-examples/examples/ss_twr_init/SES/Output/ss_twr_init nrf52832_xxaa/Obj/nrf_log_backend_uart.d" -MQ "Output/ss_twr_init nrf52832_xxaa/Obj/nrf_log_backend_uart.o" -quiet -std=gnu99 -g2 -gpubnames -fomit-frame-pointer -fno-dwarf2-cfi-asm -fno-builtin -ffunction-sections -fdata-sections -fshort-enums -fno-common E:\Projects\RTLS\nRF\GitCodes\dwm1001-examples\dwm1001-examples\nRF5_SDK_14.2.0\components\libraries\experimental_log\src\nrf_log_backend_uart.c -o "E:/Projects/RTLS/nRF/GitCodes/dwm1001-examples/dwm1001-examples/examples/ss_twr_init/SES/Output/ss_twr_init nrf52832_xxaa/Obj/nrf_log_backend_uart.asm"
Build failed

Kindly suggest

Thanks
Asmita

Round trip distance?

Am I correct that this example computes the round trip time of flight and distance, and it should therefore be halved to get the correct distance between nodes? Thanks.

how I can work with DRTLS_Manager_R2.apk

Hi Decawave team
I meet a problem that I have not the source code to work with the phone app DRTLS_Manager_R2.apk,would you please give me some sugguestion?
thanks

Build fail

Building ‘ss_twr_init’ from solution ‘ss_twr_init’ in configuration ‘nrf52832_xxaa’
2> Checking ‘thumb_crt0.s’
2> Output/nrf52832_xxaa/Obj/ss_twr_init/thumb_crt0.o does not exist.
2> Assembling ‘thumb_crt0.s’
2> "C:/Program Files (x86)/GNU Tools ARM Embedded/5.4 2016q3/bin/cc1" -fmessage-length=0 -fno-diagnostics-show-caret -std=gnu99 -E -march=armv7e-m -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mthumb -nostdinc "-isystemC:/Program Files/SEGGER/SEGGER Embedded Studio for ARM 5.60a/include" "-IC:/Users/NPStudent/AppData/Local/SEGGER/SEGGER Embedded Studio/v3/packages/nRF/CMSIS/Device/Include" "-IC:/Users/NPStudent/AppData/Local/SEGGER/SEGGER Embedded Studio/v3/packages/CMSIS_5/CMSIS/Core/Include" -I../../../nRF5_SDK_14.2.0/components/device -I../UART -I../config -I../../../nRF5_SDK_14.2.0/components -I../../../nRF5_SDK_14.2.0/components/boards -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/clock -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/common -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/delay -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/gpiote -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/hal -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/nrf_soc_nosd -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/spi_master -I../../../nRF5_SDK_14.2.0/components/drivers_nrf/uart -I../../../nRF5_SDK_14.2.0/components/libraries/atomic -I../../../nRF5_SDK_14.2.0/components/libraries/balloc -I../../../nRF5_SDK_14.2.0/components/libraries/bsp -I../../../nRF5_SDK_14.2.0/components/libraries/button -I../../../nRF5_SDK_14.2.0/components/libraries/fifo -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_log -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_log/src -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_memobj -I../../../nRF5_SDK_14.2.0/components/libraries/experimental_section_vars -I../../../nRF5_SDK_14.2.0/components/libraries/scheduler -I../../../nRF5_SDK_14.2.0/components/libraries/strerror -I../../../nRF5_SDK_14.2.0/components/libraries/timer -I../../../nRF5_SDK_14.2.0/components/libraries/util -I../../../nRF5_SDK_14.2.0/components/libraries/uart -I../../../nRF5_SDK_14.2.0/components/toolchain -I../../../deca_driver -I../../../deca_driver/port -I../../../nRF5_SDK_14.2.0/external/fprintf -I../../../nRF5_SDK_14.2.0/external/segger_rtt -I../../../nRF5_SDK_14.2.0/external/freertos/ -I../../../nRF5_SDK_14.2.0/external/freertos/source -I../../../nRF5_SDK_14.2.0/external/freertos/config -I../../../nRF5_SDK_14.2.0/external/freertos/source/include -I../../../nRF5_SDK_14.2.0/external/freertos/portable/ARM/nrf52 -I../../../nRF5_SDK_14.2.0/external/freertos/portable/CMSIS/nrf52 -I../../../nRF5_SDK_14.2.0/external/freertos/source/portable -I../../../boards -I../../.. -D__SIZEOF_WCHAR_T=4 -D__ARM_ARCH_7EM__ -D__SES_ARM -D__ARM_ARCH_FPV4_SP_D16__ -D__HEAP_SIZE__=1024 -D__SES_VERSION=56001 -D__GNU_LINKER -DBOARD_DW1001_DEV -DBSP_SIMPLE -DCONFIG_GPIO_AS_PINRESET -DFLOAT_ABI_HARD -DNRF52 -DNRF52832_XXAA -DNRF52_PAN_74 -DSWI_DISABLE0 -MD C:/Users/NPStudent/Desktop/dwm1001-examples-master/dwm1001-examples-master/examples/ss_twr_init/SES/Output/nrf52832_xxaa/Obj/ss_twr_init/thumb_crt0.d -MQ Output/nrf52832_xxaa/Obj/ss_twr_init/thumb_crt0.o -quiet -lang-asm C:\Users\NPStudent\Desktop\dwm1001-examples-master\dwm1001-examples-master\examples\ss_twr_init\SES\RTE\thumb_crt0.s -o C:/Users/NPStudent/Desktop/dwm1001-examples-master/dwm1001-examples-master/examples/ss_twr_init/SES/Output/nrf52832_xxaa/Obj/ss_twr_init/thumb_crt0_PP.s
2> Error starting process C:/Program Files (x86)/GNU Tools ARM Embedded/5.4 2016q3/bin/cc1
Build failed

Is FreeRTOS Really recommended?

Hi, I'm starting to learn how to develop with the Decawave board. I'm using GNU_GCC and SDK v16 of nRF Boards.

I would like to ask two things, first of all:

Is Uart.h lib really required? I'm currently using nrf_log.h and I dont want to lose the access to ERROR Reports this library provides me.

Second question:

Is FreeRTOS really required? and when you guys are going to update the examples repository with GNU_GCC and SDKv16 examples?

Thank you very much

How about dw3000

Hi sir

I'm new to this field and i want to make dw3000 work as an anchor and tag ..??
please can you suggest me how can i make them work..??

Hoping for your help :-(

dw1000 can be used for cc2530?

I copy simple TX/RX code to cc2520,it build ok,but RX recv notiong by tx. print RX's statues_reg always is 0x00800002.
hope anybody resp ,thanks!

ss_twr not stable

The ss_twr_init and the resp node work is not stable, sometimes can get the result, then need to reset, or can't receive.
I read the codes, i found that, in the project, the IRQ of DW1000 is not used anymore, i think this should be added later.

General hardware instructions for beginners

Hello there!

We are very interested in trying out those examples on our DWM1001-DEV boards (we got the MDEK1001 kit). We know that any change will erase the RTLS stack delivered with MDEK but this is what we need to do in order to take advantage of the DW1000 API, send our own messages, get timestamps, and generally build from there.

But, because we seriously are newbies, we will need all the help there is to guide us through reprogramming the boards and at least trying and testing the examples you provide.

Thank you!

Unable to use GPIO 10

I would like to use GPIO10 for an extra LED but I can't set it high to light the led.
Is there any issue in the module in this pin?
I have tested all pins and The only which fails are GPIO9, GPIO10 and GPIO3. Maybe there is something activated in GPIO9 and GPIO10 related with the NFC.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.