From 50bba4559b0c7846613efd6bf9ec8a9c3b1982ce Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期二, 18 二月 2025 16:59:11 +0800
Subject: [PATCH] 移植了外国sx1268lora模块代码。等板子再调,刚把error解决

---
 keil/include/main/main.c |  451 ++------------------------------------------------------
 1 files changed, 19 insertions(+), 432 deletions(-)

diff --git a/keil/include/main/main.c b/keil/include/main/main.c
index 89805c8..55e3da7 100644
--- a/keil/include/main/main.c
+++ b/keil/include/main/main.c
@@ -66,7 +66,7 @@
 #include "mk_timer.h"
 //#include "pan_param.h"
 //#include "pan_rf.h"
-#include "lora_3029.h"
+#include "Lora.h"
 #include "pan_rf.h"
 #include "PCA9555.h"
 #define DEBUG_MODE
@@ -84,7 +84,8 @@
 #define UPDATE_TIME 10
 
 #define SOS_DIO  IO_PIN_5
-
+uint16_t wg_report_freq,wg_report_id;
+extern uint8_t wg_report_sf;
 void test_Delay_us(uint16_t time);
 void Lora_UploadHeartBeartPoll(void);
 extern uint8_t mUsartReceivePack[100];
@@ -92,7 +93,7 @@
 extern uint8_t state5V_prase_flag,gps_prase_flag;
 extern int distance;
 extern uint8_t anchordata_num;   //bat_percent
-uint32_t dev_id;
+uint16_t dev_id;
 uint8_t group_id;
 uint16_t tag_frequency;
 uint16_t disoffset;
@@ -182,18 +183,6 @@
     }
   //  LOG_INFO(TRACE_MODULE_APP, "The voltage is %%%d \r\n",bat_percent);
 }
-//static void timer_callback(void *dev, uint32_t time)
-//{
-//    enum TIMER_DEV_T id = *(enum TIMER_DEV_T *)dev;
-//    LOG_INFO(TRACE_MODULE_APP, "Timer %d elapsed time %d\r\n", id, time);
-//}
-//void UartInit(void)
-//{
-//board_pins_config();
-//uart_open(UART_ID1, &test_uart_cfg);
-//board_debug_console_open(TRACE_PORT_UART0);
-//uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
-//}
 extern uint8_t gps_uwb_flag;
 uint8_t TCP_reconnect_timer,flag_TCP_reconnectting = 1,flag_alam_state = 0;
 uint8_t gps_enable_flag,motor_open_air_flag,moter_open_uwb_flag;
@@ -292,7 +281,7 @@
 }
 uint8_t flag_sleeptimer,flag_secondtask,secondtask_count;
 uint8_t  lora_wg_up=0;
