51uwb.cn

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

DWM1000 收发数据总是超时

[复制链接]

7

主题

37

帖子

78

积分

注册会员

Rank: 2

积分
78
跳转到指定楼层
楼主
发表于 2020-7-13 18:07:55 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
最近刚用uwb模块开始做项目,遇到了问题,不知道是不是官方的bug,也是用 官方的api例程, A标签往B基站发送poll包, B基站可以接收到poll包,但是延迟发送respone包的时候,api函数总是返回dwt_error,供应商告诉我,不要用hal库,也不要用st以外的板子,换了stm32f103(标准库)和stm32f429(hal库),发现还是不行,厂商说不要去修改那些时间延迟,个人感觉,每一次spi通信时间都是us级别,按理来说不加大延迟,一定会是失败的,不知道是不是这个原因,我的SPI的速率都是16m,是否要调整成和官方说的要20m以上,按供应商说的,把respone包调整为马上发送,但是 A标签收不到respone包,接收总是超时,对应的 A标签接收respone包的延迟是否要大于 B基站 从接收poll包到发送respone的时间,我看蓝点大佬的视频,延迟都是ms级别。
回复

使用道具 举报

7

主题

37

帖子

78

积分

注册会员

Rank: 2

积分
78
沙发
 楼主| 发表于 2020-7-13 21:03:32 | 显示全部楼层
蓝点无限 发表于 2020-7-13 19:46
你用的是官方源码吗?
不应该有这么大延迟的,我们测距一次,三四条信息下来2ms左右。

你们填写那几个延迟参数都是多少啊,用的是官方API,模块初始化都没问题,就是交互的时候出问题了。尤其是收到poll包,发送respone的时候,一直都是发送失败,官方说法就是超过规定的延迟时间了,如果设置马上发送, 标签这里就收不到回包,提示超时
回复

使用道具 举报

7

主题

37

帖子

78

积分

注册会员

Rank: 2

积分
78
板凳
 楼主| 发表于 2020-7-14 09:20:44 | 显示全部楼层
蓝点无限 发表于 2020-7-14 08:47
可能你timeout设置调小了。 这样就不会超时了

我看标签这边dwt_setrxtimeout(2700),如果写成0,不是时间更短了吗,还是我理解有问题
回复

使用道具 举报

7

主题

37

帖子

78

积分

注册会员

Rank: 2

积分
78
地板
 楼主| 发表于 2020-7-14 09:21:11 | 显示全部楼层
haonan1211 发表于 2020-7-14 08:57
我是延时发送一直发送失败 ,不知道楼主解决了吗

没呀,还在不断的调试中
回复

使用道具 举报

7

主题

37

帖子

78

积分

注册会员

Rank: 2

积分
78
5#
 楼主| 发表于 2020-7-14 09:22:33 | 显示全部楼层
gi7878 发表于 2020-7-14 09:20
我看标签这边dwt_setrxtimeout(2700),如果写成0,不是时间更短了吗,还是我理解有问题

Poll接收没问题,发送respone包的时候ret = dwt_starttx(DWT_START_TX_DELAYED | DWT_RESPONSE_EXPECTED); 这里ret一直是error
回复

使用道具 举报

7

主题

37

帖子

78

积分

注册会员

Rank: 2

积分
78
6#
 楼主| 发表于 2020-7-14 09:25:16 | 显示全部楼层
蓝点无限 发表于 2020-7-14 08:47
可能你timeout设置调小了。 这样就不会超时了

而且我还很容已出现一个问题就是,system_status有时候会报SYS_STATUS_CLKPLL_LL
回复

使用道具 举报

7

主题

37

帖子

78

积分

注册会员

Rank: 2

积分
78
7#
 楼主| 发表于 2020-7-14 11:23:51 | 显示全部楼层
蓝点无限 发表于 2020-7-14 10:00
延时时间太短了,导致配置tx发送命令的时候,延时已经过去。导致tx fifo 发不出去了。
问题这么多,赶快 ...

延迟我也调整过到ms级别以上但是还是失败,不过每次过17s,就会提示发送成功
回复

使用道具 举报

7

主题

37

帖子

78

积分

注册会员

Rank: 2

积分
78
8#
 楼主| 发表于 2020-7-14 16:58:55 | 显示全部楼层
蓝点无限 发表于 2020-7-14 15:46
17s 这么长,那肯定是下一轮了吧,好好检查code吧

参考蓝点哥的,标签这边用的延迟已经没问题了#if 0
                /* Compute final message transmission time. See NOTE 10 below. */
                final_tx_time = (resp_rx_ts + (RESP_RX_TO_FINAL_TX_DLY_UUS * UUS_TO_DWT_TIME)) >> 8;
                dwt_setdelayedtrxtime(final_tx_time);

                /* Final TX timestamp is the transmission time we programmed plus the TX antenna delay. */
                final_tx_ts = (((uint64)(final_tx_time & 0xFFFFFFFEUL)) << 8) + TX_ANT_DLY;
#else
                                final_tx_time = dwt_readsystimestamphi32()+ 0x17cdc00/10;
                dwt_setdelayedtrxtime(final_tx_time);
                final_tx_ts = (((uint64)(final_tx_time & 0xFFFFFFFEUL)) << 8);
#endif


不过基站这边就对接收final超时了,而且基站也是用ret = dwt_starttx(DWT_START_TX_IMMEDIATE | DWT_RESPONSE_EXPECTED);发送respone包,如果标签也是用ret = dwt_starttx(DWT_START_TX_IMMEDIATE );发送final包,交互正常实现,但是距离测出来都是不准的。 感觉理目标就差一点点了。就是不知道基站这边到底哪里出问题了,基站用的F429的hal库
回复

使用道具 举报

7

主题

37

帖子

78

积分

注册会员

Rank: 2

积分
78
9#
 楼主| 发表于 2020-7-15 10:25:49 | 显示全部楼层
蓝点无限 发表于 2020-7-15 10:09
和stm32 hal 库没有关系的,我们的开源框架就是用的hal库
肯定是uwb 的逻辑上有问题,你再好好查下代码 ...

好的谢谢蓝点哥,昨晚查官方论坛,还是那几个参数设置的问题,这里有个疑问就是,DWM1000里的uus是 微秒的意思吗,还是指的是皮秒, 官网的说法都是微秒
回复

使用道具 举报

7

主题

37

帖子

78

积分

注册会员

Rank: 2

积分
78
10#
 楼主| 发表于 2020-7-15 14:24:13 | 显示全部楼层
蓝点无限 发表于 2020-7-15 10:09
和stm32 hal 库没有关系的,我们的开源框架就是用的hal库
肯定是uwb 的逻辑上有问题,你再好好查下代码 ...

发现问了,dwt_initialise(DWT_LOADUCODE),这里原来填的是DWT_LOADNONE,所以导致没有装载LDE算法,现在基站解决了,就剩下TX端,TX端,这里接收到respose包后,get_tx_timestamp_u64()得到为0,测试了一下,如果一直发送poll,这个get_tx_timestamp_u64是会变化的,现在还没找到原因为什么是0
回复

使用道具 举报

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

本版积分规则

bphero Inc.  

GMT+8, 2024-5-9 13:22 , Processed in 0.016784 second(s), 5 queries , File On.

Powered by Discuz! X3.3

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

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