51uwb.cn

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

bp30_multianthor标签侧接收延时问题

[复制链接]

5

主题

16

帖子

43

积分

新手上路

Rank: 1

积分
43
跳转到指定楼层
楼主
发表于 2023-4-23 09:44:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
bp30_multianthor,多基站定时中,标签的发射包括广播查询周边基站、与基站进行测距两类发射,代码中,两类发射的延时设置是不一样的。
请问:
     1、两处的延时为什么不一样,且差距这么大
     2、distance_seqnum 为什么不能取255


// * 说明    : 发送broadcast信息(B信息)给所有基站
void BPhero_TAG_Broadcast(void){
     ...
    dwt_enableframefilter(DWT_FF_DATA_EN);        //启动帧过滤功能
    dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS*10);//设定接收延时函数
    dwt_rxenable(0);//启动接收机

    //sequence控制
    if(++distance_seqnum == 255)
        distance_seqnum = 0;    // seqnum有什么特殊含义吗,为什么不能取255

}


// * 说明    : 发送Poll信息(P信息)给特定地址基站启动测距
void BPhero_Distance_Measure_Specail_ANTHOR(void){

     ......
    dwt_enableframefilter(DWT_FF_DATA_EN);        //启动帧过滤功能
    dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS);//设定接收延时函数
    dwt_rxenable(0);//启动接收机
    //sequence控制
    if(++distance_seqnum == 255)
        distance_seqnum = 0;

}

回复

使用道具 举报

35

主题

1053

帖子

4531

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4531
沙发
发表于 2023-4-23 21:57:22 | 只看该作者
  1、两处的延时为什么不一样,且差距这么大
--> 理论上都可以使用RESP_RX_TIMEOUT_UUS
     2、distance_seqnum 为什么不能取255
--> 可以最大取到255,seq是一个uint8 型数据
回复

使用道具 举报

5

主题

16

帖子

43

积分

新手上路

Rank: 1

积分
43
板凳
 楼主| 发表于 2023-4-24 17:47:24 | 只看该作者
我这边按demo项目中的方式进行测距:
标签侧: 标签检查周边基站列表是否有数量足够(4个),不够的话发一个广播(目标址0xFFFF),然后切到接收模式;否则进入循环poll模式;
基站侧: 在中断中进行接收处理,如果收到广播信息,就返回一个简单应答; 如果是poll或fianl就作其他相应的处理。

现在碰到的问题是:标签发送广播--->基站收到了广播应答---->标签侧(延时RESP_RX_TIMEOUT_UUSX10)经常收不到某基站的应答信息,下一轮继续发广播我在标签发广播/基站收到广播应答/标签收到应答后做了调试输出(都是通讯完成后,不会影响uwb通讯)


标签侧不是一直收不到,有时候好多轮后标签又能收到应答所基站加入到列表中。
从日志来看,问题基本上都是基站能收到标签的广播,但标签收不到基站的应答。这种现象不是偶发,似乎与距离有关,日志来看大部分就是基站能收到标签,标签收不到基站。
基站/标签的代码中关于uwb的配置是一样的,但基站和标签用了两款不同的mcu芯片。

请问,这种发射接收失败与什么有关,如果要调整,应该调整什么参数。
回复

使用道具 举报

35

主题

1053

帖子

4531

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4531
地板
发表于 2023-4-24 21:15:07 | 只看该作者
admy 发表于 2023-4-24 17:47
我这边按demo项目中的方式进行测距:
标签侧: 标签检查周边基站列表是否有数量足够(4个),不够的话发 ...

检查下功率配置函数是否已经做了修正,修正后的功率设置函数如下:
  1. void dwt_SetTxPower(dwt_config_t *config)
  2. {
  3.     uint32 power = 0;
  4.     dwt_txconfig_t  configTX;

  5.     configTX.PGdly =  0xc2;

  6.     //firstly check if there are calibrated TX power value in the DW1000 OTP
  7.     // power = dwt_getotptxpower(config->pulseRepFreq, config->chan);

  8.     if((power == 0x0) || (power == 0xFFFFFFFF)) //if there are no calibrated values... need to use defaults
  9.     {
  10.         //  power = txSpectrumConfig[config->chan].txPwr[config->prf - DWT_PRF_16M];
  11.     }
  12.     //Configure TX power
  13.     //configTX->power = 0xEFEFEFEF;
  14.     configTX.power = 0x1F1F1F1F;

  15.     //configure the tx spectrum parameters (power and PG delay)
  16.     dwt_configuretxrf(&configTX);
  17. }
复制代码
之前有问题的函数,在ST MCU上影响不大,有个客户反应在GD上基本无法使用,导致距离异常。

回复

使用道具 举报

