I’m new in UWB, and I have a question about examples for DWM1001 modules from Github.
I want to measure the distance between two modules, and I want to achieve the largest range.
I tried to change the configuration of the DWM1000 chip, e.g. reduce the data rate from 6M8 to 110K, or increase the preamble from 128 to 1024 bits. But any of these changes stop the communication between modules.
Can somebody tell me what I’m doing wrong? And what should I change additionally to get modules work with different configurations (if it’s possible to run them with different configuration)?
Changing the channel, data rate or preamble length should not impact the good communication between the devices. You need to make sure you are using the exact same configuration on both the initiator and the responder.
Have you modified configuration for both devices ?
Yes, I’m pretty sure I’ve modified both devices. Can I change just one parameter, e.g. data rate without changing others? Or should I change all of them to make them work correctly in complex?
My current configuration is:
[code]static dwt_config_t config = {
5, // Channel number
DWT_PRF_16M, // Pulse repetition frequency
DWT_PLEN_1024, // Preamble length. Used in TX only.
DWT_PAC32, // Preamble acquisition chunk size. Used in RX only.
3, // TX preamble code. Used in TX only.
3, // RX preamble code. Used in RX only.
1, // 0 to use standard SFD, 1 to use non-standard SFD.
DWT_BR_110K, // Data rate.
DWT_PHRMODE_STD, // PHY header mode.
(1025 + 64 - 32) // SFD timeout (preamble length + 1 + SFD length - PAC size). Used in RX only.
};[/code]
I’ve tried on my side and changing the data rate or the channel does not impact the ability to range. I haven’t tried the preamble yet but it should be fine too.
This being said, I’m slightly different version of the simple example that I hope to release at some stage next week.
I wouldn’t recommend to modify the timeout as it can lead to a faulty stage quite easily if it’s not correctly used.
Maybe try to modify only the channel and see if it break the communication because it shouldn’t.
I was trying to make a debug of the modules after changing the data rate to 110K and got the following results:
The status_reg for the initiator device is always 0x028200F2, and for the receiver device it is 0x06800102.
Looks like initiator gets this status among others: SYS_STATUS_RXRFTO 0x00020000UL /* Receive Frame Wait Timeout /
And receiver gets this status: SYS_STATUS_RXPTO 0x00200000UL / Preamble detection timeout */
When I change the data rate to 850K the initiator status us the same, while receiver status is changed to 0x02806F72 which means correctly received frame.
I don’t know if that information is helpful though
I’ve tried another DWM1001-DEV modules set, and result is the same - it works only with standard settings, and if I change the data rate, communication breaks.
Can anybody test it and approve or disprove that it works with the changed settings?
I have exactly the same problem as you. When I change basically anything else other then channel, communication fails. I thought the reason is maybe the hardcoded poll and response message, but still not sure.
If you solve this problem, can you please update me with informations what was the problem.