51uwb.cn

 找回密码
 立即注册
查看: 3391|回复: 3
打印 上一主题 下一主题

[重要更新]51uwb_base code中断更新

[复制链接]

35

主题

965

帖子

4052

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4052
跳转到指定楼层
楼主
发表于 2021-6-2 08:47:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在我们的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 解决这个问题



于是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);
复制代码





回复

使用道具 举报

0

主题

29

帖子

30

积分

新手上路

Rank: 1

积分
30
沙发
发表于 2021-6-9 12:54:02 | 只看该作者
手册是真的难啃
回复

使用道具 举报

0

主题

45

帖子

48

积分

新手上路

Rank: 1

积分
48
板凳
发表于 2021-9-30 13:53:49 | 只看该作者
非常有效,谢谢楼主的严谨与分析,赞一个
回复

使用道具 举报

0

主题

5

帖子

16

积分

新手上路

Rank: 1

积分
16
地板
发表于 2021-11-25 18:08:15 | 只看该作者

感谢楼主的分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

bphero Inc.  

GMT+8, 2024-5-4 03:50 , Processed in 0.014531 second(s), 6 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表