DWM3000 TX timestamp byte stays the same during the entire operation

Hello, I am currently working with DWM3000 and I am trying to test the different modes of operation. When in RX, the module retrieves the frames as expected and I can extract the timestamps, which look fine to me, as they increment on a similar scale (the TX is transmitted periodically). On the other side though, the TX has some issues. The frame is sent correctly, no issues there, but when trying to read the TX timestamp (via dwm_readtxtimestamp()), the first byte in the timestamp buffer seem to always be 0x01, no matter how long I keep the TX on. Note that I tried implementing this both with polling and with callbacks, both throwing the same issues. Might there be configuration issues? Has anyone encountered a similar problem?

  • example RX buffers (base 10):
    rx: 217 121 203 123 059
    rx: 228 169 032 073 074
    rx: 195 069 022 041 089
    rx: 166 216 166 009 104

  • example TX buffers (base 10):
    tx: 001 038 049 125 059
    tx: 001 158 094 235 118
    tx: 001 206 202 219 099

Note that the first byte always stays 0x01.
Edit: after trying reading directly from the register address (bypassing the API), I can confirm that the value of the byte never changes.

Is your TX code going to the deep sleep and then waking up to TX? If so, then on wake up the clock counter is reset. That can explain the behavior. Can you also check the description of dwt_read_txtimestamp() ? Does it read 4 or 5 bytes ?

I got similar problem using DMW3000 and ds_twr exmaples.
I checked a frames sending from initiator to responder on the last round and here what I got:
Here is a TX final message which is prepared by initiator:
initiator_live_expre
And here is a message which responder got:
responder_rx_buff
Using red color I marked bytes which have a timestamps from initiator.
My topic: