I need to build an UWB application based on DW3000 chip and I would like to schedule accurate Rx. I am wondering if you can explain a Rx On fix offset delay.
First, I am asking for a Tx ASAP and then I schedule a Rx enable 2ms later. (using rx_enable(DWT_START_RX_DLY_TS mode))
I observed the Tx and Rx signals with GPIO 0 and GPIO 1.
I found that the Rx On starts 2.094ms after the beginning of the Tx frame. As the DW3000 RX/TX timing is based on the RMARKER, I can remove the SYNC + SFD time.
In accordance with my RF configuration:
- preamble repetition: 64
- sfd length: 8
- preamble symbol length: 127
—> SYNC + SFD = ~73µs
But still, the observed 2.094ms minus the 0.073ms is not equal to the 2ms RX delay asked into the cmd.
Do I miss something ? Please, can you explain this delay ?
Thank you in advance for your help.
The may be a silly question but does it actually matter?
Yes it would be nice to get detailed explanations and exact answers, good luck with that, I’ve been trying to get an explanation for how the detection threshold is calculated for years. Just a complete user manual that includes all the registers their drivers access would be a start.
But ultimately as long as it works and does what you need it’s not worth spending too much time worrying about the little details.
Are you really aiming to turn your receiver on less than 20us before you expect to receive the signal? Is it really going to ruin your power budget to turn on a few microseconds earlier? If not then by all means try to find out what’s going on but don’t spend too much time on it, it’s not worth the effort.
Also note you aren’t actually measuring when the device transmits or starts to receive. You are measuring the timings of some GPIO signals that are generated by a block of logic clocked off a seperate, lower speed clock. I wouldn’t be surprised is these signals are somewhat delayed from the actual events. Although 20us seems a larger error than I would that to explain.
In DW3000 chip you can specify offsets in between transmitted and expected to rx R-markers!
This is super cool feature.
So you TX immediately, then you set exact 2000ms of Rx wrt TX_rmarker.
On other side, you get the frame and set exat TX wrt RX r-marker!
It works brilliant to the degree that the resolution when you can set delayed TX is 8ns.
Plus from the practice - set receiver on just 15-16us before expected rx, tgat would give receiver time to “warm up”. Good luck.