51uwb.cn

标题: 测距计算距离的时间戳打印错误问题 [打印本页]

作者: 77296619    时间: 2021-10-19 10:57
标题: 测距计算距离的时间戳打印错误问题
我使用的是基于DECA WAVE Release修改的代码,测距流程几乎没有变动。但是为何我使用串口查看时间戳却是错误的?

附上我接收到final帧计算距离,并且打印的代码。这里的printf2是重写的打印函数。


这样写的目的是验证前两次打印和后两次打印数据。我输出的顺序不同,结果却不一样?
  1. Ra = (int64)((anchorRespRxTime - tagPollTxTime) & MASK_40BIT);
  2.                                 Db = (int64)((inst->txu.anchorRespTxTime - inst->tagPollRxTime) & MASK_40BIT);

  3.                                 // response final round trip delay time is calculated as
  4.                                 // (tagFinalRxTime - anchorRespTxTime) - (tagFinalTxTime - anchorRespRxTime)
  5.                                 Rb = (int64)((tagFinalRxTime - inst->txu.anchorRespTxTime) & MASK_40BIT);
  6.                                 Da = (int64)((tagFinalTxTime - anchorRespRxTime) & MASK_40BIT);

  7.                                 RaRbxDaDb = (((double)Ra))*(((double)Rb))
  8.                                 - (((double)Da))*(((double)Db));

  9.                                 RbyDb = ((double)Rb + (double)Db);

  10.                                 RayDa = ((double)Ra + (double)Da);

  11.                                 //time-of-flight
  12.                                 inst->tof = (int64) ( RaRbxDaDb/(RbyDb + RayDa) );
  13.                                                                 uwb_fppl = dwGetReceivePower();
  14.                                                                
  15.                                 printf2("tagPollTxTime %16X, tagPollRxTime %16X \r\n",tagPollTxTime,inst->tagPollRxTime) ;
  16.                                                                 printf2("anchorRespTxTime %16X, anchorRespRxTime %16X \r\n",inst->txu.anchorRespTxTime,anchorRespRxTime) ;
  17.                                                                 printf2("tagFinalTxTime %16X, tagFinalRxTime %16X \r\n",tagFinalTxTime,tagFinalRxTime) ;
  18.                                                                
  19.                                                                 printf2("tagPollTxTime %16X, tagPollRxTime %16X \r\n",tagPollTxTime,inst->tagPollRxTime) ;
  20.                                                                 printf2("anchorRespTxTime %16X, anchorRespRxTime %16X \r\n",inst->txu.anchorRespTxTime,anchorRespRxTime) ;
  21.                                                                 printf2("tagFinalTxTime %16X, tagFinalRxTime %16X \r\n\r\n",tagFinalTxTime,tagFinalRxTime) ;
  22.                                                                
  23.                                 printf2("anchorRespRxTime %16X, tagPollTxTime %16X \r\n",anchorRespRxTime,tagPollTxTime) ;
  24.                                                                 printf2("tagFinalTxTime %16X, anchorRespRxTime %16X \r\n",tagFinalTxTime,anchorRespRxTime) ;
  25.                                                                 printf2("tagFinalTxTime %16X, tagPollTxTime %16X \r\n",tagFinalTxTime,tagPollTxTime) ;

  26.                                 printf2("anchorRespTxTime %16X, tagPollRxTime %16X \r\n",inst->txu.anchorRespTxTime,inst->tagPollRxTime) ;
  27.                                                                 printf2("tagFinalRxTime %16X, anchorRespTxTime %16X \r\n",tagFinalRxTime,inst->txu.anchorRespTxTime) ;
  28.                                                                 printf2("tagPollRxTime %16X, tagFinalRxTime %16X \r\n",inst->tagPollRxTime,tagFinalRxTime) ;
  29.                                                                
  30.                                 printf2("Ra %8x, Rb %8x, Da %8x, Db %8x, tof %8x   \r\n ",Ra,Rb,Da,Db,inst->tof);

  31.                                 reportTOF(inst);
  32.                                 inst->newrange = 1;
复制代码


测距都是行得通的。也是有距离值的,但是不知道这个距离是如何算出来的。为何打印的顺序会导致输出的结果不同?

还有一个问题是,inst->txu.anchorRespTxTime,也就是respond的发送时间戳是在哪里保存的,在代码中没看到赋值。

图片附上收到的数据示例

作者: 77296619    时间: 2021-10-19 10:59
图片倒数第二行的tof和distance是在reportTOF函数中的计算的tof和distance
作者: 蓝点无限    时间: 2021-10-24 21:25
77296619 发表于 2021-10-19 10:59
图片倒数第二行的tof和distance是在reportTOF函数中的计算的tof和distance

原版代码,友情帮顶下




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