From 755f0e3a86e41e9e3cb98f36578b3199c6206e59 Mon Sep 17 00:00:00 2001
From: zhangbo <zhangbo@qq.com>
Date: 星期三, 23 四月 2025 11:14:46 +0800
Subject: [PATCH] 蓝牙现在通过PCA9555关闭使能,反初始化串口,拉低PCA中断脚,现在是0.8v

---
 keil/uwb_app.c |  473 +++++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 296 insertions(+), 177 deletions(-)

diff --git a/keil/uwb_app.c b/keil/uwb_app.c
index 52b8d3c..fc6b031 100644
--- a/keil/uwb_app.c
+++ b/keil/uwb_app.c
@@ -137,22 +137,66 @@
     struct UWB_CONFIG_T phy_cfg;
 };
 
-/* Default communication configuration. */
+#ifdef DW1000
 static struct mk_uwb_configure config = {
     .phy_work_mode = (uint8_t)(PHY_TX | PHY_RX),
     .phy_cfg.ch_num = 5,                      /* Channel number.                           */
-    .phy_cfg.code_index = 9,                  /* TX preamble code.                         */
-    .phy_cfg.mean_prf = MEAN_PRF_64M,         /* Data rate 6.8M                            */
-    .phy_cfg.data_bit_rate = DATA_BR_6M8,     /* data rate 6.8M.                           */
+    .phy_cfg.code_index = 9,                  /* TRX preamble code                         */
+    .phy_cfg.mean_prf = MEAN_PRF_64M,         /* Mean prf 64/128/256M                      */
+    .phy_cfg.data_bit_rate = DATA_BR_6M8,     /* Data rate 6.8M                            */
     .phy_cfg.sync_sym = PREAM_LEN_128,        /* Preamble duration, length of preamble 128 */
     .phy_cfg.sfd_sym = NON_STD_NSFD5_8,          /* Identifier for SFD sequence               */
-    .phy_cfg.ranging_bit = 1,                 /* ranging bit set.                          */
+    .phy_cfg.ranging_bit = 1,                 /* ranging bit set 1                         */
     .phy_cfg.trx_mode = TRX_MODE_15_4A,  /* IEEE802.15.4z - BPRF mode                 */
     .phy_cfg.sts_pkt_cfg = STS_PKT_CFG_0,     /* SP0 Frame                                 */
     .phy_cfg.sts_segnum = STS_SEGNUM_BPRF_1,  /* Number of STS segments in the frame       */
     .phy_cfg.sts_seglen = STS_SEGLEN_BPRF_64, /* Number of symbols in an STS segment       */
     .phy_cfg.rx_ant_id = UWB_RX_ANT_3,    /* UWB RX antenna port                       */
 };
