From e6a35a9ad44e3db48c7bae45dbb7d8e3983373cf Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期一, 17 二月 2025 17:24:29 +0800
Subject: [PATCH] 1.29,改为轮询查询uwb测距

---
 Src/application/dw_mbx_tag.c |   33 ++++++++++++++++++++++++---------
 1 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/Src/application/dw_mbx_tag.c b/Src/application/dw_mbx_tag.c
index 4116f52..39ad98b 100644
--- a/Src/application/dw_mbx_tag.c
+++ b/Src/application/dw_mbx_tag.c
@@ -45,6 +45,7 @@
 static u8 tagofflinetime[ANC_MAX_NUM];
 u8 taglist_num;
 uint16_t tagid_list[ANC_MAX_NUM],tagdist_list[ANC_MAX_NUM];
+uint16_t test111;
 uint8_t Anchor_RecNearPoll(uint8_t ancrec_nearbasepos) //0 mainbase  1 first near_base
 {
     uint8_t motorstate;
@@ -81,7 +82,8 @@
     result = dwt_starttx(DWT_START_TX_DELAYED);
     
     if(result==0)
-    {
+    { 
+        test111++;
         start_time=HAL_LPTIM_ReadCounter(&hlptim1);
         timeout=100; //单位0.1ms
         end_time=start_time+(timeout<<2);
@@ -141,7 +143,8 @@
     uint32_t rec_syncid,status_reg;
     uint16_t checksum;
     uint8_t kk;
-
+    
+    UWB_Wkup();
 //    dwt_setrxtimeout(3000);//设定接收超时时间,0位没有超时时间
 //    dwt_rxenable(0);//打开接收
 //    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET);
@@ -161,9 +164,21 @@
 //        if(current_time>=end_time&&current_time<end_time+15000)
 //            break;
 //    };
+    dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR| SYS_STATUS_TXFRS |SYS_STATUS_RXFCG);
+    dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间
+	dwt_rxenable(0);//打开接收
+	while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))//不断查询芯片状态直到接收成功或者出现错误
+	{ 
+		IdleTask();
+	};
 	status_reg  = dwt_read32bitreg(SYS_STATUS_ID);
-    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), 0);
-    if (status_reg & SYS_STATUS_RXFCG && status_reg!=0xffffffff)//成功接收
+    if(status_reg==0xffffffff)
+    {
+//			printf("UWB芯片状态:0xffffffff,设备重启");
+     SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
+    }
+//    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), 0);
+    if (status_reg & SYS_STATUS_RXFCG)//成功接收
     {
         uint16_t tag_recv_interval;
         float temp_tagpos;
@@ -233,10 +248,10 @@
         //  dwt_rxenable(0);
     }
 
-        dwt_forcetrxoff();
-        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);
+//        dwt_forcetrxoff();
+//        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);
 
 }
 wg_state_enum wg_state = WG_Lost;
@@ -290,7 +305,7 @@
 uint16_t heatbeat_count = 3600;
 int16_t intheight;
 #define HEATBEAT_UPDATE_TIME   3600
-#define LORA_REPORT_MAXANC_NUM  7
+#define LORA_REPORT_MAXANC_NUM  14
 extern float Height;
 u8 tarray[20]= {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
 void LoraReportPoll(void)

--
Gitblit v1.9.3