1
zhyinch
2019-12-19 73722f699b1f8d5badccc9c5e5171bb633ad4fe4
Ô´Âë/ºËÐİå/Src/application/dw_app.c
@@ -298,7 +298,7 @@
      }
      tyncpoll_time=(tagslotpos-1)*slottime;
   }
   mainbase_id=minid;
   mainbase_id=0;//minid;
}
u8 FindNearBasePos(u16 baseid)
@@ -383,7 +383,7 @@
                     dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG | SYS_STATUS_TXFRS);//清楚寄存器标志位
                     frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFLEN_MASK;   //获得接收到的数据长度
                     dwt_readrxdata(rx_buffer, frame_len, 0);   //读取接收数据
                     dwt_setrxtimeout(DELAY_BETWEEN_TWO_FRAME_UUS+120);//设定接收超时时间,0位没有超时时间
                     //dwt_setrxtimeout(DELAY_BETWEEN_TWO_FRAME_UUS*(nearbase_num+1-recbase_num)+10);//设定接收超时时间,0位没有超时时间
                     dwt_rxenable(0);//打开接收
                     if (rx_buffer[MESSAGE_TYPE_IDX] == NEAR_RESPONSE&&!memcmp(&rx_buffer[TAG_ID_IDX],&dev_id,2)) //判断接收到的数据是否是response数据
                     {   u16 rec_nearbaseid,rec_nearbasepos;
@@ -412,7 +412,7 @@
                           ////////////////////////////
                           mainbase_lost_count=0;
                           memcpy(&mainbase_dist,&rx_buffer[DIST_IDX],4);
                           final_tx_time = (resp_rx_ts + ((RESP_RX_TO_FINAL_TX_DLY_UUS+DELAY_BETWEEN_TWO_FRAME_UUS*nearbase_num+130) * UUS_TO_DWT_TIME)) >> 8;
                           final_tx_time = (resp_rx_ts + ((RESP_RX_TO_FINAL_TX_DLY_UUS+DELAY_BETWEEN_TWO_FRAME_UUS*nearbase_num+1300) * UUS_TO_DWT_TIME)) >> 8;
                           dwt_setdelayedtrxtime(final_tx_time);//设置final包发送时间T5
                           final_tx_ts = (((uint64_t)(final_tx_time & 0xFFFFFFFE)) << 8) + TX_ANT_DLY;//final包实际发送时间是计算时间加上发送天线delay
                           final_msg_set_ts(&tx_near_msg[FINAL_MSG_POLL_TX_TS_IDX], poll_tx_ts);//将T1,T4,T5写入发送数据
@@ -613,13 +613,13 @@
            dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR);
         }
}
u8 misdist_num;
void Anchor_RecNearPoll(u8 ancrec_nearbasepos) //0 mainbase  1 first near_base
{
         tmp_time=TIM3->CNT;
         memcpy(&tx_near_msg[ANCTIMEMS],&sync_timer,2);
         memcpy(&tx_near_msg[ANCTIMEUS],&tmp_time,2);
         memcpy(&tx_near_msg[TAGSLOTPOS],&taglist_pos,1);
         memcpy(&tx_near_msg[TAGSLOTPOS],&taglist_pos,2);
         memcpy(&tx_near_msg[TAG_ID_IDX],&tag_id_recv,2);
         poll_rx_ts = get_rx_timestamp_u64();//获得Poll包接收时间T2
@@ -677,10 +677,12 @@
               LED0_BLINK; //每成功一次通讯则闪烁一次
               dis_after_filter=dist_cm;
               hex_dist = dist_cm+(int16_t)g_com_map[DIST_OFFSET];
               if(abs(hex_dist-his_dist[tag_id_recv-TAG_ID_START])<1000)
               if(hex_dist>-1000&&hex_dist<100000)
               {
                  tagdist_list[taglist_pos] = hex_dist;
               }
               if(abs(hex_dist-his_dist[taglist_pos])<1500||misdist_num>3)
               {
                  misdist_num=0;
               tagdist_list[taglist_pos] = hex_dist;
               his_dist[taglist_pos]=hex_dist;                  
               usart_send[2] = 1;//正常模式
               usart_send[3] = 17;//数据段长度
@@ -693,7 +695,11 @@
               checksum = Checksum_u16(&usart_send[2],17);
               memcpy(&usart_send[19],&checksum,2);
               UART_PushFrame(usart_send,21);
               }else{
                  misdist_num++;
               }
            }
         }
         }else{
            dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR);
         }