|
在我们的51uwb base code中使用了帧过滤和中断功能,但是有客户反映,如果同一个区域单纯使用PANID区分网络,偶尔会出现相互干扰问题。
这个更新主要解决这个问题。
推荐更新 :同一个区域内存在多套设备的客户。
更新优先级:高
在我们的代码中,当正确接收到信息,或者接收到错误信息,都会到中断函数中由软件处理。 这里有个地方就是,如果错误的信息纯让硬件彻底过滤掉,从而减少软件负担。
之前的UWB中断配置部分代码
- dwt_setinterrupt(DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO /*| DWT_INT_RXPTO*/), 1);
复制代码 除了配置正确接收到信息以外,其它ERROR 情况,也会触发中断。
改进版本中断配置
- dwt_setinterrupt(DWT_INT_RFCG , 1);
复制代码 改进后的版本,只有接收到信息正确后才触发中断。
----------------------------------------------------------------------------------------------------------
修改测试,发现如果接收到数据包有问题,接收器就关闭了,导致多个PANID依然干扰。这个干扰不是距离异常波动,而是接收器异常会关闭。
解决办法有两个,
1 当接收器异常关闭,软件检测,重新下一轮测试。这个方法大大降低了测距效率。
2 当接收器侦测到异常关闭后重新打开。--> 查找DW1000 用户手册,发现可以通过设置RXAUTR 解决这个问题。
于是bphero_uwb.c uwb初始化代码改成如下
- // dwt_setinterrupt(DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO /*| DWT_INT_RXPTO*/), 1);
- dwt_setinterrupt(DWT_INT_RFCG , 1);
- dwt_setautorxreenable(1);
复制代码
|
|