最近的几个问题确实让人头疼,解决起来耗时长,过程也相当曲折。
问题一:丢包率高。
测距丢包率一直高达40%以上。幸运的是,硬件同事没有推卸责任,发现了硬件PA的问题,重新修改了一版硬件后,丢包率确实大幅下降,但还是需要有一群可靠的伙伴。
当然,软件方面也做了很多调整,包括丢包重试和sniffer模式的实现。在硬件同事提供的稳定版本基础上,我们实现了一个单发单收的版本,丢包率成功控制在1%以下。
问题二:待机功耗高。
每2秒定位一次,5分钟的平均功耗一直维持在2mA左右,而竞品在相同条件下仅为800微安。通过功耗仪测试了多个版本,抓取波形并分析工作时长,然后对比竞品的工作时长,找到了导致功耗高的原因,主要有以下几点:
第一个:TX工作时长约为3ms,根据官方手册,如果工作速率为110kbps,TX时间确实会在3ms左右。
第二个:RX时间过长。
通过对比分析,发现是我们的配置导致的。修改前的配置如下:
dwt_config_t config ={ 2, /* Channel number. */ DWT_PRF_64M, /* Pulse repetition frequency. */ DWT_PLEN_1024, /* Preamble length. Used in TX only. */ DWT_PAC32, /* 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 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. */ };
官方示例提供的配置:
最终成功降低功耗的配置如下:
dwt_config_t config ={ 2, /* Channel number. */ DWT_PRF_64M, /* Pulse repetition frequency. */ 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 SFD, 1 to use non-standard SFD. */ DWT_BR_6M8, /* Data rate. */ DWT_PHRMODE_STD, /* PHY header mode. */ (129 + 8 - 8) /* SFD timeout (preamble length + 1 + SFD length - PAC size). Used in RX only. */ };
最后,还有一个基站的吞吐量需要提升,继续努力!
以上就是UWB定位产品开发爬坑记录-2的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号