From 1e1b1b9f73152b17b960c5c2b1531d66ca4ddbe0 Mon Sep 17 00:00:00 2001
From: chen <15335560115@163.com>
Date: 星期一, 26 五月 2025 18:15:11 +0800
Subject: [PATCH] 移植完新版lora和新版测距代码,lora传输有问题未解决

---
 keil/include/main/main.c           |   13 +++-
 pin_config.c                       |    5 +
 keil/include/src/Radio/lora_1268.h |    2 
 keil/include/src/Radio/lora_1268.c |  117 +--------------------------------------
 keil/include/drivers/uwb_app.c     |   18 ++++--
 5 files changed, 29 insertions(+), 126 deletions(-)

diff --git a/keil/include/drivers/uwb_app.c b/keil/include/drivers/uwb_app.c
index dec30a9..315abe6 100644
--- a/keil/include/drivers/uwb_app.c
+++ b/keil/include/drivers/uwb_app.c
@@ -281,7 +281,7 @@
 /* RX done process handler. */
 int8_t rssi;
 uint32_t range_timeout_us = 2000000;//yuan5000
-uint8_t flag_temp2,flag_temp1;
+uint8_t flag_temp2,flag_temp1,resp_tx_flag;
 uint16_t uwb_losttimer;
 static void rx_int_callback(struct MAC_HW_REPORT_T *rx_report)
 {		uint8_t valid_sts=0;
@@ -290,7 +290,7 @@
 
     /** UWB RX success */
     if (rx_report->err_code == UWB_RX_OK)
-    {
+    {		resp_tx_flag=0;
         /* Received data does not contain FCS */
         rx_length = rx_report->pkt_len;
         memcpy(rx_buf, rx_report->pkt_data, rx_length);
@@ -303,6 +303,10 @@
         rssi = rx_report->rssi;
         receive_flag=1;
 				Anchor_App();
+			if(resp_tx_flag==0)
+			{
+			  OpenUWB();
+			}
 			#ifdef STS_MODE
 				valid_sts= sts_valid_check();
       if (valid_sts)
@@ -330,9 +334,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. */
@@ -346,6 +350,7 @@
     {
         temp_count= phy_timer_count_get();
         temp_internal=temp_count;
+				OpenUWB();
         resp_tx_num++;
 		//		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);
@@ -468,7 +473,7 @@
     for(i=0; i<taglist_num; i++)
     {		
 			
-			if(tagofflinetime[i]++<REPORT_TAG_KEEPTIMES)
+			if(tagofflinetime[i]<REPORT_TAG_KEEPTIMES)
         {
             report_ancid[k]=tagid_list[i];
             report_ancdist[k++]=(uint16_t)tagdist_list[i];
@@ -517,6 +522,7 @@
     temp_resp_i64=resp_tx_ts_i64;
     temp_count3= phy_timer_count_get();
     flag_temp2=uwb_tx(send_buffer, 40,1 ,resp_tx_en_start_u32);//立即发送测试size大小
+		resp_tx_flag=1;//限制重复开启
 		tagofflinetime[taglist_pos] = 0;//更新标签通信
 //    temp_count1=phy_timer_count_get();
     //while(mac_is_busy());
@@ -595,7 +601,7 @@
 		if(secondtask_search_flag)//更新S时间TICK
 		{
 		HIDO_TimerTick();
-		TagListUpdate();
+		//TagListUpdate();
 //    GPS_Poll();
 //		if(nomove_count<=g_com_map[NOMOVESLEEP_TIME])//防止溢出
 //    nomove_count++;
diff --git a/keil/include/main/main.c b/keil/include/main/main.c
index 3f00e85..0417d55 100644
--- a/keil/include/main/main.c
+++ b/keil/include/main/main.c
@@ -170,8 +170,12 @@
     port = g_com_map[TCP_PORT];
     g_com_map[VERSION] = (1<<8)|0;
     LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id);
-    LOG_INFO(TRACE_MODULE_APP,"固件版本:MK_Air_tag_免布线模式 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
-    LOG_INFO(TRACE_MODULE_APP,"服务器地址: %d.%d.%d.%d:%d.\r\n",ip0,ip1,ip2,ip3,port);
+		if(gpio_pin_get_val(MODE_CHANGE_PIN))
+    LOG_INFO(TRACE_MODULE_APP,"固件版本:MK_Air_tag模式 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
+		else{
+		LOG_INFO(TRACE_MODULE_APP,"固件版本:MK_免布线模式 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
+		}
+    //LOG_INFO(TRACE_MODULE_APP,"服务器地址: %d.%d.%d.%d:%d.\r\n",ip0,ip1,ip2,ip3,port);
 }
 void MinuteTask(void)
 {		
@@ -300,10 +304,11 @@
     // Configure IO_04 for RF Switch
     gpio_pin_set_dir(IO_PIN_4, GPIO_DIR_OUT, 0);
 #else
-		Program_Init();
+
 		spi_init();
     // 模式判断脚和spi nrst脚初始化
     board_mode_pin_init();
+				Program_Init();
 //    board_led_on(BOARD_LED_1);
 #endif
 		Board_LORA_NVIC_Init(Lora_irq_handler);
@@ -353,7 +358,7 @@
 	 // Disable watchdog timer
     wdt_close(WDT_ID0);
     LOG_INFO(TRACE_MODULE_APP, "UCI FiRa example\r\n");
-	if(gpio_pin_get_val(MODE_CHANGE_PIN))
+	if(gpio_pin_get_val(MODE_CHANGE_PIN))//记得改回来与正式的相反
 	{
 		// Platform init for WSF
     PalSysInit();
diff --git a/keil/include/src/Radio/lora_1268.c b/keil/include/src/Radio/lora_1268.c
index 0ab8651..c45ce99 100644
--- a/keil/include/src/Radio/lora_1268.c
+++ b/keil/include/src/Radio/lora_1268.c
@@ -187,117 +187,6 @@
 #define GET_USERKEY gpio_pin_get_val(SOS_PIN)
 void LoraReportPoll(void)
 {
-////    // delay_ms(100);
-
-////#ifdef _USE_BAR
-////    GetPressAndHeight();
-////    intheight = Height*100;
-////#endif
-////#ifdef _SMT_TEST
-////    printf("气压值:%d",intheight);
-////#endif
-
-//////    TagListUpdate();
-
-////    LoraReportFreqPoll();
-////    flag_getwgresp = 0;
-
-//    SwitchLoraSettings(478,REPORT_CHANNEL_SF,22);
-
-////    if(heatbeat_count++>HEATBEAT_UPDATE_TIME && WG_Connected == wg_state) //如果心跳包到达上传时间,并且网关处于链接状态,就上传心跳包
-////    {
-////        heatbeat_count = 0;
-////        LoraHeartBeartPoll();
-////        return;
-////    }
-////    for(uint16_t i=0; i<report_ancnum-1; i++)
-////    {
-////        for(uint16_t j=0; j<report_ancnum-1-i; j++)
-////        {
-////            if(report_ancdist[j]>report_ancdist[j+1])
-////            {
-////                uint16_t id,dist;
-////                uint8_t bat;
-////                id = report_ancid[j];
-////                dist = report_ancdist[j];
-////                report_ancid[j] = report_ancid[j+1];
-////                report_ancdist[j] = report_ancdist[j+1];
-////                report_ancid[j+1] = id;
-////                report_ancdist[j+1] = dist;
-////            }
-////        }
-////    }
-////    
-////    if(report_ancnum>LORA_REPORT_MAXANC_NUM)	                              //考虑lora传输时间,最多发送10个基站数据。
-////		{
-////      report_ancnum = LORA_REPORT_MAXANC_NUM;
-////		} 		  
-////				
-////#ifdef USE_GPS
-////    lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG_GPS;
-////    lora_sendbuffer[MSG_LENGTH] = 4*report_ancnum+30;
-////#else
-////		BT_NUM=DMA_RXBuf_BT[0];
-////		if(SOS_KEY_STATE)
-////		{
-////			BT_NUM=0;
-//////		}
-////    lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG;
-//		lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG_BT;
-//    //lora_sendbuffer[MSG_LENGTH] = 4*report_ancnum+4*BT_NUM+ANCID_IDX+3;
-////#endif
-//    memcpy(&lora_sendbuffer[SOURCE_ID_IDX],&g_com_map[DEV_ID],2);
-//    memcpy(&lora_sendbuffer[DEST_ID_IDX],&wg_report_id,2);
-//    lora_sendbuffer[SEQNUM_IDX] = seq_num++;
-//    lora_sendbuffer[BAT_IDX] = bat_percent;
-////		lora_sendbuffer[STATE_IDX] = !GET_USERKEY|stationary_flag<<1;
-////		//GET_USERKEY这个是那个lora——busy那个引脚
-//////		lora_sendbuffer[STATE_IDX]=0x01;
-//////		lora_sendbuffer[GATEWAY_CHANL]=0x02;
-//////		lora_sendbuffer[CHANL_NUM]=0x03;
-////    
-////#ifdef USE_GPS
-////    memcpy(&lora_sendbuffer[GPS_JINGDU_IDX],&gps_jingdu,8);
-////    memcpy(&lora_sendbuffer[GPS_WEIDU_IDX],&gps_jingdu,8);
-////    memcpy(&lora_sendbuffer[GPS_HEIGHT_IDX],&gps_height,8);
-////    lora_sendbuffer[GPS_STATE_IDX] = gps_state;
-////    lora_sendbuffer[GPS_SATEL_NUM_IDX] = gps_satel_num;
-////    lora_sendbuffer[GPS_SPOWER_IDX] = gps_signalpower;
-////    lora_sendbuffer[GPS_CHAFENLINGQI] = gps_chafenlingqi;
-////#endif
-////    memcpy(&lora_sendbuffer[BAR_HEIGHT_IDX],&intheight,2);
-////    lora_sendbuffer[BT_ANCID_IDX] = report_ancnum;
-////    memcpy(&lora_sendbuffer[BT_ANCID_IDX+1],report_ancid,report_ancnum*2);
-////    memcpy(&lora_sendbuffer[BT_ANCID_IDX+report_ancnum*2+1],report_ancdist,report_ancnum*2);
-////		uint8_t LORA_RETRANSNUSSION_BT=0;
-//////		
-//////		num[0]=REV_RX_NUM;
-//////		num[1]=REV_POLL_NUM;
-//////		num[2]=REPLY_POLL_NUM;
-////		LORA_RETRANSNUSSION_BT=BT_ANCID_IDX+report_ancnum*4+1;
-////		lora_sendbuffer[LORA_RETRANSNUSSION_BT] = 0x2D; 		//蓝牙上传标识符
-
-////    memcpy(&lora_sendbuffer[LORA_RETRANSNUSSION_BT+1],&DMA_RXBuf_BT[0],BT_NUM*2+1); 									//基站ID
-////    memcpy(&lora_sendbuffer[LORA_RETRANSNUSSION_BT+BT_NUM*2+2],&DMA_RXBuf_BT[1+BT_NUM*2],BT_NUM*2);//基站距离		
-////		lora_sendbuffer[MSG_LENGTH] = LORA_RETRANSNUSSION_BT+4*BT_NUM+2;
-//////		}
-//////		if(lora_sendbuffer[LORA_RETRANSNUSSION_BT]==0x2D)
-//////		{
-////		checksum = Checksum_u16(lora_sendbuffer,4*BT_NUM+4*report_ancnum+BT_ANCID_IDX+3);
-////		memcpy(&lora_sendbuffer[LORA_RETRANSNUSSION_BT+BT_NUM*4+2],&checksum,2);
-//		BT_SEND_flag=BT_ANCID_IDX+report_ancnum*4+BT_NUM*4+5;
-//		Radio.Send(lora_sendbuffer,BT_SEND_flag);	
-////		LORA_POLL_COUNT++;
-//////		LORA_3029_SINGLE_SEND(lora_sendbuffer,ANCID_IDX+report_ancnum*4+BT_NUM*4+4,0);
-//////		}
-//////		else
-//////		{
-//////		checksum = Checksum_u16(lora_sendbuffer,4*report_ancnum+ANCID_IDX);
-//////		memcpy(&lora_sendbuffer[ANCID_IDX+report_ancnum*4],&checksum,2);
-//////		Radio.Send(lora_sendbuffer,ANCID_IDX+report_ancnum*4+BT_NUM*4+2);
-//////		}
-
-
 #ifdef _USE_BAR
     GetPressAndHeight();
     intheight = Height*100;
@@ -570,8 +459,8 @@
 										switch(RX_Buffer[PWTAG_RW_FLAG_IDX])
 										{
 												case WGRSP_RWTAG_NONE:
-//												REV_WG_pack++;
-//                        wg_report_freq = RX_Buffer[POLL_FREQ_IDX]+400;
+												REV_WG_pack++;
+                        wg_report_freq = RX_Buffer[POLL_FREQ_IDX]+400;
 //                        memcpy(&rec_delaytime,&RX_Buffer[NEXTPOLL_TIME_IDX],2);
 
 //                        if(report_ancnum<2)
@@ -629,7 +518,7 @@
                             g_com_map[rec_index/2] = rec_value;
                             save_com_map_to_flash();
                             LoraRspWriteCommap(SUBMSG_WRITE_ANCPARA);
-                            //flag_writepara_needreset = 1;
+                            flag_writepara_needreset = 1;
                             no_rx_flag = 1;                           
 															}
 
diff --git a/keil/include/src/Radio/lora_1268.h b/keil/include/src/Radio/lora_1268.h
index 13d1877..b4eed72 100644
--- a/keil/include/src/Radio/lora_1268.h
+++ b/keil/include/src/Radio/lora_1268.h
@@ -41,7 +41,7 @@
 #define UWB_CHANNEL_FRQ 470
 #define UWB_CHANNEL_SF 5
 
-#define REPORT_MANGE_CHANNEL_FRQ 478
+#define REPORT_MANGE_CHANNEL_FRQ 500
 #define REPORT_CHANNEL_SF 7
 
 #define LR_DATA_CHANNEL_FRQ 475
diff --git a/pin_config.c b/pin_config.c
index bc02294..1e55589 100644
--- a/pin_config.c
+++ b/pin_config.c
@@ -116,7 +116,10 @@
     // UART1 RX/TX
     io_pin_mux_set(IO_PIN_14, IO_FUNC4);
     io_pin_mux_set(IO_PIN_1, IO_FUNC4);
-
+		
+		//PA引脚开启
+		io_pin_mux_set(IO_PIN_9, IO_FUNC6);
+		io_pin_mux_set(IO_PIN_10, IO_FUNC6);
 
 #elif BOARD_TYPE == MK8000_DK
 

--
Gitblit v1.9.3