From 03c3a1878df2cb6a72fdffa393c9e453f6e1b6ac Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期五, 03 十一月 2023 16:40:00 +0800
Subject: [PATCH] 版本v2.11,修改防撞基站剔除机制。

---
 Src/application/dw_app.c |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/Src/application/dw_app.c b/Src/application/dw_app.c
index 812ee3f..68fb1ba 100644
--- a/Src/application/dw_app.c
+++ b/Src/application/dw_app.c
@@ -89,7 +89,7 @@
 	9,               /* RX preamble code. Used in RX only. */
 	1,               /* Use non-standard SFD (Boolean) */
 	DWT_BR_6M8,      /* Data rate. */
-	DWT_PHRMODE_STD, /* PHY header mode. */
+	DWT_PHRMODE_EXT, /* PHY header mode. */
 	(129 + 8 - 8)    /* SFD timeout (preamble length + 1 + SFD length - PAC size). Used in RX only. */
 };
 static uint8_t tx_poll_msg[20] = {0};
@@ -835,7 +835,7 @@
 
           exsistbase_list[i]--;
           clockOffsetRatio = anc_clockoffset[i] * (FREQ_OFFSET_MULTIPLIER * HERTZ_TO_PPM_MULTIPLIER_CHAN_2 / 1.0e6) ;
-          rtd_init = tag_resprx[i] - poll_tx_ts;
+          rtd_init = tag_resprx[i] - poll_tx_ts&0xffffffff;
           rtd_resp = anc_resptx[i] - anc_pollrx[i];
           tof = ((rtd_init - rtd_resp * (1 - clockOffsetRatio)) / 2.0) * DWT_TIME_UNITS;
           distance = tof * SPEED_OF_LIGHT;
@@ -851,6 +851,7 @@
 extern uint16_t taglist_num;
 extern int32_t tagdist_list[TAG_NUM_IN_SYS];
 uint16_t nearbase_taglist_num;
+extern uint8_t uwb_tx[300];
 void NearPoll(void)
 {
 	
@@ -886,6 +887,8 @@
 	tx_near_msg[BUTTON_IDX] = userkey_state|stationary_flag<<1|gotosleep_flag<<2|motor_flag<<5;
 	tx_near_msg[SEQUENCE_IDX] = frame_seq_nb;
     tx_near_msg[SEQUENCEH_IDX] = (frame_seq_nb++)>>8;
+    if(taglist_num>10)
+    {taglist_num=10;}
     nearbase_taglist_num=nearbase_num+taglist_num;
 	tx_near_msg[NEARBASENUM_INDEX] = nearbase_taglist_num;
 	memcpy(&tx_near_msg[NEARBASEID_INDEX],&nearbaseid_list,nearbase_num*2);
@@ -909,6 +912,10 @@
 	memcpy(&tx_near_msg[ANCHOR_ID_IDX],&mainbase_id,2);	
 	dwt_writetxdata(29+8*nearbase_taglist_num, tx_near_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去
 	dwt_writetxfctrl(29+8*nearbase_taglist_num, 0);//设置超宽带发送数据长度
+    
+//    	dwt_writetxdata(280, uwb_tx, 0);//将Poll包数据传给DW1000,将在开启发送时传出去
+//	dwt_writetxfctrl(282, 0);//设置超宽带发送数据长度
+    
 				current_count=HAL_LPTIM_ReadCounter(&hlptim1);
 		
 		while(current_count<poll_startcount||current_count>poll_startcount+16384)
@@ -933,7 +940,7 @@
 	flag_getresponse=0;
 	start_count=HAL_LPTIM_ReadCounter(&hlptim1);
 	recbase_num=0;
-	timeout=ceil((float)nearbase_num*SLOT_SCALE)+3;
+	timeout=ceil((float)nearbase_taglist_num*SLOT_SCALE)+3;
 	end_count=start_count+(timeout<<5);
 	if(end_count>=32768)
 	{end_count-=32768;}
@@ -1298,7 +1305,8 @@
 //            SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
 //        }
 //    }
-    Dw1000_Init();
+    dwt_forcetrxoff();
+//    Dw1000_Init();
     error_times = 0;
 	switch(tag_state)
 	{
@@ -1333,6 +1341,7 @@
 	}
      userkey_state = !GET_USERKEY;
            dwt_forcetrxoff();
+//       Dw1000_Init();
        dwt_setinterrupt(  DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1);
 		dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间
         dwt_rxenable(0);

--
Gitblit v1.9.3