From 76fc938c40ba7bdf3c6769d1f76a22328151ee90 Mon Sep 17 00:00:00 2001
From: chen <15335560115@163.com>
Date: 星期六, 05 七月 2025 14:14:26 +0800
Subject: [PATCH] 初步将STS方形矩阵测角移植成功,能稳定和一个设备测360度角

---
 keil/uwb_app.c |   84 ++++++++++++++++++++++++++----------------
 1 files changed, 52 insertions(+), 32 deletions(-)

diff --git a/keil/uwb_app.c b/keil/uwb_app.c
index afcb3bb..5624668 100644
--- a/keil/uwb_app.c
+++ b/keil/uwb_app.c
@@ -334,8 +334,7 @@
 //			 /* Received data does not contain FCS */
 //        rx_length = rx_report->pkt_len;
 //        memcpy(rx_buf, rx_report->pkt_data, rx_length);
-//			 if (sts_valid_check())
-//        {
+
         /* Received data does not contain FCS */
         rx_length = rx_report->pkt_len;
         memcpy(rx_buf, rx_report->pkt_data, rx_length);
@@ -348,32 +347,35 @@
         rssi = rx_report->rssi;
         //receive_flag=1;
 				Anchor_App();
-//			//    // PDoA caculation
-//			pdoa_3d_calculate(0, &elevation, &azimuth);
-//			pdoa_fom_get(NULL, &fom);
-//			if(resp_tx_flag==0)
-//			{
-//			  OpenUWB();
-//			}
+			//    // PDoA caculation
+			if (sts_valid_check())//为了避免影响时序放到了回包后进行操作
+      {
+			pdoa_3d_calculate(0, &elevation, &azimuth);
+			pdoa_fom_get(NULL, &fom);
+			}
+			if(resp_tx_flag==0)
+			{
+			  OpenUWB();
+			}
 //				}else{
 //					poll_rx_error_num++;
 //				rx_report->err_code |= UWB_STS_ERR;
 //				}
-			#ifdef STS_MODE
-				valid_sts= sts_valid_check();
-      if (valid_sts)
-      {
-				aoa_calculate(&elevation, &azimuth);
-				aoa_fom_get(NULL, &fom);
-//				float pdoa[3];
-//				pdoa[0] = pdoa_select_get(0, 3);
-//				pdoa[1] = pdoa_select_get(1, 3);
-//				pdoa[2] = pdoa_select_get(2, 3);
-//				LOG_INFO(TRACE_MODULE_APP, "PDOA: %f %f %f\r\n", pdoa[0], pdoa[1], pdoa[2]);
+//			#ifdef STS_MODE
+//				valid_sts= sts_valid_check();
+//      if (valid_sts)
+//      {
+//				aoa_calculate(&elevation, &azimuth);
+//				aoa_fom_get(NULL, &fom);
+////				float pdoa[3];
+////				pdoa[0] = pdoa_select_get(0, 3);
+////				pdoa[1] = pdoa_select_get(1, 3);
+////				pdoa[2] = pdoa_select_get(2, 3);
+////				LOG_INFO(TRACE_MODULE_APP, "PDOA: %f %f %f\r\n", pdoa[0], pdoa[1], pdoa[2]);
 
-					sts_rssi = sts_rssi_output_get();
-			}
-			#endif
+//					sts_rssi = sts_rssi_output_get();
+//			}
+//			#endif
     }
     else
     {
@@ -386,9 +388,9 @@
 			        temp_count= phy_timer_count_get();
         memcpy(&rx_rpt, rx_report, sizeof(struct MAC_HW_REPORT_T));
         rx_length = 0;
-//				OpenUWB();//再次开启UWB接收
+				OpenUWB();//再次开启UWB接收
     }
-	OpenUWB();//再次开启UWB接收
+	//OpenUWB();//再次开启UWB接收
 }
 
 /* TX done process handler. */
@@ -403,8 +405,8 @@
         temp_count= phy_timer_count_get();
         temp_internal=temp_count;
         resp_tx_num++;
-			
-//				OpenUWB();//再次开启UWB接收
+				resp_tx_flag=0;
+				OpenUWB();//再次开启UWB接收
         //LOG_INFO(TRACE_MODULE_APP, "poll_rx_num is %d,resp_tx_num is %d\r\n",poll_rx_num,resp_tx_num);
     }else{
 		mac_error=1;
@@ -895,7 +897,27 @@
     }
 }
 }
-
+void buffer_485_construct(uint8_t* show_buffer)
+{				static uint8_t usart_send[100];
+				uint16_t checksum = 0;
+        usart_send[0] = 0x55;
+        usart_send[1] = 0xAA;
+        usart_send[2] = 0x50;                        
+        usart_send[3] = 9+5*taglist_num;      //length            
+        memcpy(&usart_send[4],&dev_id,2); //anchor_id)
+				usart_send[6]=taglist_num;       //区域数量
+        memcpy(&usart_send[7],&show_buffer,taglist_num);//区域位置
+        memcpy(&usart_send[7+taglist_num],&ancidlist_rec,2*taglist_num);//tag_idlist
+        memcpy(&usart_send[7+taglist_num+2*taglist_num],&rec_ancdistlist,2*taglist_num); //tag_distlist
+				usart_send[7+5*taglist_num]=0;//保留4位RESERVE1
+				usart_send[7+5*taglist_num+1]=0;
+				usart_send[7+5*taglist_num+2]=0;
+				usart_send[7+5*taglist_num+3]=0;
+	
+        checksum = Checksum_u16(&usart_send[2],9+5*taglist_num);
+        memcpy(&usart_send[7+5*taglist_num+4], &checksum, 2);
+				uart_send(UART_ID0, usart_send,13+5*taglist_num, NULL);
+}
 int Anchor_App(void)
 {
 				uint8_t i;
@@ -961,10 +983,8 @@
 									Anchor_RecNearPoll(rec_nearbase_num);
                 }
 				}
-//				 //phy_update_sts_iv_counter(0x00, sts_iv_key.sts_vcounter);//新增sts
-//				 LOG_INFO(TRACE_MODULE_APP, "PDoA Azimuth %d Elevation %d FoM %u\r\n", mk_q7_to_s16(azimuth),
-//                                 mk_q7_to_s16(elevation), fom);
-				
+								 LOG_INFO(TRACE_MODULE_APP, "PDoA Azimuth %d Elevation %d FoM %u\r\n", mk_q7_to_s16(azimuth),
+                                 mk_q7_to_s16(elevation), fom);
 }
 int UwbRange(void)
 {

--
Gitblit v1.9.3