5

主题

16

帖子

43

积分

新手上路

Rank: 1

积分
43
5#
 楼主| 发表于 2023-4-25 19:28:45 | 只看该作者
我的代码是基于BPHero_UWB_Location_SourceCode_V3.1_16MHz_V3.01 进行修改的,deca_device文件中没有dwt_SetTxPower函数。

在bp30_multianthor项目源码的deca_device.c源码中找到了这个函数。 比较了两套源码的这个文件,主要差别好象就是这个函数。直接替换了这个文件,另外修改了头文件,在uwb初始化中加入了对这个函数的引用。

系统编译运行均正常,但好象没什么明显效果(现象依然存在,通讯中断的几率是不是降低了说不清楚)。

是否还有其他参数需要调整?


回复

使用道具 举报

35

主题

1053

帖子

4531

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4531
6#
发表于 2023-4-26 23:03:46 | 只看该作者
admy 发表于 2023-4-25 19:28
我的代码是基于BPHero_UWB_Location_SourceCode_V3.1_16MHz_V3.01 进行修改的,deca_device文件中没有dwt_S ...

稍微理一下,你现在遇到的问题,是用我们bp30_multianthor 开源代码遇到问题,还是自己用BPHero_UWB_Location_SourceCode_V3.1_16MHz_V3.01 修改遇到问题了?

可以详细给出基于那套代码修改,具体修改了那些东西吗?
回复

使用道具 举报

5

主题

16

帖子

43

积分

新手上路

Rank: 1

积分
43
7#
 楼主| 发表于 2023-4-27 08:45:23 | 只看该作者
是参考两套系统重写的代码,移置到了沁恒的芯片上,需求是多基站/多标签应用,目前采用的twr测距方案(前面提了个问题,你这边建议用tdma,还没开始研究),各个基站通过tcp向上位机上报,上位进行定位计算。

uwb设备的初始化,主要是参考BPHero_UWB_Location_SourceCode_V3.1_16MHz_V3.01 做的,后来结构也调整了一些。
测距通讯是参考BPHero_UWB_Location_SourceCode_V3.1_16MHz_V3.01 实现的,用中断方式进行数据接收处理。
相对于参考源码,主要的修改是基站/标签分别采用了不同的PANID, 目的是标签发的广播只被基站接收,不要被标签收到的。通讯没问题,是不是起了作用对效率有什么影响没验证过。

系统能跑起来,只是有时通讯会失败。在标签广播查周边基站(1)、基站收到广播应答(2)、以及标签收到新基站应答(3)这几处加了串口日志输出(日志都是在发射完成后输出的,不影响uwb通讯)
根据日志看到的情况,上面的通讯过程中,(3)处最容易没有响应,感觉象是基站的发射(标签接收)成功率低于标签发射(基站接收),基站和标签用的是不同芯片,知道是否有参考调整设备的发射功率或接收灵敏度。


回复

使用道具 举报

35

主题

1053

帖子

4531

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4531
8#
发表于 2023-4-27 22:04:38 | 只看该作者
admy 发表于 2023-4-27 08:45
是参考两套系统重写的代码,移置到了沁恒的芯片上,需求是多基站/多标签应用,目前采用的twr测距方案(前面 ...

基站和标签用的是不同芯片? 你说的是uwb 模组不同吗? 不是一批货?
可能存在一定风险,不同匹配产品uwb 连接的晶振有偏差,导致通信异常。我们之前也有遇到过,这个时候需要通过调整 dwt_xtaltrim(dw1000local.xtrim); 进行对齐。微调是一个比较费力的过程。

建议你项目前期不用混用模组,以防这种问题出现。
回复

使用道具 举报

5

主题

16

帖子

43

积分

新手上路

Rank: 1

积分
43
9#
 楼主| 发表于 2023-4-28 09:41:23 | 只看该作者
UWB模组是一样的,mcu芯片不一样(同一厂商,wch),基站侧芯片带有以太网口。
回复

使用道具 举报

1

主题

2

帖子

100

积分

官方会员

Rank: 8Rank: 8

积分
100
QQ
10#
发表于 2023-7-12 09:55:10 | 只看该作者
admy 发表于 2023-4-24 17:47
我这边按demo项目中的方式进行测距:
标签侧: 标签检查周边基站列表是否有数量足够(4个),不够的话发 ...

楼主解决了吗,我碰到的问题是接收机第二次接收失败,消息也都是广播的,其他基站能接受到,就标签接收不到了
回复

使用道具 举报

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

本版积分规则

bphero Inc.  

GMT+8, 2024-11-23 04:09 , Processed in 0.015713 second(s), 4 queries , File On.

Powered by Discuz! X3.3

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

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