DWM1001 API functions partially failed

Hi,

I just tested some functions by "example_external_api_fulltest() "
(DWM1001 example code) via SPI interface.
Some functions are failed, for example, dwm_status_get()
TLV request: 0x32 0x00
length: 0x06
TLV response: 0x40 01 00 5A 01 00
But in API Guide(V2.2) Page77, it should be
length: 0x07
TLV response: 0x40 01 00 5A 02 01 00

I tested several modules, and got the same results.
Does anyone know what happed? Is there any FW version issue?
ver.fw.maj = 1
ver.fw.min = 1
ver.fw.patch= 5
ver.fw.res = 0
ver.fw.var = 1
ver.cfg = 00010700
ver.hw = deca002a

Thanks.

Initializing…
lmh: LMH_SPIRX_Init(): SPI dev0…
lmh: SPI0: Reseting DWM1001 to SPI:IDLE
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI: LMH_SPIRX_Init for SPI dev0 done.
Factory reset.
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: *** ERROR *** HAL_SPI: DWM1001_RV_ERR: 1
Check Tx&Rx:
Fail
Wait 2000 ms for node to reset.
ERR frst: err_cnt = 1
Done
Factory reset.
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: *** ERROR *** HAL_SPI: DWM1001_RV_ERR: 1
Check Tx&Rx:
Fail
Wait 2000 ms for node to reset.
ERR frst: err_cnt = 1
dwm_cfg_tag_set(&cfg_tag)
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Received 3 bytes, in 19 ms OK
Check Tx&Rx:
OK
dwm_cfg_tag_set(&cfg_tag): pass
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Received 3 bytes, in 2 ms OK
Check Tx&Rx:
OK
dwm_reset(): pass
Wait 1500 ms for node to reset.
dwm_cfg_get(&cfg_node):
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Received 7 bytes, in 2 ms OK
Check Tx&Rx:
OK
dwm_cfg_get(&cfg_node): pass
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Received 7 bytes, in 2 ms OK
Check Tx&Rx:
OK
Comparing set vs. get.
Check Value:
OK
Comparing set vs. get: pass
ERR test_cfg: err_cnt = 1
dwm_ver_get(&ver)
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Received 21 bytes, in 2 ms OK
Check Tx&Rx:
OK
ver.fw.maj = 1
ver.fw.min = 1
ver.fw.patch= 5
ver.fw.res = 0
ver.fw.var = 1
ver.cfg = 00010700
ver.hw = deca002a
dwm_ver_get(&ver): pass
test_ver: err_cnt = 0
dwm_status_get(&status)
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: *** ERROR *** SPI0: Expecting 7 bytes, received 6 bytes, in 2 ms
Check Tx&Rx:
Fail
dwm_status_get(&status): fail
ERR test_status: err_cnt = 1
dwm_panid_get(&panid_origin);
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: *** ERROR *** HAL_SPI: DWM1001_RV_ERR: 1
Check Tx&Rx:
Fail
dwm_panid_get(&panid_origin): fail
dwm_panid_set(panid_set);
panid_set = 0x0002
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: *** ERROR *** HAL_SPI: DWM1001_RV_ERR: 1
Check Tx&Rx:
Fail
dwm_panid_set(panid_set): fail
dwm_reset()
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Received 3 bytes, in 2 ms OK
Check Tx&Rx:
OK
Wait 1s for node to reset.
dwm_panid_get(&panid_get);
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: *** ERROR *** HAL_SPI: DWM1001_RV_ERR: 1
Check Tx&Rx:
Fail
dwm_panid_get(&panid_get): fail
panid_get == panid_set? fail
dwm_panid_set/get(): fail
dwm_panid_set(panid_origin);
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: *** ERROR *** HAL_SPI: DWM1001_RV_ERR: 1
Check Tx&Rx:
Fail
dwm_panid_set(panid_origin): fail
dwm_reset()
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Received 3 bytes, in 2 ms OK
Check Tx&Rx:
OK
Wait 1s for node to reset.
ERR test_panid: err_cnt = 3
dwm_label_read(label_origin, &len_origin);
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: *** ERROR *** HAL_SPI: DWM1001_RV_ERR: 1
Check Tx&Rx:
Fail
dwm_label_read(label_origin, &len_origin): fail
dwm_label_write(label_set, strlen(label_set));
label_set = label_test
label_set_len = 10
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: *** ERROR *** HAL_SPI: DWM1001_RV_ERR: 1
Check Tx&Rx:
Fail
dwm_label_write(label_set, strlen(label_set)): fail
dwm_label_read(label_get, &len_get);
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: *** ERROR *** HAL_SPI: DWM1001_RV_ERR: 1
Check Tx&Rx:
Fail
dwm_label_read(label_get, &len_get): fail
label_get == label_set? fail
dwm_label_read/write(): fail
dwm_label_write(label_origin, strlen(label_origin));
label_origin =
label_origin_len = 1
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: *** ERROR *** HAL_SPI: DWM1001_RV_ERR: 1
Check Tx&Rx:
Fail
dwm_label_write(label_origin, strlen(label_origin)): fail
ERR test_label: err_cnt = 91
dwm_node_id_get(&node_id);
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: *** ERROR *** HAL_SPI: DWM1001_RV_ERR: 1
Check Tx&Rx:
Fail
dwm_node_id_get(&node_id): fail
ERR test_node_id: err_cnt = 1
Factory reset.
lmh: SPI0: Rx step 1:
lmh: SPI0: Wait 1 ms…
lmh: SPISPI0: Rx step 2:
lmh: SPI0: Wait 1 ms…
lmh: SPI0: Wait 1 ms…
lmh: *** ERROR *** HAL_SPI: DWM1001_RV_ERR: 1
Check Tx&Rx:
Fail
Wait 2000 ms for node to reset.

Hi xranger,

When you got the module from distributor, the version on board is Release 1. You may want to update it to the latest version (Release 2) from the release package provided online (https://www.decawave.com/1001-license/). Download and unpack, the image is in:
DWM1001\Factory_Firmware_Image

Best regards,
Weibo

It works by updating to 0.2hex.

Thanks a lot.