From cf92a2fedf94d889b1a39e8557221149ea554a3c Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期五, 19 五月 2023 14:30:44 +0800
Subject: [PATCH] v2.8

---
 Src/application/dw_ancapp.c |   40 ++++++++++++++++++++++++----------------
 1 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/Src/application/dw_ancapp.c b/Src/application/dw_ancapp.c
index 13f9468..2f6554a 100644
--- a/Src/application/dw_ancapp.c
+++ b/Src/application/dw_ancapp.c
@@ -60,7 +60,8 @@
 static uint64_t final_rx_ts;
 static uint32_t status_reg = 0;
 extern uint8_t tx_near_msg[80];
-static uint8_t motor_state,result;
+uint8_t motor_state;
+static u8 result;
 static uint64_t get_tx_timestamp_u64(void)
 {
     uint8_t ts_tab[5];
@@ -108,7 +109,7 @@
         *ts += ts_field[i] << (i * 8);
     }
 }
-
+u8 send_buffer[100];
 #define FZ_NEARBASENUM_INDEX    10
 #define FZ_NEARBASEID_INDEX		 11
 void FZNearPoll(void)
@@ -118,7 +119,7 @@
 	uint32_t final_tx_time;
 	u32 start_poll;
 	u8 i,j,getsync_flag=0,timeout;
-    dwt_setrxaftertxdelay(POLL_TX_TO_RESP_RX_DLY_UUS);			//设置发送后开启接收,并设定延迟时间
+    dwt_setrxaftertxdelay(10);			//设置发送后开启接收,并设定延迟时间
     dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS);		
 	tag_succ_times = 0;
 		//GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_SET);
@@ -131,17 +132,19 @@
 	nearbase_num=next_nearbase_num;
 	recbase_num=0;
 	motor_state=0;
-	tx_near_msg[GROUP_ID_IDX] = group_id;
-	tx_near_msg[BATTARY_IDX] = bat_percent;
+    
+    memcpy(&send_buffer[TAG_ID_IDX], &dev_id, 2);
+	send_buffer[GROUP_ID_IDX] = group_id;
+	send_buffer[BATTARY_IDX] = bat_percent;
 	//tx_near_msg[BUTTON_IDX] = !GET_USERKEY|stationary_flag<<1;
-	tx_near_msg[SEQUENCE_IDX] = frame_seq_nb++;
-	tx_near_msg[FZ_NEARBASENUM_INDEX] = nearbase_num;
-	memcpy(&tx_near_msg[FZ_NEARBASEID_INDEX],&nearbaseid_list,nearbase_num*2);
-	tx_near_msg[MESSAGE_TYPE_IDX] = NEAR_POLL;	
-	memcpy(&tx_near_msg[ANCHOR_ID_IDX],&mainbase_id,2);	
-	dwt_writetxdata(13+2*nearbase_num, tx_near_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去
-	dwt_writetxfctrl(13+2*nearbase_num, 0);//设置超宽带发送数据长度
-	dwt_starttx(DWT_START_TX_IMMEDIATE | DWT_RESPONSE_EXPECTED);//开启发送,发送完成后等待一段时间开启接收,等待时间在dwt_setrxaftertxdelay中设置
+	send_buffer[SEQUENCE_IDX] = frame_seq_nb++;
+	send_buffer[FZ_NEARBASENUM_INDEX] = nearbase_num;
+	memcpy(&send_buffer[FZ_NEARBASEID_INDEX],&nearbaseid_list,nearbase_num*2);
+	send_buffer[MESSAGE_TYPE_IDX] = NEAR_POLL;	
+	memcpy(&send_buffer[ANCHOR_ID_IDX],&mainbase_id,2);	
+	dwt_writetxdata(35, send_buffer, 0);//将Poll包数据传给DW1000,将在开启发送时传出去
+	dwt_writetxfctrl(35, 0);//设置超宽带发送数据长度
+	dwt_starttx(DWT_START_TX_IMMEDIATE| DWT_RESPONSE_EXPECTED);//开启发送,发送完成后等待一段时间开启接收,等待时间在dwt_setrxaftertxdelay中设置
 	
 	tx_near_msg[TAGCONFIGSUCCESS_INDEX] =0;
 	para_update = 0;
@@ -151,9 +154,13 @@
 
     neartimout_timer = 0;
 	recbase_num=0;
+    start_count=HAL_LPTIM_ReadCounter(&hlptim1);
 	timeout=ceil((float)nearbase_num*SLOT_SCALE)+3;
-
-			while(neartimout_timer<timeout)
+    current_count=HAL_LPTIM_ReadCounter(&hlptim1);
+    end_count=start_count+(timeout<<5);
+	if(end_count>=32768)
+	{end_count-=32768;}
+			while(current_count<end_count||current_count>end_count+15000)
 			{
 					while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))//不断查询芯片状态直到成功接收或者发生错误
 					{
@@ -172,7 +179,8 @@
 							}
 						}
 							
-						 if(neartimout_timer>timeout)
+						 current_count=HAL_LPTIM_ReadCounter(&hlptim1);
+						 if(current_count>=end_count&&current_count<end_count+15000)
 								break;
 					};
 					if(status_reg==0xffffffff)

--
Gitblit v1.9.3