-extern uint8_t lora_tx_flag;
+uint8_t lora_tx_flag;
 uint32_t maintime;
 static void sleep_timer_callback(void *dev, uint32_t time)
 {
@@ -302,7 +291,7 @@
 ////		gpio_pin_clr(IO_PIN_5);//测试
 	//	gpio_pin_set(IO_PIN_5);//测试
 	  // lora_wg_up=1;
-	   lora_tx_flag++;
+	   lora_tx_flag=1;
 //	   lora_qiehuan++;
 //    IO_control_init();
 //    UWBPoll();
@@ -552,16 +541,15 @@
 /********************************************************************************************************/
 /********************************************************************************************************/
 static uint16_t delaytime = 771;
-extern uint16_t wg_report_freq,wg_report_id;
 extern uint32_t wg_lost_count;
 extern uint8_t shengji_flag;
-extern uint8_t lora_jianting_flag,report_ancnum;
+uint8_t lora_jianting_flag,report_ancnum;
 uint8_t imu_enable,motor_enable;
 uint32_t time_flag_lorarx=0;
 uint32_t lora_huanxing_count=0;
 uint16_t Lora_wangguanid=0;
 wg_state_enum wg_state = WG_Lost;
-uint16_t wangguan_up_id;
+//uint16_t wangguan_up_id;
 uint8_t LoraUp_flag;
 uint16_t rec_wenjian_daxiao;
 uint16_t recnum[3];
@@ -569,10 +557,12 @@
 uint16_t tx_flag=0;
 uint16_t CRC16=0;
 uint16_t DEST_ID=0;
-uint16_t rec_value,rec_delaytime,rx_count,datalen_offset;
+//uint16_t rec_value,rec_delaytime,datalen_offset;
 uint16_t Loratx_flag=0;
 uint16_t Lorarx_flag=0;
 uint16_t Lorarx_time_out_flag=0;
+uint16_t Lorarx_time_error_flag=0;
+uint16_t Lorairq_time_flag=0;
 uint8_t tx_buf[5]={0,1,0,1,1};
 uint32_t sleep_time_count=0;
 uint32_t uwb_ceju_count=0;
@@ -582,220 +572,8 @@
 //xtal_38m4_off_time(sleep_time_count);
 /********************************************************************************************************/
 static void Lora_irq_handler(enum IO_PIN_T pin)
-{
-	    
-			uint16_t checksum1;	
-			rf_irq_process();
-	    gpio_pin_set(IO_PIN_5);//测试
-			no_rx_flag=0;
-	    tx_flag=rf_get_transmit_flag();
-	    recv_flag=rf_get_recv_flag();
-        if(recv_flag == RADIO_FLAG_RXDONE)
-        {
-				 rf_set_recv_flag(RADIO_FLAG_IDLE);
-				
-				 memcpy(RX_Buffer,RxDoneParams.Payload,RxDoneParams.Size);
-					BufferSize=RxDoneParams.Size;
-					 lora_huanxing_count++;
-				 if(RX_Buffer[MSG_TYPE_IDX]==LORA_MSGTYPE_WGRESPTAG)
-						{
-							checksum1=Checksum_u16(RX_Buffer,BufferSize-2);
-							
-              memcpy(&DEST_ID,&RX_Buffer[DEST_ID_IDX],2);
-							memcpy(&CRC16,&RX_Buffer[BufferSize-2],2);
-							if(!memcmp(&checksum1,&RX_Buffer[BufferSize-2],2))
-							if(!memcmp(&dev_id,&RX_Buffer[DEST_ID_IDX],2))
-							{
-								memcpy(&source_id,&RX_Buffer[SOURCE_ID_IDX],2); 
-								if(wg_state==WG_Lost)
-									{
-									 wg_state = WG_Connected;
-									 wg_report_id = source_id;
-									}
-								if(!memcmp(&wg_report_id,&RX_Buffer[SOURCE_ID_IDX],2))
-								{
-										wg_lost_count = 0;
-										switch(RX_Buffer[PWTAG_RW_FLAG_IDX])
-										{
-												case WGRSP_RWTAG_NONE:
-//                        current_count = HAL_LPTIM_ReadCounter(&hlptim1);
-												 // sleep_time_count=xtal_38m4_off_time();
-                        wg_report_freq = RX_Buffer[POLL_FREQ_IDX]+400;
-                        memcpy(&rec_delaytime,&RX_Buffer[NEXTPOLL_TIME_IDX],2);
-                        if(report_ancnum<2)
-                        {
-                            datalen_offset = report_ancnum*85;
-                        }else{
-                            datalen_offset = (report_ancnum-1)*46+85;
-                        }
-//                        rec_secdelay = RX_Buffer[PWTAG_SECDELAY_IDX];
-//                        if(BufferSize!=13||rec_secdelay>20)
-//                        {
-//                            rec_secdelay = 0;
-//                        }
-                        //*3.2768
-                        sleep_time_count = (rec_delaytime*32.768 - delaytime-datalen_offset)/10;
-//												while(sleep_time_count>=1000)
-//												{
-//												 sleep_time_count-=1000;
-//												}	
-												sleep_timer_start(sleep_time_count);
-//                        while(sleep_time_count>=32768)
-//                            sleep_time_count-=32768;
-//									    	sleep_timer_start(sleep_time_count);
-                       // __HAL_LPTIM_COMPARE_SET(&hlptim1, target_count);
-                       // rx_count = HAL_LPTIM_ReadCounter(&hlptim1);
-                     //   printf("tx %d,rx %d,delay %d",current_count>>5,rx_count>>5,rec_delaytime);
-                        break;
-												case WGRSP_RWTAG_READ:
-															no_rx_flag = 1;
-															LoraSendComMap(WGRSP_RWTAG_READ);
-															break;
-												case WGRSP_RWTAG_WRITE:
-														rec_index = RX_Buffer[PWTAG_WRITE_IDX_IDX];
-													switch(rec_index)
-															{
-																	case 0xdd:  //语音下发
-																			break;
-//                        case 0x20:  //蜂鸣
-//                            memcpy(&rec_value,&RX_Buffer[PWTAG_WRITE_VALUE_IDX],2);
-//                            motor_keeptime = rec_value;
-//                            break;
-                        default :
-                            memcpy(&rec_value,&RX_Buffer[PWTAG_WRITE_VALUE_IDX],2);
-                            g_com_map[rec_index/2] = rec_value;
-                            save_com_map_to_flash();
-                            LoraRspWriteCommap(SUBMSG_WRITE_ANCPARA);
-                            //flag_writepara_needreset = 1;
-                            no_rx_flag = 1;                           
-															}
-
-															break; 
-												case WGRSP_RWTAG_UPDATE:
-												rec_index = RX_Buffer[PWTAG_WRITE_IDX_IDX];
-												switch(rec_index)
-												{
-														case 0xaa:  //升级下发
-														memcpy(&rec_wenjian_daxiao,&RX_Buffer[WRITEPARA_VALUE_IDX],2);//文件大小
-														if(rec_wenjian_daxiao>0XAC00||rec_wenjian_daxiao==0)
-														{}//文件过大,超出范围
-														else
-														{
-																memcpy(&wangguan_up_id,&RX_Buffer[SOURCE_ID_IDX],2);//网关ID 占用2个字节
-																shengji_flag=1;
-																LoraUp_flag=1;   
-																imu_enable=0;                            
-														}
-//                    		  LoraUp_Poll();
-																break;                        
-												}
-														break; 
-										}
-									}
-								}
-
-							}						
-    if(!no_rx_flag)
-    {
-        if(lora_jianting_flag)
-        {
-						uint32_t para;
-//            SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0);
-            rf_set_mode(RF_MODE_STB3);
-						para=(UWB_CHANNEL_FRQ+group_id)*1000000;
-						rf_set_freq(para);	
-						rf_set_sf(UWB_CHANNEL_SF);
-            rf_enter_continous_rx();
-        }
-    }
-				
-      }
-			if(tx_flag == RADIO_FLAG_TXDONE)
-        {
-				 //rf_set_mode(RF_MODE_STB3);
-				 rf_set_transmit_flag(RADIO_FLAG_IDLE);
-				 Loratx_flag++;
-
-//				#ifdef DEBUG_BOXING
-//		    //gpio_pin_clr(IO_PIN_5);//测试
-//		    gpio_pin_set(IO_PIN_5);//测试
-//				#endif
-			 	rf_enter_single_timeout_rx(100);
-			 // rf_enter_single_rx();
-			//		rf_enter_continous_rx();
-		
-//			mode_change = !mode_change; 
-//			if(mode_change)
-//			{
-//			//rf_init();	
-//		  rf_set_mode(RF_MODE_STB3);
-//		  para=4810 * 100000;
-//      rf_set_freq(para);	
-//      rf_set_sf(5);
-
-//			//dis_set_mode(TX_cnt);
-////			rf_enter_continous_rx();
-//			rf_single_tx_data(tx_buf, 10,0);
-//	
-//			}
-//			else
-//			{
-////		  rf_init();
-//			rf_set_mode(RF_MODE_STB3);
-//			para=4910 * 100000;
-//      rf_set_freq(para);	
-//      rf_set_sf(7);	
-//			//dis_set_mode(TX_cnt);
-////			rf_enter_continous_rx();
-//			rf_single_tx_data(tx_buf, 10,0);
-
-//			}				
-         //LoraReportPoll();
-        }
-        if((recv_flag == RADIO_FLAG_RXTIMEOUT))
-        {
-//							#ifdef DEBUG_BOXING
-//							gpio_pin_clr(IO_PIN_5);//测试
-//				//		gpio_pin_set(IO_PIN_5);//测试
-//							#endif
-					
-					//这个超时接收是会自动重启的,所以必须将芯片状态置成STB3这样就退出了连续接收状态
-					  rf_set_mode(RF_MODE_STB3);
-					//这个超时接收是会自动重启的,所以必须将芯片状态置成STB3这样就退出了连续接收状态
-					
-						Lorarx_time_out_flag++;
-					  rf_set_recv_flag(RADIO_FLAG_IDLE);
-						rf_set_freq(UWB_CHANNEL_FRQ+group_id*10000000);
-						rf_set_sf(UWB_CHANNEL_SF);
-						
-					if(lora_jianting_flag)
-					{
-						uint32_t para;
-//            SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0);
-            rf_set_mode(RF_MODE_STB3);
-						para=(UWB_CHANNEL_FRQ+group_id)*1000000;
-						rf_set_freq(para);	
-						rf_set_sf(UWB_CHANNEL_SF);
-            rf_enter_continous_rx();
-					 }
-					//  rf_clr_irq(REG_IRQ_RX_TIMEOUT);
-				 //  rf_enter_single_timeout_rx(100);
-        }
-				if((recv_flag == RADIO_FLAG_RXERR))
-				{
-				    rf_set_recv_flag(RADIO_FLAG_IDLE);
-					if(lora_jianting_flag)
-					{
-						uint32_t para;
-//            SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0);
-            rf_set_mode(RF_MODE_STB3);
-						para=(UWB_CHANNEL_FRQ+group_id)*1000000;
-						rf_set_freq(para);	
-						rf_set_sf(UWB_CHANNEL_SF);
-            rf_enter_continous_rx();
-					 }
-				}
-				
+{   
+    RadioIrqProcess();
 }
 static void Sos_irq_handler(enum IO_PIN_T pin)
 {
@@ -806,165 +584,6 @@
 	BT_LED_QF_state(state);
 	MOTOR_QA_state(state);
 }
-
-//
-
-//static void Lora_irq_handler(enum IO_PIN_T pin)
-//{
-//			uint16_t checksum1;	
-//			rf_irq_process();
-//			//这里根据SDK的那个逻辑 用你的接口看看
-//	    tx_flag=rf_get_transmit_flag();
-//	    recv_flag=rf_get_recv_flag();
-//			if(recv_flag == RADIO_FLAG_RXDONE)
-//        {
-//				 rf_set_recv_flag(RADIO_FLAG_IDLE);
-//				
-//				 memcpy(RX_Buffer,RxDoneParams.Payload,RxDoneParams.Size);
-//					BufferSize=RxDoneParams.Size;
-//					 lora_huanxing_count++;
-//					if(RX_Buffer[0]==0x04&&RX_Buffer[1]=='I'&&RX_Buffer[2]=='N'&&RX_Buffer[3]=='G')
-//						{
-//             
-//							time_flag_lorarx=phy_timer_count_get();
-//							UwbRange();
-//					    //rf_enter_continous_rx(); //重新进入接收模式
-//				    	//LORA_REV_uwb_up=1;
-//						}
-//				 if(RX_Buffer[MSG_TYPE_IDX]==LORA_MSGTYPE_WGRESPTAG)
-//						{
-//							checksum1=Checksum_u16(RX_Buffer,BufferSize-2);
-//							
-//              memcpy(&DEST_ID,&RX_Buffer[DEST_ID_IDX],2);
-//							memcpy(&CRC16,&RX_Buffer[BufferSize-2],2);
-//							if(!memcmp(&checksum1,&RX_Buffer[BufferSize-2],2))
-//							if(!memcmp(&dev_id,&RX_Buffer[DEST_ID_IDX],2))
-//							{
-//								memcpy(&source_id,&RX_Buffer[SOURCE_ID_IDX],2); 
-//								if(wg_state==WG_Lost)
-//									{
-//									 wg_state = WG_Connected;
-//									 wg_report_id = source_id;
-//									}
-//								if(!memcmp(&wg_report_id,&RX_Buffer[SOURCE_ID_IDX],2))
-//								{
-//										wg_lost_count = 0;
-//										switch(RX_Buffer[PWTAG_RW_FLAG_IDX])
-//										{
-//												case WGRSP_RWTAG_NONE:
-////                        current_count = HAL_LPTIM_ReadCounter(&hlptim1);
-////                        wg_report_freq = RX_Buffer[POLL_FREQ_IDX]+400;
-////                        memcpy(&rec_delaytime,&RX_Buffer[NEXTPOLL_TIME_IDX],2);
-////                        if(report_ancnum<2)
-////                        {
-////                            datalen_offset = report_ancnum*85;
-////                        }else{
-////                            datalen_offset = (report_ancnum-1)*46+85;
-////                        }
-////                        rec_secdelay = RX_Buffer[PWTAG_SECDELAY_IDX];
-////                        if(BufferSize!=13||rec_secdelay>20)
-////                        {
-////                            rec_secdelay = 0;
-////                        }
-////                    
-////                        target_count = current_count + rec_delaytime*3.2768 - delaytime-datalen_offset;
-////                        while(target_count>=32768)
-////                            target_count-=32768;
-////                        __HAL_LPTIM_COMPARE_SET(&hlptim1, target_count);
-//                       // rx_count = HAL_LPTIM_ReadCounter(&hlptim1);
-//                     //   printf("tx %d,rx %d,delay %d",current_count>>5,rx_count>>5,rec_delaytime);
-//                        break;
-//												case WGRSP_RWTAG_READ:
-//															no_rx_flag = 1;
-//															LoraSendComMap(WGRSP_RWTAG_READ);
-//															break;
-//												case WGRSP_RWTAG_WRITE:
-//														rec_index = RX_Buffer[PWTAG_WRITE_IDX_IDX];
-//													switch(rec_index)
-//															{
-//																	case 0xdd:  //语音下发
-//																			break;
-////                        case 0x20:  //蜂鸣
-////                            memcpy(&rec_value,&RX_Buffer[PWTAG_WRITE_VALUE_IDX],2);
-////                            motor_keeptime = rec_value;
-////                            break;
-//                        default :
-//                            memcpy(&rec_value,&RX_Buffer[PWTAG_WRITE_VALUE_IDX],2);
-//                            g_com_map[rec_index/2] = rec_value;
-//                            save_com_map_to_flash();
-//                            LoraRspWriteCommap(SUBMSG_WRITE_ANCPARA);
-//                            //flag_writepara_needreset = 1;
-//                            no_rx_flag = 1;                           
-//															}
-
-//															break; 
-//												case WGRSP_RWTAG_UPDATE:
-//												rec_index = RX_Buffer[PWTAG_WRITE_IDX_IDX];
-//												switch(rec_index)
-//												{
-//														case 0xaa:  //升级下发
-//														memcpy(&rec_wenjian_daxiao,&RX_Buffer[WRITEPARA_VALUE_IDX],2);//文件大小
-//														if(rec_wenjian_daxiao>0XAC00||rec_wenjian_daxiao==0)
-//														{}//文件过大,超出范围
-//														else
-//														{
-//																memcpy(&wangguan_up_id,&RX_Buffer[SOURCE_ID_IDX],2);//网关ID 占用2个字节
-//																shengji_flag=1;
-//																LoraUp_flag=1;   
-//																imu_enable=0;                            
-//														}
-////                    		  LoraUp_Poll();
-//																break;                        
-//												}
-//														break; 
-//										}
-//									}
-//								}
-
-//							}						
-
-//				
-//      }
-//			if(tx_flag == RADIO_FLAG_TXDONE)
-//        {
-//				 //rf_set_mode(RF_MODE_STB3);
-//				 rf_set_transmit_flag(RADIO_FLAG_IDLE);
-//					Loratx_flag++;
-
-////				#ifdef DEBUG_BOXING
-////		    //gpio_pin_clr(IO_PIN_5);//测试
-////		    gpio_pin_set(IO_PIN_5);//测试
-////				#endif
-//				rf_enter_single_timeout_rx(100);
-//			 // rf_enter_single_rx();
-//			//		rf_enter_continous_rx();
-
-//        }
-//        if((recv_flag == RADIO_FLAG_RXTIMEOUT))
-//        {
-////							#ifdef DEBUG_BOXING
-////							gpio_pin_clr(IO_PIN_5);//测试
-////				//		gpio_pin_set(IO_PIN_5);//测试
-////							#endif
-//					
-//					//这个超时接收是会自动重启的,所以必须将芯片状态置成STB3这样就退出了连续接收状态
-//					  rf_set_mode(RF_MODE_STB3);
-//					//这个超时接收是会自动重启的,所以必须将芯片状态置成STB3这样就退出了连续接收状态
-//					
-//						Lorarx_time_out_flag++;
-//					  rf_set_recv_flag(RADIO_FLAG_IDLE);
-//					
-//					//  rf_clr_irq(REG_IRQ_RX_TIMEOUT);
-//				 //  rf_enter_single_timeout_rx(100);
-//        }
-//				if((recv_flag == RADIO_FLAG_RXERR))
-//				{
-//				    rf_set_recv_flag(RADIO_FLAG_IDLE);
-//				}
-//				
-//}
-
-
 
 void Board_LORA_NVIC_Init(GPIO_IRQ_HANDLER_T irq_handler)  //LORA 中断配置
 {
@@ -1056,14 +675,8 @@
 		Board_SOS_NVIC_Init(Sos_irq_handler);
 		//pca_input_detection_init(pca_handler);
 	  //gpio_pin_clr(LORA_CS);
-    Lora_init();
+//    Lora_init();
 
-		
-		//lora_freq=DEFAULT_up_FREQ+g_com_map[GROUP_ID];
-//     rf_set_default_para(DEFAULT_up_FREQ+g_com_map[GROUP_ID],DEFAULT_up_SF);
-//  	rf_set_default_para(478,7);
-		
-		rf_set_default_para(DEFAULT_WG_SET_FREQ,DEFAULT_WG_SET_SF);
 		//IC2_Init();
 		IO_control_init();	
 
@@ -1073,34 +686,7 @@
 	//	gps_air780_power_change(0,1);
 //    Accelerometer_Init();
 //		PCA9555_init();
-	  // rf_set_default_para(DEFAULT_up_FREQ+g_com_map[GROUP_ID],DEFAULT_up_SF);
-	   //rf_enter_continous_rx();
-		// rf_enter_continous_rx();
-		//rf_enter_continous_tx();
-//		if((rf_single_tx_data(TXBuffer,10,0))!= OK)
-//    {
-//        
-//    }
-	//	rf_set_default_para(DEFAULT_WG_SET_FREQ,DEFAULT_WG_SET_SF);
-	//	rf_set_default_para(DEFAULT_up_FREQ,DEFAULT_up_SF);
-//    
-     //rf_enter_continous_tx();
-//    rf_set_transmit_flag(RADIO_FLAG_TXDONE);
-//    rf_set_transmit_flag(RADIO_FLAG_TXDONE);
-//    if(rf_continous_tx_send_data(tx_test_buf, TX_LEN) != 0)
-//    {
-//        error_cnt++;
-//    }
-//    else
-//    {
-//        successful_cnt ++;
-//    }     
-    
-    
-//  while (rf_get_transmit_flag() == RADIO_FLAG_IDLE) ;
-//   
-//  rf_set_transmit_flag(RADIO_FLAG_IDLE);
-    
+
 //    adc_open(&usr_adc_cfg);
 
 //    IO_control_init();
@@ -1153,9 +739,10 @@
     { 
 //      gpio_pin_clr(IO_PIN_9);
 //	    Lora_Tx_Poll();
-     uwb_app_poll();
-       // UwbRange();
-   
+//            rf_irq_process();													//轮询中断标志
+
+//     uwb_app_poll();
+
 //        if(flag_TCP_reconnectting||IfTCPConnected())
 //        {
 //            

--
Gitblit v1.9.3