51uwb.cn

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

基站0串口数据刷新慢解决方案【代码优化】

[复制链接]

73

主题

249

帖子

7065

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7065
跳转到指定楼层
楼主
发表于 2019-4-10 23:37:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
@all 在最新版代码已经更新,可以直接使用最新版代码测试。 代码关注公众号即可下载。

有同学反映串口数据发送间隔时间比OLED刷新慢,Review 代码发现这里有limitation,可以简单修改优化达到与OLED一样的刷新频率。

首先解释部分代码,代码为了实现多基站多标签功能,使用了类似分时复用以及锁的功能,具体可以参见我的博客:cnblogs.com/tuzhuke/p/10004456.html
优化1
对于基站,每个基站都有一个ID,从0开始,假如系统中有3个基站,就将代码中的宏定义ANCHOR_MAX_NUM 修改为3
  1. #define ANCHOR_MAX_NUM 3
复制代码
在实际工作中,标签发送数据给基站,实际上每个基站都可以收到标签的数据,只是有些基站不做反馈。 具体做法是这样的:标签发送数据带有序列号,序列号对ANCHOR_MAX_NUM 取模,例如序列号为10,取模后为1,那么只有ANCHOR1 处理这条信息
具体代码实现如下,即不符合的不执行。
  1. if(rx_buffer[ALL_MSG_SN_IDX]%ANCHOR_MAX_NUM != ANCHOR_IND)
  2.                 continue;
复制代码
对于测距的时候,上述方法可以很好的实现多基站多标签功能。

定位功能中,标签也会将收集到的数据发送给基站0,同样也有一个自增序列号,这条信息所有基站都会收到,只是基站0做反映。同样会走上面的判断
  1.   if(rx_buffer[ALL_MSG_SN_IDX]%ANCHOR_MAX_NUM != ANCHOR_IND)
  2.                 continue;
复制代码
此时,出现问题了,如果基站0收到信息序列号取模ANCHOR_MAX_NUM 不等于0,基站0 就不做处理,不会将这些信息发送给串口,违背了我们的意愿。所以观察到的结果是串口比OLED刷新慢。


解决方法: 标签在发送距离统计信息的时候讲序列号强制设置为0,基站0 就不会忽略这条信息了。
代码做如下修改:
  1. //only anthor0 recive angle message
  2.     angle_msg[ALL_MSG_SN_IDX] =0;
  3.     angle_msg[ALL_MSG_TAG_IDX] = TAG_ID;

  4.     dwt_writetxdata(sizeof(angle_msg), angle_msg, 0);
  5.     dwt_writetxfctrl(sizeof(angle_msg), 0);
复制代码


优化2:
从上面代码中可以看到一个比较重要的宏定义ANCHOR_MAX_NUM ,这个设定值不要小与实际基站数量。 最佳方案等于实际基站数量。
假如实际有2个基站,而这个宏定义为3,那么会出现如下情况:
对于tag 发来的信息序列号为0  1 2 3 4 ,0/3 1/4 分别有基站0和基站1接收, 而标记为2的数据谁也没有接收,白白浪费标签时间了。


回复

使用道具 举报

1

主题

10

帖子

18

积分

新手上路

Rank: 1

积分
18
沙发
发表于 2021-4-27 23:15:22 | 只看该作者
混个金币哈哈哈
回复

使用道具 举报

0

主题

19

帖子

23

积分

新手上路

Rank: 1

积分
23
板凳
发表于 2021-4-29 18:36:02 | 只看该作者
不错,期待测试
回复

使用道具 举报

0

主题

29

帖子

30

积分

新手上路

Rank: 1

积分
30
地板
发表于 2021-5-12 09:27:14 | 只看该作者
厉害啊,谢谢分享
回复

使用道具 举报

2

主题

12

帖子

87

积分

注册会员

Rank: 2

积分
87
5#
发表于 2021-6-9 10:16:24 | 只看该作者

混个金币哈哈哈
回复

使用道具 举报

0

主题

45

帖子

48

积分

新手上路

Rank: 1

积分
48
6#
发表于 2021-9-30 13:57:30 | 只看该作者
我也是混个金币,谢谢
回复

使用道具 举报

0

主题

11

帖子

15

积分

新手上路

Rank: 1

积分
15
7#
发表于 2021-10-15 18:02:45 | 只看该作者
感谢楼主的代码
回复

使用道具 举报

2

主题

11

帖子

24

积分

新手上路

Rank: 1

积分
24
8#
发表于 2021-10-21 08:20:56 | 只看该作者
混个金币哈哈哈
回复

使用道具 举报

0

主题

8

帖子

18

积分

新手上路

Rank: 1

积分
18
9#
发表于 2023-3-9 16:29:47 | 只看该作者
非常好用!感謝樓主的資訊分享!
回复

使用道具 举报

0

主题

5

帖子

16

积分

新手上路

Rank: 1

积分
16
10#
发表于 2023-3-15 16:04:05 | 只看该作者
厉害啊,谢谢分享
回复

使用道具 举报

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

本版积分规则

bphero Inc.  

GMT+8, 2024-11-22 16:34 , Processed in 0.018765 second(s), 4 queries , File On.

Powered by Discuz! X3.3

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

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