We have recently started development of a positioning system based on DWM1001 module. I have a couple of questions I’m not able to find answers:
DMW1001 Firmware API Guide. Is the version 2.2 the latest one? It relates to PANS Library Version 1.3.0, but the current version of the library is 2.0 (released in 2019!). It has a lot of undocumented functions, only documentation available is the header file.
nRF SDK version. I have found mention (from somewhere, I wasn’t able to find it again, it’s not in API documentation) that PANS library would be based on nRF SDK version 12.1.0. I also found Decawave git repo with examples using 14.2.0 SDK. Which version should be used, or does it matter?
Interrputs / multiple interrupt handlers: In my (early) tests I haven’t found a way to use more than one interrupt. Someone else had tried to build SAADC functionality and also suspected that the difficulties are related to the interrupt behavior. Could this be clarified?
Also, does someone had set up the toolchain and code examples on MacOS? The examples in the downloads have been built on windows environment. I got those somewhat working on Mac (by changing the backslashes etc.) but there is still some weird behavior. On windows those seem to work ok, but I would prefer to use mac.
- Yes the last version of DWM1001 Firmware API Guide is 2.2. Please note that the PANS release is actually 2.0, but the actual firmware within the release 2.0 has the following version: 1.3.0. I understand this is a bit confusing, but the documentation is referring to the firmware image and not the release package version.
You can verify the version of the firmware using the “SI” API on the user shell interface over serial:
What undocumented function are you referring to ? The API is fulling documented, but please note that we do not provide the source code for PANS. The functions for which there is only a header file are not part of the API, and should not be used when implementing a user-space application (which should only call the documented APIs)
The NRF SDK version is 12.1.0. This is specified in DWM1001-Firmware-User-Guide document. The project on github uses the same hardware platform but is completely unrelated to the PANS library. It is a basic implementation of TWR using the DW1000 decadriver and the nordic SDK.
All the peripheral which are accessible from the user space are described in the table 2 of the DWM1001 Firmware API Guide. You should be able to use some of the software interrupt in the user space but please not that some of them are mutual exclusive with the BLE. (So the BLE must be disabled, ie. not compiled in the main.c of the user-app example.)
I haven’t experimented with MacOs, and I don’t have access to an apple machine to try, sorry.
Let us know how it goes,
Thank you for the answer.
- Ok, this is clear
1.&3.: I mean function calls like dwm_thread_create and dwm_interrupt_register. I can more or less guess the meaning of the functions, but I haven’t found documentation of these (except dwm.h).
I guess the interrputs has to be registered using dwm_interrupt_register -function, but it seems that only the last interrupt registered with that function will be listened. Example: taking dwm-uart as starting point, how would you add timer 2 (vector 10) to toggle GPIO 31 (blue led). I have tried several ways to do that, but I either have the led blinking or uart responding depending on which interrupt is been registered last.