DWM3000 driver library branching to a memory location with no code

I’m trying to get a TWR application running on the DWM3000 with an nRF52840 as host on a custom board. I could not get the SPI driver source to work so I wrote my own readfromspi and writetospi routines with the same prototype as yours, and now I can read and write scratchpad (addr 0x16) and get the ID (DECA0302), and the probe command runs successfully, but when I attempt to run any of the library functions (ex dwt_readdevid) the code hardfaults. I’ve traced the assembly code to a situation where a branch is leading to a RAM location where there are no opcodes, just zeros. None of the functions appear in the symbol table, but they are listed in the map file.

The archive file I’m using is libdwt_uwb_driver-m4-hfp-6.0.7.a. Is there a newer version of this driver? How do I get my hands on it? Any clue as to what’s going on? IDE is Segger Embedded Studio, Nordic IDE is 17.1.

But you have example projects, quite complex from the Qorvo website, no?

Yes of course, I’m using an example project. I’m not quite sure what you’re trying to say.

Hi @apdobaj ,

In this link https://www.qorvo.com/products/d/da008582 from Qorvo website, you have a ready CLI (Command Line interface) binary which should work out of the box for nRF52840 target.
You can also check the documentation inside the package, to understand how you can do TWR between 2 devices.

Hi wassim, I’m not sure what you expect me to do with that CLI binary, this is for a canned test environment and we have custom hardware. And the issue is not how to do TWR, I’ve done that successfully for the DWM1000 on custom hardware. Please read the first post for the issue I’m trying to resolve.


I think that in the examples, a call to dwt_initialise(); is missing between the dwt_probe() and dwt_readdevid(); calls. Data structures for the driver are NULL pointers, so you are getting that error.

I cannot understand why the examples are missing that.