DW1000 + NORDIC nRF52


I’m working on DW1000 with nRF52 (porting “DecaRangeRTLS ARM” code from ST to nRF52).

In my project, the SPI frequency is set to 2M bps, and our system(DW1000 + nRF52) will be a UWB tag.

our system(DW1000 + nRF52) — UWB tag
Decawave demo board (DW1000 + ST) — UWB Anchor
The problem is the Anchor can not calculate the distance that the reason I guess is the Anchor doesn’t receive the final message.

Everything works fine except to the final message. The states are printed via UART and found that the poll message is transmitted but the final message is not. The lag is attached as blow for your reference.

I’m not sure is it clear for you to help on this problem, thanks in advance.


Hi Sara,

please read the Debugging app not APS 022, and TREK source code guide which describes various timings used. This will give you some hints. But basically you will need to adjust the timings in the tag or anchor to match your new system limitations, i.e. if the SPI is quite slow or if you are using slower micros then some of the response /turnaroud times from DecaRangeRTLS cannot be achieved.

Firstly I would check if the tag receives the response, then does it try to send a final message. Does this succeed or does the tag report “LATE” ? Once the tag is sending the final, then you just need to make sure the anchor has its receiver on to receive it.
I find the best is to look at GPIOs 5 & 6 on DW1000 - which can be configured to output TX and RX state. Looking on the scope you can view both the tag and anchor TX/RX states and check that when one is transmitting the other has its receiver on, and vice versa.


Hello Zoran,

Thanks for your reply.

I don’t understand what the “Debugging app” and “APS 022”, could you give me more explanation? Now, I think the problem may really caused by the slow SPI of nRF52, but still have some questions about DW1000.

  • If the UWB Tag SPI is set to 4M bps, then the Anchor’s SPI also need to be set to 4M bps?
  • Is it possible to change the SPI to 4M or 8M bps in “DecaRangeRTLS ARM” source code?



Hi Sara!

APS022 is ref to published paper (APS022: Debugging DW1000 Based Products and Systems) http://decawave.com/support/download/file/nojs/812

SPI speed can be adjusted to any value, appropriate for equipment you use, but the protocol of packets exchange has to be adjusted correspondingly. No problem, If anchor and tag uses different SPI speed. The source of problem will lay in timings of protocol. I strongly recommend this paper (if you haven’t seen it already): APS013: DW1000 and Two Way Ranging (http://decawave.com/support/download/file/nojs/861)
as well as all the documentation in http://decawave.com/support shelf - everything is explained pretty well.


Hi Stan,

I realize that this is an old post, so I apologise for commenting on it.

It seems like quite a few people are porting the TREK1000 RTLS application to the DWM1001 development board. Does Decawave have this application somewhere in their github repo?

I am in a similiar position to Sara - I have ported the TREK1000 RTLS to DWM1001 and everything is almost working except for that my anchor rarely receives the FINAL message from tag to complete TWR.
Is this just a matter of playing with the timing macros in instance.h to find what works?


This thread is closed. Please create a new thread to discuss your topic