From 73722f699b1f8d5badccc9c5e5171bb633ad4fe4 Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期四, 19 十二月 2019 13:53:00 +0800
Subject: [PATCH] 1

---
 源码/核心板/Src/application/dw_app.c |   22 ++++++++++++++--------
 1 files changed, 14 insertions(+), 8 deletions(-)

diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c"
index 34f43ff..d88e469 100644
--- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c"
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/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);
 			}

--
Gitblit v1.9.3