From 36336123917b1442954faaa78bd6647f99501af2 Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期日, 29 六月 2025 18:02:58 +0800 Subject: [PATCH] 将剩下2个模式休眠模式改为成功休眠的代码,并实测可以成功休眠MK和lora休眠功耗17ua左右 --- keil/include/src/Radio/lora_1268.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 51 insertions(+), 7 deletions(-) diff --git a/keil/include/src/Radio/lora_1268.c b/keil/include/src/Radio/lora_1268.c index c45ce99..1a5759c 100644 --- a/keil/include/src/Radio/lora_1268.c +++ b/keil/include/src/Radio/lora_1268.c @@ -313,7 +313,7 @@ checksum = Checksum_u16(lora_sendbuffer,9+data_length); memcpy(&lora_sendbuffer[9+data_length],&checksum,2); Radio.Send(lora_sendbuffer,data_length+11); - +LOG_INFO(TRACE_MODULE_APP, "进入回复\r\n"); //LORA_3029_SINGLE_SEND(lora_sendbuffer,data_length+11,0); // Delay_Ms(100); } @@ -360,7 +360,34 @@ } +void lora_in_sleep(void) +{ + //SPI0/MOSI/MISO/CLK/CS +// gpio_pin_set(LORA_CS); + +// io_pin_mux_set(LORA_CS, IO_FUNC0); +// io_pin_mux_set(LORA_MOSI, IO_FUNC2); +// io_pin_mux_set(LORA_MISO, IO_FUNC2); +// io_pin_mux_set(LORA_CLK, IO_FUNC2); +// io_pin_mux_set(LORA_IRQ, IO_FUNC0); +// io_pin_mux_set(LORA_NRST, IO_FUNC0); +// io_pin_mux_set(LORA_MOSI, IO_FUNC0); +// io_pin_mux_set(LORA_MISO, IO_FUNC0); +// io_pin_mux_set(LORA_CLK, IO_FUNC0); +// //io_pull_set(LORA_IRQ, IO_PULL_UP, IO_PULL_UP_LEVEL4); +// io_pull_set(LORA_MOSI, IO_PULL_UP, IO_PULL_UP_LEVEL4);//功耗有影响 +// io_pull_set(LORA_CLK, IO_PULL_UP, IO_PULL_UP_LEVEL4);//功耗有影响 +// +// gpio_pin_set_dir(LORA_MOSI,GPIO_DIR_OUT,0); +// gpio_pin_set_dir(LORA_MISO,GPIO_DIR_OUT,0); +// gpio_pin_set_dir(LORA_CLK,GPIO_DIR_OUT,0); +// gpio_pin_clr(LORA_MOSI); +// gpio_pin_clr(LORA_CLK); + + + Radio.Sleep(); +} ////States_t State = LOWPOWER; //////int8_t RssiValue = 0; @@ -377,13 +404,16 @@ //uint16_t current_count; //extern wg_state_enum wg_state; uint8_t txdone=0; +uint8_t send_flag; void OnTxDone( void ) { txdone++; + if(flag_writepara_needreset) //配置写入完成设备需要重启 { - printf("网关下发配置写入完成,重启"); - SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader + LOG_INFO(TRACE_MODULE_APP,"网关下发配置写入完成,重启\r\n"); +// SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader + sys_reset(0); } Radio.Standby(); if(LoraUp_flag) @@ -393,7 +423,9 @@ } else { + Radio.Rx( 50 ); + send_flag=1; //LORA_LED_OFF; } } @@ -427,6 +459,9 @@ uint8_t LoraUp_flag; uint16_t REV_WG_pack=0; uint8_t rxdone=0; +extern uint16_t set_mk_time; +extern mk_send_message_to_BLE(void); +uint8_t tt4=1; void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr ) { uint16_t checksum1; @@ -459,8 +494,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) @@ -504,6 +539,7 @@ LoraSendComMap(WGRSP_RWTAG_READ); break; case WGRSP_RWTAG_WRITE: + rec_index = RX_Buffer[PWTAG_WRITE_IDX_IDX]; switch(rec_index) { @@ -516,12 +552,17 @@ default : memcpy(&rec_value,&RX_Buffer[PWTAG_WRITE_VALUE_IDX],2); g_com_map[rec_index/2] = rec_value; + if(rec_index/2==POWER)//新增判断 + { + memcpy(&set_mk_time,&RX_Buffer[PWTAG_WRITE_VALUE_IDX],2); + mk_send_message_to_BLE(); //发送给蓝牙 + //LOG_INFO(TRACE_MODULE_APP, "修改成功g_com表为%#x,时间为%#x\r\n",g_com_map[POWER],set_mk_time); + } 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]; @@ -546,7 +587,8 @@ } } - } + } + if(!no_rx_flag) { if(lora_jianting_flag&&LoraUp_flag==0) @@ -555,6 +597,7 @@ Radio.Rx(0); } } + } void OnTxTimeout( void ) @@ -570,6 +613,7 @@ void OnRxTimeout( void ) { Radio.Standby(); + if(lora_jianting_flag) { SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); -- Gitblit v1.9.3