+#elif defined STS_MODE
+static struct mk_uwb_configure config = {
+    .phy_work_mode = (uint8_t)(PHY_TX | PHY_RX),
+    .phy_cfg.ch_num = 5,                      /* Channel number.                           */
+    .phy_cfg.code_index = 9,                  /* TRX preamble code                         */
+    .phy_cfg.mean_prf = MEAN_PRF_64M,         /* Mean prf 64/128/256M                      */
+    .phy_cfg.data_bit_rate = DATA_BR_6M8,     /* Data rate 6.8M                            */
+    .phy_cfg.sync_sym = PREAM_LEN_128,        /* Preamble duration, length of preamble 128 */
+    .phy_cfg.sfd_sym = BPRF_NSFD2_8,          /* Identifier for SFD sequence               */
+    .phy_cfg.ranging_bit = 1,                 /* ranging bit set 1                         */
+    .phy_cfg.trx_mode = TRX_MODE_15_4Z_BPRF,  /* IEEE802.15.4z - BPRF mode                 */
+    .phy_cfg.sts_pkt_cfg = STS_PKT_CFG_1,     /* SP1 Frame                                 */
+    .phy_cfg.sts_segnum = STS_SEGNUM_BPRF_1,  /* Number of STS segments in the frame       */
+    .phy_cfg.sts_seglen = STS_SEGLEN_BPRF_64, /* Number of symbols in an STS segment       */
+    .phy_cfg.rx_ant_id = UWB_RX_ANT_3,        /* UWB RX antenna port                       */
+};
+/* Use the default key and IV specified in the IEEE 802.15.4z attachment */
+static struct UWB_STS_KEY_CONFIG_T sts_iv_key = {
+    .sts_vcounter = 0x1F9A3DE4,
+    .sts_vupper0 = 0xD37EC3CA,
+    .sts_vupper1 = 0xC44FA8FB,
+    .sts_vupper2 = 0x362EEB34,
+    .sts_key0 = 0x14EB220F,
+    .sts_key1 = 0xF86050A8,
+    .sts_key2 = 0xD1D336AA,
+    .sts_key3 = 0x14148674,
+};
+#elif defined MK_MODE
+static struct mk_uwb_configure config = {
+    .phy_work_mode = (uint8_t)(PHY_TX | PHY_RX),
+    .phy_cfg.ch_num = 9,                      /* Channel number.                           */
+    .phy_cfg.code_index = 9,                  /* TX preamble code.                         */
+    .phy_cfg.mean_prf = MEAN_PRF_64M,         /* Data rate 6.8M                            */
+    .phy_cfg.data_bit_rate = DATA_BR_6M8,     /* data rate 6.8M.                           */
+    .phy_cfg.sync_sym = PREAM_LEN_128,        /* Preamble duration, length of preamble 128 */
+    .phy_cfg.sfd_sym = BPRF_NSFD2_8,          /* Identifier for SFD sequence               */
+    .phy_cfg.ranging_bit = 1,                 /* ranging bit set.                          */
+    .phy_cfg.trx_mode = TRX_MODE_15_4Z_BPRF,  /* IEEE802.15.4z - BPRF mode                 */
+    .phy_cfg.sts_pkt_cfg = STS_PKT_CFG_0,     /* SP0 Frame                                 */
+    .phy_cfg.sts_segnum = STS_SEGNUM_BPRF_1,  /* Number of STS segments in the frame       */
+    .phy_cfg.sts_seglen = STS_SEGLEN_BPRF_64, /* Number of symbols in an STS segment       */
+    .phy_cfg.rx_ant_id = UWB_RX_ANT_3,        /* UWB RX antenna port                       */
+};
+#endif
 
 /* Buffer to store received frame */
 
@@ -284,11 +328,12 @@
 {		uint8_t valid_sts=0;
     // Power off radio
     power_off_radio();
-
+	
     /** UWB RX success */
     if (rx_report->err_code == UWB_RX_OK)
     {
-				UWB_STATE=UWB_STATE_IDLE;
+			
+
         /* Received data does not contain FCS */
         rx_length = rx_report->pkt_len;
         memcpy(rx_buf, rx_report->pkt_data, rx_length);
@@ -331,15 +376,18 @@
         memcpy(&rx_rpt, rx_report, sizeof(struct MAC_HW_REPORT_T));
         rx_length = 0;
 			  ERR_RX_NUM++;
-			  UWB_STATE=UWB_STATE_IDLE;
-//				if(UWB_STATE==UWB_STATE_IDLE)
-//				{
-//					UWB_STATE=UWB_RX_STATE_BUSY;
-//					OpenUWB();//再次开启UWB接收
-//				}
+				UWB_STATE=UWB_STATE_IDLE;	
+
 			//	OpenUWB();//再次开启UWB接收
     }
 	OpenUWB();//再次开启UWB接收
+#ifdef USE_TX_UWBON			
+				if(UWB_STATE==UWB_STATE_IDLE)
+				{
+					UWB_STATE=UWB_RX_STATE_BUSY;
+					OpenUWB();//再次开启UWB接收
+				}
+#endif
 }
 uint16_t TX_CALL_POLL_NUM;
 /* TX done process handler. */
