I am attempting to implement low power listening. I am using a custom development board that has a DWM1000 module on it, and DW1000 driver version 2.04.
After successfully getting the low-power listening example (driver package examples 8a, 8b) working, I wanted to try and tweak some settings to optimize the mode for my particular use case. I found that there appears to be a minimum “listen” time (consisting of the two listens, or “preamble samples” as the DW1000 user manual 2.18 calls them). If this minimum listen period is not met, it will result in the device not resuming low power listening after the long sleep period.
It appears to be a combination of three different configured values, the PAC size (as set in DRX_TUNE2), the preamble detect time (DRX_PRETOC), and the snooze time (SNOZ_TIM). When I use the values as configured in the example, everything works, but when I try to use the following configuration, the device does one low power listening cycle, goes into sleep, and then does not wake again for another low-power listening cycle:
- PAC size: 8
- preamble sniff time: 2 PACs (configured value of 1 for DRX_PRETOC)
- snooze time of 3 (configured value of 2 for SNOZ_TIM)
If I change any of these three configuration values such that the resulting “listen” time is long enough (exactly how long, I haven’t narrowed down yet), then I see the expected behavior, where the device continues low-power listening mode after the first long sleep.
Is this limitation expected? If so, is there any workaround? And if there is no workaround, can the limitation be defined clearly enough, such that it can be avoided in all cases?
I am trying to optimize both battery life and average current consumption on very small time-scales, so it is important to me to be able to use as short of a listening window as possible.