Dwt_probe() returns DWT_SUCCESS however dwt_readdevid() halts the program, doesn't return anything

Hi everyone,
I’m using a DWM3000EVB with the DWM3xxx API from the DW3xxx_XR6.0C_24Feb2022 release.
The device ID is “DECA0302”.
I am trying to port the library to PSoC 6.
I have ported the “readfromspi()” and “writetospi()” methods in “deca_spi.c” file.
I am running the “read_dev_id” examples provided.
When calling the “dwt_probe” function it is returning “DWT_SUCCESS” however when calling the “dwt_readdevid” function, it doesn’t return anything.
I have traced the SPI lines using a logic analyser and I am receiving the device ID “DECA0302” twice from the chip. One from the
“dwt_probe” function call and once from the “dwt_readdevid” function call.
I have never worked with linker files but I modified it like so:

image

The drivers are being loaded in memory after using the following linker flag.

LDFLAGS= -L./decaLibs/DWM3XX/Shared/dwt_uwb_driver/lib -Wl,–whole-archive -ldwt_uwb_driver-m33-sfp-6.0.7 -Wl,–no-whole-archive

As per DW3xxx_Driver_API_Guide_6.0.14 - (Section 2.1.1), I’d like to use the device descriptor structure available inbuilt in the library, instead of building my own device descriptor structure.
I will be using only one DWM3000 device with the host MCU.

Questions:

  1. Will I be able to make use of the device descriptor inbuilt in the library? Why does calling “dwt_readdevid” result in the program halting.
  2. How do I write my own device descriptor? API guide and SDK guide doesn’t explain this.

Hello,
We just release the latest SDK, see New release of DW3000 and QM33 SDK: DW3_QM33 SDK v1.0.0
It contains the updated sources of the driver, I think it will be easier for you to integrate it and understand how it is done in the inside.