@@ -347,22 +395,27 @@
 {
     // Power off radio
     power_off_radio();
-    UWB_STATE=UWB_STATE_IDLE;
+#ifdef USE_TX_UWBON
+        UWB_STATE=UWB_STATE_IDLE;			
+				UWB_STATE=UWB_RX_STATE_BUSY;
+			  OpenUWB();//再次开启UWB接收	
+#endif
     /** UWB TX success */
     if (tx_report->err_code == UWB_TX_OK)
     {
+
 			
         temp_count= phy_timer_count_get();
         temp_internal=temp_count;
         
 			  TX_CALL_POLL_NUM++;
-			  if(send_qiangzhan_NUM)
-				{
-				send_qiangzhan_NUM=0;
-				resp_tx_num++;
-				}
-				UWB_STATE=UWB_RX_STATE_BUSY;
-//			  OpenUWB();//再次开启UWB接收
+//			  if(send_qiangzhan_NUM)
+//				{
+//				send_qiangzhan_NUM=0;
+//				resp_tx_num++;
+//				}
+//				
+
 			  //gpio_pin_clr(IO_PIN_5);
         //LOG_INFO(TRACE_MODULE_APP, "poll_rx_num is %d,resp_tx_num is %d\r\n",poll_rx_num,resp_tx_num);
     }
@@ -398,6 +451,18 @@
 //    if(dist>0)
     distance=dist*0.5+distance*0.5;
 }
+//uint16_t CmpTagInList(uint16_t tagid)
+//{   uint16_t i;
+//    for(i=0; i<taglist_num; i++)
+//    {
+//        if(memcmp(&tagid,&tagid_list[i],2)==0)
+//            break;
+//    }
+//    if(i==taglist_num)
+//        return taglist_num;
+//    //tagofflinetime[i] = 0;
+//    return i;
+//}
 uint16_t CmpTagInList(uint16_t tagid)
 {   uint16_t i;
     for(i=0; i<taglist_num; i++)
@@ -405,12 +470,8 @@
         if(memcmp(&tagid,&tagid_list[i],2)==0)
             break;
     }
-    if(i==taglist_num)
-        return taglist_num;
-    //tagofflinetime[i] = 0;
     return i;
 }
-
 
 static void resp_msg_set_ts(uint8_t *ts_field, int64_t ts)
 {
@@ -444,7 +505,20 @@
     report_ancnum = k;
     taglist_num=j;
 }
-
+//void TagListUpdate(void)
+//{
+//uint16_t i,j=0,k=0;
+//    for(i=0; i<taglist_num; i++)
+//    {
+//			 if(tagofflinetime[i]++<TAG_KEEPTIMES)
+//        {
+//            tagid_list[j]=tagid_list[i];
+//            tagdist_list[j] = tagdist_list[i];
+//            tagofflinetime[j++]=tagofflinetime[i];
+//        }
+//		}
+//		 taglist_num=j;	
+//}
 
 //static uint8_t tagofflinetime[ANC_MAX_NUM];
 //int flag1=0;
@@ -486,13 +560,11 @@
     temp_resp_i64=resp_tx_ts_i64;
     temp_count3= phy_timer_count_get();
     UWB_STATE==UWB_TX_STATE_BUSY;
-		response_num++;
-		
 		flag_temp2=uwb_tx(send_buffer, 40,1 ,resp_tx_en_start_u32);//立即发送测试size大小
    
 		
 		tagofflinetime[taglist_pos] = 0;//更新标签通信
-    temp_count1=phy_timer_count_get();
+//    temp_count1=phy_timer_count_get();
 //		temp_tx_flag=1;
 //		Delay_Ms(2);
 
@@ -512,146 +584,146 @@
 uint32_t UWB_fachu_count=0;
 uint32_t UWB_qiangzhanfachu_count=0;
 uint32_t UWB_1003_count,UWB_6666_count=0;
