UART Error after dwm_usr_data_write

Hi,

I’m trying to use the ‘dwm_usr_data_write’ function over serial, but after setting values a few times, I receive this error from the UART:

app_error_print():

Fault identifier:  0x4001

Program counter:   0x0

Fault information: 0x2000FF2C

Line Number: 122

File Name:   /data/git/d14_final_dcdc_fix/910-argo/src/lib/serial/serial.c

Error Code:  0x11

This error is printed in ASCII text despite not running the UART in Shell mode.

I am using the USB UART interface on the DWM1001-DEV, with the following settings:
Baud: 115200
Data Bits: 8
Stop Bits: 1
Parity: None
Flow/Handshake: None

I’m sending varying user data payloads following the documented TLV values for this operation:
dwm_usr_data_write
0x1A 0x22 0x00 [33 bytes of payload data]

And most of the time, the expected response is observed:
0x40 0x01 0x00
(an ‘error code’ response, with the “OK” code)

Occasionally however, the response begins with
0x61 0x70 0x70…
Which, according to the docs, 0x61 is not a valid TLV code. However, interpreting the entire response data starting with 0x61 0x70 0x70 as ASCII produces the error stated above.

Once this error appears, any writes to the UART are still accepted, but no more data can be read without closing and restarting the connection. I have also observed that, depending on the exact configuration, reads will resume after 10-12 seconds if no data is written to the UART after the error is printed.

If any data is written to UART after that message, or if the tag is configured with “Location Engine”, “Responsive Mode” or “Stationary Detection” enabled, then the UART reads appear to lock up indefinitely until i reconnect the UART or press the Reset button on the DWM1001-DEV.

There does not appear to be any consistency to trigger this issue, other than to repeatedly send dwm_usr_data_write messages. I have also tried sending shorter data payloads, and changing the “overwrite” flag.

I have observed this behaviour across two different devices.

I have also observed that this issue is ONLY ever triggered if the device has an active UWB connection (if UWB is off or passive, all writes are accepted without issue).

Below is the system info output of the device I am currently using:
DWM1001 TWR Real Time Location System

 Copyright :  2016-2019 LEAPS and Decawave
 License   :  Please visit https://decawave.com/dwm1001_license
 Compiled  :  Mar 27 2019 03:35:59

 Help      :  ? or help

dwm> si
[001638.430 INF] sys: fw2 fw_ver=x01030001 cfg_ver=x00010700
[001638.430 INF] uwb0: panid=x873E addr=xDECAD75E46C44986
[001638.440 INF] mode: tn (pasv,twr,lp,nole)
[001638.440 INF] uwbmac: connected
[001638.440 INF] uwbmac: bh disconnected
[001638.450 INF] cfg: sync=0 fwup=0 ble=0 leds=1 le=0 lp=1 stat_det=0 mode=0 upd_rate_norm=1 upd_rate_stat=1 label=DW4986
[001638.460 INF] enc: off
[001638.460 INF] ble: addr=CA:BE:9F:92:57:60

Any help would be appreciated :slight_smile: