From c001d3bc92eac4bb81addd160ced367a25ed7931 Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期五, 25 七月 2025 14:13:09 +0800 Subject: [PATCH] 增加uwb错误处理逻辑,lora功率正常版 --- keil/include/main/main.c | 46 +++++++++++----------- keil/include/src/Radio/lora_1268.c | 51 +++++++++++++++---------- keil/include/drivers/uwb_app.c | 5 +- 3 files changed, 57 insertions(+), 45 deletions(-) diff --git a/keil/include/drivers/uwb_app.c b/keil/include/drivers/uwb_app.c index 956fe4e..64f2c9e 100644 --- a/keil/include/drivers/uwb_app.c +++ b/keil/include/drivers/uwb_app.c @@ -303,6 +303,7 @@ rssi = rx_report->rssi; receive_flag=1; Anchor_App(); + if(resp_tx_flag==0) { OpenUWB(); @@ -620,10 +621,10 @@ //LOG_INFO(TRACE_MODULE_APP,"关闭uwb_rx\r\n"); } void OpenUWB(void) -{ +{ flag_temp1=uwb_rx(0, 0,range_timeout_us);//提交接收请求 uwb_rx_flag=1; - //LOG_INFO(TRACE_MODULE_APP,"打开uwb_rx\r\n"); + LOG_INFO(TRACE_MODULE_APP,"打开uwb_rx\r\n"); } void UWBOneSecondTask(void) { diff --git a/keil/include/main/main.c b/keil/include/main/main.c index 09239b7..1183646 100644 --- a/keil/include/main/main.c +++ b/keil/include/main/main.c @@ -381,8 +381,8 @@ // lora_in_sleep(); // power_init(); // mcu_deep_sleep(); -// if(gpio_pin_get_val(SLEEP_PIN)) -// { + if(gpio_pin_get_val(SLEEP_PIN)) + { 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); @@ -497,7 +497,7 @@ LOG_INFO(TRACE_MODULE_APP,"固件版本:MK_免布线模式 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff); uart0_Init_normal(); Lora_1268_Init(); - LOG_INFO(TRACE_MODULE_APP," 切换6\r\n"); + //LOG_INFO(TRACE_MODULE_APP," 切换6\r\n"); SwitchLoraSettings(478,7,22); Uwb_init();//默认为我们测距配置 OpenUWB(); @@ -522,29 +522,29 @@ } Lora_Tx_Poll(); //LoraUp_Poll();//网关升级 -// if(!gpio_pin_get_val(SLEEP_PIN)) -// { -// delay_ms(300); -// //LOG_INFO(TRACE_MODULE_APP, "进入休眠模式\r\n");//会打断休眠 -// //gpio_pin_clr(LORA_NRST);//lora休眠 -// //spi_close(SPI_ID0); -// lora_in_sleep(); -// power_init(); -// mcu_deep_sleep(); -// } + if(!gpio_pin_get_val(SLEEP_PIN)) + { + delay_ms(300); + //LOG_INFO(TRACE_MODULE_APP, "进入休眠模式\r\n");//会打断休眠 + //gpio_pin_clr(LORA_NRST);//lora休眠 + //spi_close(SPI_ID0); + lora_in_sleep(); + power_init(); + mcu_deep_sleep(); + } IdleTask(); } } -//}else{ -// -//delay_ms(300); -// //LOG_INFO(TRACE_MODULE_APP, "进入休眠模式\r\n");//会打断休眠 -// //gpio_pin_clr(LORA_NRST);//lora休眠 -// //spi_close(SPI_ID0); -// lora_in_sleep(); -// power_init(); -// mcu_deep_sleep(); -//} +}else{ + +delay_ms(300); + //LOG_INFO(TRACE_MODULE_APP, "进入休眠模式\r\n");//会打断休眠 + //gpio_pin_clr(LORA_NRST);//lora休眠 + //spi_close(SPI_ID0); + lora_in_sleep(); + power_init(); + mcu_deep_sleep(); +} } void app_restore_from_power_down(void) diff --git a/keil/include/src/Radio/lora_1268.c b/keil/include/src/Radio/lora_1268.c index 38c28fd..736e0b6 100644 --- a/keil/include/src/Radio/lora_1268.c +++ b/keil/include/src/Radio/lora_1268.c @@ -187,6 +187,7 @@ extern uint8_t SOS_KEY_STATE; uint32_t LORA_POLL_COUNT=0; uint8_t test1,test2; +extern int poll_rx_num; #define GET_USERKEY gpio_pin_get_val(SOS_PIN) void LoraReportPoll(void) { @@ -206,14 +207,14 @@ //LOG_INFO(TRACE_MODULE_APP," 切换2\r\n"); //test1++; // LOG_INFO(TRACE_MODULE_APP," 切换9\r\n"); - //SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,22); - SwitchLoraSettings(478,7,22); -// if(heatbeat_count++>HEATBEAT_UPDATE_TIME && WG_Connected == wg_state) //如果心跳包到达上传时间,并且网关处于链接状态,就上传心跳包 -// { -// heatbeat_count = 0; -// LoraHeartBeartPoll(); -// return; -// } + SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,22); + //SwitchLoraSettings(478,7,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++) @@ -264,8 +265,15 @@ // test2++; num // LOG_INFO(TRACE_MODULE_APP," 切换8\r\n"); //SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,22); - // Radio.Send(lora_sendbuffer,ANCID_IDX+report_ancnum*4+2); - Radio.Send(num,3); + Radio.Send(lora_sendbuffer,ANCID_IDX+report_ancnum*4+2); + LOG_INFO(TRACE_MODULE_APP," 数量%d\r\n",poll_rx_num); + if(poll_rx_num==0) + { + CloseUWB(); + OpenUWB(); + } + poll_rx_num=0; + //Radio.Send(num,3); } @@ -536,6 +544,7 @@ return (crc&0xffffu); } + void LoraUp_Poll() { uint16_t result ; uint16_t crc16; @@ -551,9 +560,10 @@ huifushengjibao_flag=0; LoraUp_flag=1; Radio.Send(send_lora_data,8);//基站发送升级确认回复 + delay_ms(1000); -LOG_INFO(TRACE_MODULE_APP," 切换7\r\n"); - // SwitchLoraSettings(LORA_UPCHANNEL_FRQ,LORA_UPCHANNEL_SF,22); //切换lora升级频点 +//LOG_INFO(TRACE_MODULE_APP," 切换7\r\n"); + SwitchLoraSettings(LORA_UPCHANNEL_FRQ,LORA_UPCHANNEL_SF,22); //切换lora升级频点 delay_ms(200); __disable_irq(); // FLASH_Read(APP_1OR2_ADRESS,(uint8_t*)&app1_or_app2,2); @@ -813,8 +823,9 @@ if(!no_rx_flag) { if(lora_jianting_flag&&LoraUp_flag==0) - { LOG_INFO(TRACE_MODULE_APP," 切换2\r\n"); -// SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); + { + //LOG_INFO(TRACE_MODULE_APP," 切换2\r\n"); + SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); Radio.Rx(0); } } @@ -826,8 +837,8 @@ Radio.Standby(); if(lora_jianting_flag) { - LOG_INFO(TRACE_MODULE_APP," 切换3\r\n"); - // SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); +// LOG_INFO(TRACE_MODULE_APP," 切换3\r\n"); + SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); Radio.Rx(0); } } @@ -838,8 +849,8 @@ if(lora_jianting_flag) { - LOG_INFO(TRACE_MODULE_APP," 切换4\r\n"); -// SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); + //LOG_INFO(TRACE_MODULE_APP," 切换4\r\n"); + SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); Radio.Rx(0); } } @@ -851,8 +862,8 @@ Radio.Standby(); if(lora_jianting_flag) { - LOG_INFO(TRACE_MODULE_APP," 切换5\r\n"); - // SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); + //LOG_INFO(TRACE_MODULE_APP," 切换5\r\n"); + SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); Radio.Rx(0); } } -- Gitblit v1.9.3