-int UwbRange(void)
-{
+//int UwbRange(void)
+//{
 
-    uint8_t i;
-    uint16_t tempid;
+//    uint8_t i;
+//    uint16_t tempid;
 
-    mac_register_process_handler(tx_int_callback, rx_int_callback);
-    receive_flag = 0;
-		flag_recsuccess = 0;
+//    mac_register_process_handler(tx_int_callback, rx_int_callback);
+//    receive_flag = 0;
+//		flag_recsuccess = 0;
 
-    uwb_rxflag=uwb_rx(0, 0, range_timeout_us);//开启接收
+//    uwb_rxflag=uwb_rx(0, 0, range_timeout_us);//开启接收
 
-    uwb_rxflag_num1++;
-  //  while(mac_is_busy());
-  //  temp_count2=phy_timer_count_get();
-		start_receive_count=phy_timer_count_get();
-	poll_timeout=US_TO_PHY_TIMER_COUNT(range_timeout_us);//多一个多0.4ms默认0.4ms计算为0.125*4*100000,默认开启1mss
-	end_receive_count=start_receive_count+poll_timeout;
-	if(end_receive_count>=UINT32_MAX)
-	{end_receive_count-=UINT32_MAX;}
-	current_count=phy_timer_count_get();
-			while(mac_is_busy())
-        {
-//            IdleTask();
-            current_count=phy_timer_count_get();
-            if(current_count>end_receive_count&&current_count<end_receive_count+HALF_SECOND_TIME)//超时时间为4.992秒
-            {
-                    break;
-            }
-        }
-			
-    if(receive_flag==1)//成功接收
-    {
-		time_count_sdsj=phy_timer_count_get();
-//			 gpio_pin_set(IO_PIN_5);
-					
-//		gpio_pin_clr(IO_PIN_5);
-		#ifdef DEBUG_BOXING
-//		gpio_pin_set(IO_PIN_5);//测试
-//		gpio_pin_clr(IO_PIN_5);//测试
-		#endif
-//            timeceshi1=phy_timer_count_get();
-//            temp_count7=poll_rx_en_start_u32;
-        receive_flag=0;
-        if(group_id==rx_buf[GROUP_ID_IDX]&&rx_buf[MESSAGE_TYPE_IDX] == MBX_POLL)/*&&!memcmp(&rx_buf[TAG_ID_IDX],&g_com_map[BIND_DEV_ID],2)*///判断是否是和自己是同一组通讯的且为poll包
-        {  
-//						UWB_shoudao_count++;
-						flag_recsuccess = 1;
-//					  temp_count2=phy_timer_count_get();
-            frame_seq_nb2 = rx_buf[SEQUENCE_IDX];//获取包序
-            battary = rx_buf[BATTARY_IDX];
-            rec_nearbase_num=rx_buf[FZ_NEARBASENUM_INDEX];  //标签传过来的他与基站交互的基站id数目
-					
-					  //rec_nearbase_num=25;  
-					
-            memcpy(&tag_id_recv,&rx_buf[TAG_ID_IDX],2);
-            memcpy(rec_ancidlist,&rx_buf[FZ_NEARBASEID_INDEX],2*rec_nearbase_num);
-            memcpy(rec_ancdistlist,&rx_buf[FZ_NEARBASEID_INDEX+2*rec_nearbase_num],2*rec_nearbase_num);
-            // memcpy(&rec_antdelay,&rx_buf[FZ_NEARBASEID_INDEX+rec_nearbase_num*4],2);
-//            timeceshi1=phy_timer_count_get();
-//            temp_count7=poll_rx_en_start_u32;
-					  taglist_pos=CmpTagInList(tag_id_recv);
-            for(i=0; i<rec_nearbase_num; i++)
-            {
-							
-                if(rec_ancidlist[i] == dev_id)
-                {
-                    rec_ancdistlist[i]+=(int16_t)g_com_map[DIST_OFFSET];
-                    PushAnchorDataArray(tag_id_recv,rec_ancdistlist[i],battary);
-									  UWB_fachu_count++;
+//    uwb_rxflag_num1++;
+//  //  while(mac_is_busy());
+//  //  temp_count2=phy_timer_count_get();
+//		start_receive_count=phy_timer_count_get();
+//	poll_timeout=US_TO_PHY_TIMER_COUNT(range_timeout_us);//多一个多0.4ms默认0.4ms计算为0.125*4*100000,默认开启1mss
+//	end_receive_count=start_receive_count+poll_timeout;
+//	if(end_receive_count>=UINT32_MAX)
+//	{end_receive_count-=UINT32_MAX;}
+//	current_count=phy_timer_count_get();
+//			while(mac_is_busy())
+//        {
+////            IdleTask();
+//            current_count=phy_timer_count_get();
+//            if(current_count>end_receive_count&&current_count<end_receive_count+HALF_SECOND_TIME)//超时时间为4.992秒
+//            {
+//                    break;
+//            }
+//        }
+//			
+//    if(receive_flag==1)//成功接收
+//    {
+//		time_count_sdsj=phy_timer_count_get();
+////			 gpio_pin_set(IO_PIN_5);
+//					
+////		gpio_pin_clr(IO_PIN_5);
+//		#ifdef DEBUG_BOXING
+////		gpio_pin_set(IO_PIN_5);//测试
+////		gpio_pin_clr(IO_PIN_5);//测试
+//		#endif
+////            timeceshi1=phy_timer_count_get();
+////            temp_count7=poll_rx_en_start_u32;
+//        receive_flag=0;
+//        if(group_id==rx_buf[GROUP_ID_IDX]&&rx_buf[MESSAGE_TYPE_IDX] == MBX_POLL)/*&&!memcmp(&rx_buf[TAG_ID_IDX],&g_com_map[BIND_DEV_ID],2)*///判断是否是和自己是同一组通讯的且为poll包
+//        {  
+////						UWB_shoudao_count++;
+//						flag_recsuccess = 1;
+////					  temp_count2=phy_timer_count_get();
+//            frame_seq_nb2 = rx_buf[SEQUENCE_IDX];//获取包序
+//            battary = rx_buf[BATTARY_IDX];
+//            rec_nearbase_num=rx_buf[FZ_NEARBASENUM_INDEX];  //标签传过来的他与基站交互的基站id数目
+//					
+//					  //rec_nearbase_num=25;  
+//					
+//            memcpy(&tag_id_recv,&rx_buf[TAG_ID_IDX],2);
+//            memcpy(rec_ancidlist,&rx_buf[FZ_NEARBASEID_INDEX],2*rec_nearbase_num);
+//            memcpy(rec_ancdistlist,&rx_buf[FZ_NEARBASEID_INDEX+2*rec_nearbase_num],2*rec_nearbase_num);
+//            // memcpy(&rec_antdelay,&rx_buf[FZ_NEARBASEID_INDEX+rec_nearbase_num*4],2);
+////            timeceshi1=phy_timer_count_get();
+////            temp_count7=poll_rx_en_start_u32;
+//					  taglist_pos=CmpTagInList(tag_id_recv);
+//            for(i=0; i<rec_nearbase_num; i++)
+//            {
+//							
+//                if(rec_ancidlist[i] == dev_id)
+//                {
+//                    rec_ancdistlist[i]+=(int16_t)g_com_map[DIST_OFFSET];
+//                    PushAnchorDataArray(tag_id_recv,rec_ancdistlist[i],battary);
+//									  UWB_fachu_count++;
+////		#ifdef DEBUG_BOXING
+//////		gpio_pin_clr(IO_PIN_5);//测试
+////		gpio_pin_set(IO_PIN_5);//测试
+////		#endif
+//                }
+//            }
+//            for(i=0; i<rec_nearbase_num; i++)
+//            {
+//							    memcpy(&tempid,&rx_buf[FZ_NEARBASEID_INDEX+i*2],2);
+//                    if(tempid==dev_id)
+//                    {
+//                        Anchor_RecNearPoll(i);
+//							          tagdist_list[taglist_pos]=rec_ancdistlist[i];
+//                        if(group_min_dist[group_id]>rec_ancdistlist[i])
+//                        {
+//                            group_min_dist[group_id] = rec_ancdistlist[i];
+//                        }
+//                        if(taglist_pos==taglist_num)// taglist_pos==taglist_num 说明这个基站不在当前列表中
+//                        {   //tempid==dev_id 说明基站下发测距报文有这个标签的信息
+//                            taglist_num++;          //满足上述两种情况才会添加基站ID进入列表中,否则会出现标签不在基站列表中,标签也不响应的情况
+//                            tagid_list[taglist_pos] = tag_id_recv;
+//                        }
+//                        break;
+//										}
+//            }
+
+//            if(i==rec_nearbase_num)
+//            {
+//							
+//                seize_anchor=1;   //抢占anchor
+//                Anchor_RecNearPoll(i);
+//						  	UWB_qiangzhanfachu_count++;
+
+//            }
+//						recev_error_num=0;
+
+////            sleep_timer_start(__MS_TO_32K_CNT(UWB_DELAY_TIME_US));//测试
+////            LOG_INFO(TRACE_MODULE_APP,"标签ID:%X,距离: %d 信号强度:%d.\r\n",g_com_map[BIND_DEV_ID],distance,rssi);
+//       
+//				}
+//      //  uwb_rxflag=uwb_rx(0, 0, range_timeout_us);
+//    }    
 //		#ifdef DEBUG_BOXING
 ////		gpio_pin_clr(IO_PIN_5);//测试
-//		gpio_pin_set(IO_PIN_5);//测试
-//		#endif
-                }
-            }
-            for(i=0; i<rec_nearbase_num; i++)
-            {
-							    memcpy(&tempid,&rx_buf[FZ_NEARBASEID_INDEX+i*2],2);
-                    if(tempid==dev_id)
-                    {
-                        Anchor_RecNearPoll(i);
-							          tagdist_list[taglist_pos]=rec_ancdistlist[i];
-                        if(group_min_dist[group_id]>rec_ancdistlist[i])
-                        {
-                            group_min_dist[group_id] = rec_ancdistlist[i];
-                        }
-                        if(taglist_pos==taglist_num)// taglist_pos==taglist_num 说明这个基站不在当前列表中
-                        {   //tempid==dev_id 说明基站下发测距报文有这个标签的信息
-                            taglist_num++;          //满足上述两种情况才会添加基站ID进入列表中,否则会出现标签不在基站列表中,标签也不响应的情况
-                            tagid_list[taglist_pos] = tag_id_recv;
-                        }
-                        break;
-										}
-            }
-
-            if(i==rec_nearbase_num)
-            {
-							
-                seize_anchor=1;   //抢占anchor
-                Anchor_RecNearPoll(i);
-						  	UWB_qiangzhanfachu_count++;
-
-            }
-						recev_error_num=0;
-
-//            sleep_timer_start(__MS_TO_32K_CNT(UWB_DELAY_TIME_US));//测试
-//            LOG_INFO(TRACE_MODULE_APP,"标签ID:%X,距离: %d 信号强度:%d.\r\n",g_com_map[BIND_DEV_ID],distance,rssi);
-       
-				}
-      //  uwb_rxflag=uwb_rx(0, 0, range_timeout_us);
-    }    
-		#ifdef DEBUG_BOXING
-//		gpio_pin_clr(IO_PIN_5);//测试
-//		gpio_pin_set(IO_PIN_5);//测试
-		#endif
-	
-    delay_us(1);
-    uwb_rx_force_off(1);
-//		gpio_pin_clr(IO_PIN_5); 
-//		#ifdef DEBUG_BOXING
-//		gpio_pin_clr(IO_PIN_5);//测试.
-//		#endif
-//		if(!flag_recsuccess)
-//		{
-//			sleep_timer_start(__MS_TO_32K_CNT(UWB_DELAY_TIME_US-3));//测试
-//        LOG_INFO(TRACE_MODULE_APP,"测距失败,计数:%d\r\n",recev_error_num);
-//        if(recev_error_num++>5)
-//        {
-//            recev_error_num=0;
-//            UWB_work_state=SEARCH_DEV;
-//            uwb_searchcount = 0;
-//            search_open_flag = 1;
-//        }
-//			}
-//		#ifdef DEBUG_BOXING
-//		gpio_pin_clr(IO_PIN_5);//测试
 ////		gpio_pin_set(IO_PIN_5);//测试
-//		#endif    
-}
+//		#endif
+//	
+//    delay_us(1);
+//    uwb_rx_force_off(1);
+////		gpio_pin_clr(IO_PIN_5); 
+////		#ifdef DEBUG_BOXING
+////		gpio_pin_clr(IO_PIN_5);//测试.
+////		#endif
+////		if(!flag_recsuccess)
+////		{
+////			sleep_timer_start(__MS_TO_32K_CNT(UWB_DELAY_TIME_US-3));//测试
+////        LOG_INFO(TRACE_MODULE_APP,"测距失败,计数:%d\r\n",recev_error_num);
+////        if(recev_error_num++>5)
+////        {
+////            recev_error_num=0;
+////            UWB_work_state=SEARCH_DEV;
+////            uwb_searchcount = 0;
+////            search_open_flag = 1;
+////        }
+////			}
+////		#ifdef DEBUG_BOXING
+////		gpio_pin_clr(IO_PIN_5);//测试
+//////		gpio_pin_set(IO_PIN_5);//测试
+////		#endif    
+//}
 int Uwbinit(void)
 {
     uwb_open();
@@ -675,6 +747,53 @@
     // Register rx interrupt callback function
     mac_register_process_handler(tx_int_callback, rx_int_callback);
 }
