Sniffing SP0 and SP3 frames


I am trying to implement a UWB sniffer with a DW3000 Arduino Shield attached to an ST NUCLEO F429ZI Board. The sniffer should be able to receive SP0 and SP3 packets sent by the tag and the anchor.

Basically the sniffer is working. When I configure the DW3000 by calling dwt_configure() with dwt_sts_mode_e set to DWT_STS_MODE_OFF, the sniffer detects the SP0 packets, and when set to DWT_STS_MODE_ND, it detects the SP3 packets. However, when in SP0 mode, SP3 packets cannot be detected (or rather are detected as frames with error). So I tried switching between SP0 and SP3 reception by reconfiguring the DWT 3000, which also works well.

However, there are scenarios in which I do not know whether an SP0 oder SP3 frame will be sent. As far as I understand from the API documentation, I can use the dwt_configure() method to set exactly one of the four STS modes ‘no STS’, ‘STS before PHR’, ‘STS after data’, and ‘no data mode’, but in this case it would be helpful if both ‘no STS’ and ‘no data mode’ could be set in parallel.

Is there a way to configure the DW3000 to receive both frame types? Or did I miss something and switching the STS modes is not necessary at all?

No, you cannot succesfully both frame types. In addition, you need to know the correct STS…

What you can do - is to set to receive SP0 and guess on error frames that those are either sp3 or sp1.
You also can always timestamp on Ipatov or roughly on mcu.
That would give you a time picture of the protocol.