I have been using the sample code from the Makerfabs-ESP32-UWB-DW3000-main.zip, namely ex_01a_simple_tx and ex_02a_simple_rx. I can get this working on my 2 devices with the default settings of channel 5. When I attempt to change the channels to 9, then the dwt_configure function fails on the upload of the code. Any ideas what to try?
I seem to be getting a PLL locking error. I have tried most of the sample configs from the Arduino dw3000 libraries, located in the dw3000_config_options.cpp. But it always fails. Anyone successful with this?
dwt_config_t config_options = {
9, /* Channel number. /
DWT_PLEN_1024, / Preamble length. Used in TX only. /
DWT_PAC8, / Preamble acquisition chunk size. Used in RX only. /
10, / TX preamble code. Used in TX only. /
10, / RX preamble code. Used in RX only. /
3, / 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_6M8, / Data rate. /
DWT_PHRMODE_STD, / PHY header mode. /
DWT_PHRRATE_STD, / PHY header rate. /
(1024 + 1 + 8 - 8), / SFD timeout (preamble length + 1 + SFD length - PAC size). Used in RX only. /
DWT_STS_MODE_1, / Mode 1 STS enabled /
DWT_STS_LEN_64, / STS length*/
DWT_PDOA_M0 /* PDOA mode off */
};
As a reminder, I maintain some unofficial notes on using non-Qorvo DW3000 drivers here: DW3000_notes.md · GitHub
I don’t know why that particular driver would be failing in that particular case, but if you find a solution, tips, or gotchas, I’m happy to add notes to that gist!
You could try to raise MAX_RETRIES_FOR_PLL in dw3000_device_api.h. Set it to 60 for example.
This worked, thanks RogueModron