+//void Uwbinit(void)
+//{
+//		uwb_open();
+//	#ifdef STS_MODE
+// // Set STS key and IV
+//    phy_sts_key_configure(&sts_iv_key);
+//	
+//	// which RX ports will be used for AoA/PDoA
+//    phy_rx_ant_mode_set(RX_ANT_PORTS_COMBINATION);
+//	#endif
+//    // Set calibration parameters
+//    uwb_calibration_params_set(config.phy_cfg.ch_num);
+//	#ifndef STS_MODE
+//   // set advanced parameters
+//    struct PHY_ADV_CONFIG_T adv_config = {
+//        .thres_fap_detect = 40,
+//        .nth_scale_factor = 4,
+//        .ranging_performance_mode = 0,
+//        .skip_weakest_port_en = 0,
+//    };
+//	#else
+//	 // set advanced parameters
+//    struct PHY_ADV_CONFIG_T adv_config = {
+//        .thres_fap_detect = 40,
+//        .nth_scale_factor = 4,
+//        .ranging_performance_mode = 3,
+//        .skip_weakest_port_en = 0,
+//    };
+//	#endif
+//    phy_adv_params_configure(&adv_config);
+
+//    // uwb configure
+//    uwb_configure(config.phy_work_mode, board_param.tx_power_fcc[CALIB_CH(config.phy_cfg.ch_num)], &config.phy_cfg);
+//		#if (defined STS_MODE) || (defined MK_MODE)
+//		ranging_lib_init();
+//		#endif
+//    ranging_frame_type_set(config.phy_cfg.sts_pkt_cfg);
+//		#ifdef STS_MODE
+//		aoa_aux_info_set(AOA_AUX_ANT_IQ_RSSI_PDOA_AOA_FOM);
+//    aoa_steering_vector_set((const float *)((uint32_t)((config.phy_cfg.ch_num == 9) ? svec_ch9_ptr : svec_ch5_ptr) | SRAM_BASE));
+
+//    aoa_param_config();
+//		
+//		phy_rx_sts_switch_mode_set(config.phy_cfg.sts_pkt_cfg, STS_SWITCH_EVERY_4SYM, 0, 0);
+//		#endif
+//		mac_register_process_handler(tx_int_callback, rx_int_callback);//初始化回调
+//}
 uint16_t g_com_receive_id;
 void CloseUWB(void)
 {
@@ -713,18 +832,19 @@
     }
     return 0;
 }
