DWM1000 巧用Status 快速Debug

Posted tuzhuke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DWM1000 巧用Status 快速Debug相关的知识,希望对你有一定的参考价值。

在Debug DWM1000 的时候,可以巧用Status 加快Debug,例如如下代码

 1 if (status_reg & SYS_STATUS_RXFCG)
 2 {
 3   ……
 4 }
 5 else
 6  {
 7     sprintf(dist_str, "%08x",status_reg);
 8     OLED_ShowString(0, 2,"            "); 
 9     OLED_ShowString(0, 2,dist_str);
10     dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR);
11 }

据正确只有一种可能,而数据接收出错,则有很多种可能,例如可能RX timeout,数据帧错误等等,不同问题Debug 出发点不一样,Rx timeout 可能是RX延时太短,或者对方没有发送数据,而帧错误可能环境差或者距离太远等等。

但是,在DWM1000 代码中,只有成功标志 SYS_STATUS_RXFCG  和错误标志集SYS_STATUS_ALL_RX_ERR

这里将status_reg 转换成16进制,然后放到OLED上显示,然后对应代码看到底是哪种错误

 

其它比较重要方法:LED灯光法,在不同代码中放置不同LED灯,通过LED灯指示来观察程序实际走向。

 

注意事项: 尽量不要将OLED显示以及串口发送数据(中断除外)放到DWM1000 主程序中,因为DWM1000 有着极高时间依赖特性,OLED 和串口发送数据会占用大量时间。 上面else 类似代码除外

 

蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 

技术分享图片

以上是关于DWM1000 巧用Status 快速Debug的主要内容,如果未能解决你的问题,请参考以下文章

DWM1000 非官方开源定位代码bitcraze

DWM1000 收发RXLED TXLED控制代码修改

DWM1000 定位操作流程--[蓝点无限]

DWM1000 测距原理简单分析

UWB DWM1000 开源项目框架 之 温度采集

DWM1000 帧过滤代码实现