From f870b874e55940d09e3fcb93fa6b48a44c4a4f7a Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期四, 13 二月 2025 10:48:40 +0800
Subject: [PATCH] V1.26

---
 Src/application/dw_app.c |   81 ++++++++++++++++++++++++----------------
 1 files changed, 48 insertions(+), 33 deletions(-)

diff --git a/Src/application/dw_app.c b/Src/application/dw_app.c
index bea83cb..1a8c7e6 100644
--- a/Src/application/dw_app.c
+++ b/Src/application/dw_app.c
@@ -243,51 +243,66 @@
     }  
 }
 #include "radio.h"
+#include "dw_mbx_anc.h"
 u8 lora_start_poll_buff[4] = {LORA_MSGTYPE_RANGEPOLL,'I','N','G'};
 
 uint16_t current_count,target_count;
-nextpoll_enum next_poll_state;
+typedef enum{	Next_Poll_RANGE,
+                Next_Poll_LORASYNC,
+}nextpoll_enum;
+nextpoll_enum next_poll_state = Next_Poll_RANGE;
+extern uint8_t sync_lost_count;
+uint8_t send_count;
+#define FASONG_TIME 3
 void Tag_App(void)//发送模式(TAG标签)
 {  	
-  if(next_poll_state==Next_Poll_RANGE)  
+    SyncStateSwitch();
+  if(next_poll_state==Next_Poll_RANGE)  //读取本次的工作状态 测距还是同步
   {
-    current_count=HAL_LPTIM_ReadCounter(&hlptim1);
-    target_count = GetUwbPollCount();
-    while(current_count<target_count||current_count>target_count+16384)
-    {
-        current_count=HAL_LPTIM_ReadCounter(&hlptim1);
-        if(current_count<target_count-300)
-        {
-            break;
-        }
-    }
     
-    memcpy(&lora_start_poll_buff[ANC_ID_IDX],&g_com_map[DEV_ID],2);
-    Radio.Send(lora_start_poll_buff, 4);
-    UWB_Wkup();
-    delay_us(700);
-    MBXANCPoll();
-	dwt_entersleep();
-    bat_percent=Get_VDDVlotage();
-    next_poll_state = Next_Poll_LORASYNC;
-  }else{
     current_count=HAL_LPTIM_ReadCounter(&hlptim1);
-    target_count = GetWGRecSyncCount()-2000/LPTIMER_LSB; //提前2ms进入接收状态
-    while(current_count<target_count||current_count>target_count+16384)
-    {
-        current_count=HAL_LPTIM_ReadCounter(&hlptim1);
-        if(current_count<target_count-300)
-        {
-            break;
-        }
+    //if(send_count++%FASONG_TIME==0)
+    {    
+    SwitchLoraSettings(UWB_CHANNEL_FRQ+g_com_map[GROUP_ID],5,g_com_map[LORA_POWER]); //切换lora接收频点  
+
+    memcpy(&lora_start_poll_buff[ANC_ID_IDX],&g_com_map[DEV_ID],2);
+      LED_TB_ON;
+//      HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);
+    Radio.Send(lora_start_poll_buff, 4);
+    UWB_Wkup();   
+    delay_us(1000);
+    MBXANCPoll();
+//      HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);
+	dwt_entersleep();    
     }
-      LoraSyncRecPoll();
-      if(GetRangeState())
+    next_poll_state = Next_Poll_LORASYNC;
+
+  }else{
+     LoraSyncRecPoll();
+      if(GetRangeState()&&group_id!=0)  //获取当前测距状态,是否开启。如果开启下次为测距,否为同步
       {
         next_poll_state = Next_Poll_RANGE;
       }else{
         next_poll_state = Next_Poll_LORASYNC;
-      }
-      
+      }      
   }
+  Radio.Sleep();
+  if(next_poll_state == Next_Poll_LORASYNC)  //设定下一次的唤醒时间
+  {
+//      if(sync_state==Sync_Lost)
+//      {
+//          target_count = GetLoraSyncCount()-(18000)/LPTIMER_LSB+sync_lost_count*1000;
+//      }else
+      {
+        target_count = GetLoraSyncCount()-(23000)/LPTIMER_LSB;  //比上次收到的lora提前17ms唤醒(lora接收大概17ms),如果在同步间隔内,则会快速进入休眠。
+      }
+      if(target_count<0)
+      target_count+=32768;
+    __HAL_LPTIM_COMPARE_SET(&hlptim1, target_count);
+  }else{
+
+    target_count = GetUwbPollCount(); //测距提前2ms唤醒
+    __HAL_LPTIM_COMPARE_SET(&hlptim1, target_count);
+  }
+  
 }

--
Gitblit v1.9.3