UWB定位产品开发爬坑记录-2

最近的几个问题确实让人头疼,解决起来耗时长,过程也相当曲折。

UWB定位产品开发爬坑记录-2

问题一:丢包率高。

测距丢包率一直高达40%以上。幸运的是,硬件同事没有推卸责任,发现了硬件PA的问题,重新修改了一版硬件后,丢包率确实大幅下降,但还是需要有一群可靠的伙伴。

当然,软件方面也做了很多调整,包括丢包重试和sniffer模式的实现。在硬件同事提供的稳定版本基础上,我们实现了一个单发单收的版本,丢包率成功控制在1%以下。

问题二:待机功耗高。

每2秒定位一次,5分钟的平均功耗一直维持在2mA左右,而竞品在相同条件下仅为800微安。通过功耗仪测试了多个版本,抓取波形并分析工作时长,然后对比竞品的工作时长,找到了导致功耗高的原因,主要有以下几点:

第一个:TX工作时长约为3ms,根据官方手册,如果工作速率为110kbps,TX时间确实会在3ms左右。

UWB定位产品开发爬坑记录-2

第二个: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. */
};

官方示例提供的配置:

UWB定位产品开发爬坑记录-2UWB定位产品开发爬坑记录-2

最终成功降低功耗的配置如下:

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. */
};

最后,还有一个基站的吞吐量需要提升,继续努力!

关键词:测试

网友留言(0 条)

发表评论