From d43f5c57427173eba8a2d1ed11bb8da408ec5dfc Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期二, 31 八月 2021 20:06:16 +0800
Subject: [PATCH] 2K 板子测试完成 增加功率测试

---
 源码/核心板/Src/application/dw_app.c |   54 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 51 insertions(+), 3 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 01463b2..6b2be20 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"
@@ -30,6 +30,8 @@
 #include "beep.h"
 #include "modbus.h"
 //#define DEBUG_OUTPUT
+#define TDFILTER
+//#define CONSTANT_FILTER
 /*------------------------------------ Marcos ------------------------------------------*/
 /* Inter-ranging delay period, in milliseconds. */
 #define RNG_DELAY_MS 100
@@ -342,6 +344,33 @@
  //   min_power =  - 10 * log10((F1 *F1 + F2 * F2 + F3 * F3) / (C *B));
     return min_power;
   }
+#define CONSTANT_LEN 50
+extern u16 dist_threshold;
+int32_t ConstantFilter(int32_t currentdist,u8 channel)
+  {
+      static int32_t cs_lastdist[10],cs_lastvalid[10];
+      static u8 cfstart_flag[10] = {1};
+      static u8 constant_count[10] = {100};
+      if(cfstart_flag[channel])
+      {
+        cfstart_flag[channel] = 0;
+        cs_lastdist[channel] = currentdist;
+      }
+      if( abs(currentdist - cs_lastdist[channel])<100)
+      {
+          if(constant_count[channel]<CONSTANT_LEN)
+              constant_count[channel]++;     
+      }else{
+         constant_count[channel] = 0; 
+      }
+      if(constant_count[channel] == CONSTANT_LEN)
+      {
+        cs_lastvalid[channel] = currentdist;
+      }
+      cs_lastdist[channel] = currentdist;
+      return cs_lastvalid[channel];
+  }
+#define CONT_FRAME_PERIOD 124800
 uint16_t g_Resttimer;
 uint8_t result;
 u8 tag_succ_times=0;
@@ -481,6 +510,7 @@
 
 					if(!g_com_map[MODBUS_MODE])
 					{
+					   u32 devid;
 					hex_dist2 = hex_dist2;		
 					usart_send[2] = 1;//正常模式
 					usart_send[3] = 17;//数据段长度
@@ -491,10 +521,22 @@
 					memcpy(&usart_send[9],&hex_dist2,4);
 					usart_send[13] = bat_percent;
 					usart_send[14] = button;
-                    usart_send[15] = rec_firstpath_power;
 					checksum = Checksum_u16(&usart_send[2],17);
 					memcpy(&usart_send[19],&checksum,2);
 					UART_PushFrame(usart_send,21);
+                    Spi_ChangePrescaler(SPIx_PRESCALER_SLOW);	
+                    dwt_configcontinuousframemode(CONT_FRAME_PERIOD);
+                    dwt_writetxdata(20, tx_final_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去
+                    dwt_writetxfctrl(20, 0);
+                    dwt_starttx(DWT_START_TX_IMMEDIATE);
+                        devid =  dwt_readdevid();
+                        LED0_ON;
+                    while(devid==DWT_DEVICE_ID )
+                    {
+                        devid =  dwt_readdevid();
+                    }
+                    
+                    NVIC_SystemReset();
 					}
 				}
 		//			memcpy(&Modbus_HoldReg[anc_id_recv*2],&hex_dist,4);
@@ -540,10 +582,10 @@
 
 int8_t correction_time;
 extern uint8_t sync_seq;
-#define TDFILTER
+
 //#define CHECK_UID
 extern uint8_t UID_ERROR;
-extern u16 dist_threshold;
+
 u8 misdist_num[TAG_NUM_IN_SYS];
 void Anchor_App(void)
 {
@@ -705,9 +747,15 @@
 						#else
 						filter_dist=hex_dist/10;
 						#endif
+                        
+                        #ifdef  CONSTANT_FILTER
+                        filter_dist = ConstantFilter(filter_dist,tag_id_recv-TAG_ID_START);
+                        #endif                       
 						anchor_dist_last_frm[tag_id_recv-TAG_ID_START]=filter_dist;
 						g_Tagdist[tag_id_recv]=	filter_dist;
 					
+
+                        
 					his_dist[tag_id_recv-TAG_ID_START]=hex_dist;
 					g_flag_Taggetdist[tag_id_recv]=0;
 					if(!g_com_map[MODBUS_MODE])

--
Gitblit v1.9.3