51uwb.cn

标题: [重要更新]51uwb_base code中断更新 [打印本页]

作者: 蓝点无限    时间: 2021-6-2 08:47
标题: [重要更新]51uwb_base code中断更新
在我们的51uwb base code中使用了帧过滤和中断功能,但是有客户反映,如果同一个区域单纯使用PANID区分网络,偶尔会出现相互干扰问题
这个更新主要解决这个问题。

推荐更新    :同一个区域内存在多套设备的客户
更新优先级:


在我们的代码中,当正确接收到信息,或者接收到错误信息,都会到中断函数中由软件处理。 这里有个地方就是,如果错误的信息纯让硬件彻底过滤掉,从而减少软件负担。
之前的UWB中断配置部分代码
  1. 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 情况,也会触发中断。

改进版本中断配置
  1. dwt_setinterrupt(DWT_INT_RFCG , 1);
复制代码
改进后的版本,只有接收到信息正确后才触发中断。
----------------------------------------------------------------------------------------------------------
修改测试,发现如果接收到数据包有问题,接收器就关闭了,导致多个PANID依然干扰。这个干扰不是距离异常波动,而是接收器异常会关闭。

解决办法有两个,
1 当接收器异常关闭,软件检测,重新下一轮测试。这个方法大大降低了测距效率。
2 当接收器侦测到异常关闭后重新打开。--> 查找DW1000 用户手册,发现可以通过设置RXAUTR 解决这个问题


(, 下载次数: 1034)
于是bphero_uwb.c uwb初始化代码改成如下
  1. // 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);
  2. dwt_setinterrupt(DWT_INT_RFCG , 1);
  3. dwt_setautorxreenable(1);
复制代码






作者: 藏丶宝    时间: 2021-6-9 12:54
手册是真的难啃
作者: szmcumcu    时间: 2021-9-30 13:53
非常有效,谢谢楼主的严谨与分析,赞一个
作者: 桂冠vivi    时间: 2021-11-25 18:08

感谢楼主的分享




欢迎光临 51uwb.cn (http://51uwb.cn/) Powered by Discuz! X3.3