I’m currently trying to extend the range on my DWM3000. I tested the capability and it seems to be comfortable only up to ~20-30m, while I am looking for ~50m. So, I attempted to change the data rate to 850 KB/s to increase the range, but cannot seem to get it working. I assumed this was because of longer timeouts, but extending those did not seem to fix it. Any advice? Direction would be much appreciated.
Settings:
static dwt_config_t config = {
5, /* Channel number. */
DWT_PLEN_128, /* Preamble length. Used in TX only. */
DWT_PAC8, /* Preamble acquisition chunk size. Used in RX only. */
9, /* TX preamble code. Used in TX only. */
9, /* RX preamble code. Used in RX only. */
1, /* 0 to use standard 8 symbol SFD, 1 to use non-standard 8 symbol, 2 for non-standard 16 symbol SFD and 3 for 4z 8 symbol SDF type */
DWT_BR_850K, /* Data rate (TEST). */
DWT_PHRMODE_STD, /* PHY header mode. */
DWT_PHRRATE_STD, /* PHY header rate. */
(129 + 8 - 8), /* SFD timeout (preamble length + 1 + SFD length - PAC size). Used in RX only. */
DWT_STS_MODE_OFF, /* STS disabled */
DWT_STS_LEN_64, /* STS length see allowed values in Enum dwt_sts_lengths_e */
DWT_PDOA_M0 /* PDOA mode off */
};
//Timeouts:
#define POLL_RX_TO_RESP_TX_DLY_UUS 5000 // 5 ms
#define RESP_TX_TO_FINAL_RX_DLY_UUS 5000 // 5 ms
#define POLL_TX_TO_RESP_RX_DLY_UUS 5000
#define RESP_RX_TO_FINAL_TX_DLY_UUS 5000
#define RESP_RX_TIMEOUT_UUS 10000 // 10 ms
#define FINAL_RX_TIMEOUT_UUS 10000 // 10 ms
#define UWB_RESP_TIMEOUT_MAX 10000
//Original timeouts (using 6M8 data rate):
#define POLL_TX_TO_RESP_RX_DLY_UUS (300 + CPU_PROCESSING_TIME)
#define RESP_RX_TO_FINAL_TX_DLY_UUS (300 + CPU_PROCESSING_TIME)
#define RESP_RX_TIMEOUT_UUS 300
#define POLL_RX_TO_RESP_TX_DLY_UUS 900
#define RESP_TX_TO_FINAL_RX_DLY_UUS 500
#define FINAL_RX_TIMEOUT_UUS 220