-enumwltagstate wltag_state=RANGE;
-uint32_t wltag_statetimer,wltag_uwbtimer;
+
+//enumwltagstate wltag_state=RANGE;
+//uint32_t wltag_statetimer,wltag_uwbtimer;
 int uwb_app_poll(void)
 {
+
+	
 //	switch(wltag_state)
 //	{
-//		
 //	case RANGE:
-////	time_flag=HIDO_TimerGetTick()-wltag_uwbtimer;
 //	if(HIDO_TimerGetTick()-wltag_uwbtimer>2&&uwb_rx_flag==0)
 //		{ 
-//				UWB_LED_ON;
+//				
 //				wltag_uwbtimer = HIDO_TimerGetTick();
 //				if(UWB_STATE==UWB_STATE_IDLE)
 //				{
@@ -776,6 +896,7 @@
 //		}
 //		break;
 //	}
+
 	 UWBIdleTask();
 }
 
@@ -787,7 +908,7 @@
 				uint16_t tempid;
 			if(group_id==rx_buf[GROUP_ID_IDX]&&rx_buf[MESSAGE_TYPE_IDX] == MBX_POLL)//判断是否是和自己是同一组通讯的且为poll包
         {    flag_recsuccess = 1;
-						wltag_state=RANGE;//成功后从search切换为range
+//						wltag_state=RANGE;//成功后从search切换为range
 					  REV_POLL_NUM++;
 						memcpy(&g_com_receive_id,&rx_buf[TAG_ID_IDX],2);
 					  //temp_count2=phy_timer_count_get();
@@ -813,7 +934,6 @@
 												if(taglist_pos==taglist_num)// taglist_pos==taglist_num 说明这个基站不在当前列表中
 												{   //tempid==dev_id 说明基站下发测距报文有这个标签的信息
 														taglist_num++;          //满足上述两种情况才会添加基站ID进入列表中,否则会出现标签不在基站列表中,标签也不响应的情况
-													  
 														tagid_list[taglist_pos] = tag_id_recv;
 												}
 												break;
@@ -821,17 +941,16 @@
 								}
 								 if((i==rec_nearbase_num&&taglist_pos==taglist_num)||(rec_nearbase_num==0&&!ExistInTagList(tag_id_recv)))//当基站不在标签列表中,标签也不在基站列表中时,随机找个时间片回复基站。
                 {
-									     REPLY_POLL_NUM++;
-									     send_qiangzhan_NUM=1;
                        Anchor_RecNearPoll(rec_nearbase_num);
+//							  		 REPLY_POLL_NUM++;
+//									   send_qiangzhan_NUM=1;
                 }
 				}
 	else{
-//				if(UWB_STATE==UWB_STATE_IDLE)
-//				{
-//				UWB_STATE=UWB_RX_STATE_BUSY;
-//				OpenUWB();
-//				}
+#ifdef USE_TX_UWBON			
+					UWB_STATE=UWB_RX_STATE_BUSY;
+					OpenUWB();//再次开启UWB接收
+#endif
 			}
 				
 				
@@ -924,7 +1043,7 @@
 //            if(group_id==rx_buf[GROUP_ID_IDX]&&rx_buf[MESSAGE_TYPE_IDX] == MBX_POLL&&!memcmp(&rx_buf[TAG_ID_IDX],&g_com_map[BIND_DEV_ID],2))//判断是否是和自己是同一组通讯的且为poll包
             if(group_id==rx_buf[GROUP_ID_IDX]&&rx_buf[MESSAGE_TYPE_IDX] == MBX_POLL)//判断是否是和自己是同一组通讯的且为poll包
 						{   
-							  sleep_timer_start(__MS_TO_32K_CNT(UWB_DELAY_TIME_US-13));//测试
+//							  sleep_timer_start(__MS_TO_32K_CNT(UWB_DELAY_TIME_US-13));//测试
 								range_timeout_us=20000;//将下次range开启后超时时间设为20ms之后再range里恢复
 								temp_count2=phy_timer_count_get();
                 frame_seq_nb2 = rx_buf[SEQUENCE_IDX];//获取包序

--
Gitblit v1.9.3