being new to the community, I would like to introduce myself. I am Adrian from TU Dresden and I work with the DWM1000 module for a thesis I write to achieve ranging and positioning.
I use an Atmel microcontroller for interfacing with the DWM1000 via SPI (AtMega 328p).
Now, I am running into problems, when I try to receive packets on one side, when sending on the other.
This is how I configure my transmitter for a blink message:
- set TFLEN in TX_FCTRL to 12 bytes (blink message)
- set PRF in TX_FCTRL to 2 (64MHz PRF)
- set TXPSR and PE in TX_FCTRL to 3 and 0 respectively (preamble length of 4096)
After that, my TX_FCTRL reads: 0x00000E000C
This is then 110 kbps mode.
-> start transmission by setting TXSTART in SYS_CTRL
If I wait a little and read out the SYS_STATUS register after sending, it reads: 0x00008000F2
are all set. Especially the TX* bits are indicative of sending all the parts of the message.
This tells me, that sending was successful. Right?
Now to receiving end, which gives me the problems.
This is how I configure the registers:
- DRX_TUNE2 is set to 0x373B0296, which is a PAC size of 64 at 64 MHz PRF, suitable for a preamble length of 4096
- RXM110K was set in SYS_CFG, because I use 110 kbps mode for my testing. There is no particular reason for choosing this mode, I just thought it is more stable than faster modes.
SYS_CFG register reads: 0x00400000
-> then I start reception by setting RXENAB in the SYS_CTRL register. After this, I periodically read out the SYS_STATUS register to look for bits that change.
The problem is: when I transmit, there is no change in the status register. I always get: 0x0000820002
This indicates a timeout on the receiver (RXRFTO is set):
“This event status bit is set to indicate that a receive frame wait timeout has occurred.”
I wonder why that happens, because I set no timeout interval. I would be happy for any suggestions on solving this issue.
Thank you in advance,