From 2250f814cfcfee313c64b2e01b7e1485a2f6ee4e Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期三, 28 二月 2024 17:07:46 +0800 Subject: [PATCH] 1 --- Src/application/dw_mbx_anc.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 48 insertions(+), 10 deletions(-) diff --git a/Src/application/dw_mbx_anc.c b/Src/application/dw_mbx_anc.c index c5968f2..906b2d3 100644 --- a/Src/application/dw_mbx_anc.c +++ b/Src/application/dw_mbx_anc.c @@ -74,15 +74,18 @@ { } -#define HEATBEAT_UPDATE_TIME_S 10 //心跳包一个小时上传一次 +#define HEATBEAT_UPDATE_TIME_S 3600 //心跳包一个小时上传一次 static uint16_t current_count,target_count,wg_report_id; uint16_t heartbeat_count; static uint8_t heatbeat_buffer[100]; +uint8_t diyicichongqi=1; void HeartbeatPoll(uint16_t wangguanid) {//心跳包上传 ID 版本号 小组 UWB功率 LORA功率 UWB发送时间 heartbeat_count+=sync_interval_s; - if(heartbeat_count>HEATBEAT_UPDATE_TIME_S) - { uint16_t checksum1 = 0; + if(heartbeat_count>HEATBEAT_UPDATE_TIME_S||diyicichongqi) + { + diyicichongqi=0; + uint16_t checksum1 = 0; heartbeat_count = 0; heatbeat_buffer[MSG_TYPE_IDX] = LORA_MSGTYPE_ANC_HEARTBEAT; heatbeat_buffer[MSG_LENGTH] = 17; @@ -194,6 +197,7 @@ switch(lora_recbuffer[SUBMSGTYPE_IDX]) //子状态函数 { case SUBMSG_READ_ANCPARA: + heartbeat_count=HEATBEAT_UPDATE_TIME_S-2; LoraSendComMap(SUBMSG_READ_ANCPARA); config_state_count = CONFIG_REMAIN_TIME; break; @@ -385,8 +389,12 @@ } taglist_total_num=j; } -static u16 rec_nearbaseid,temp_index; +extern uint16_t verfint_cal; +u16 rec_nearbaseid,temp_index,adc_val1,adc_val_min=0xffff; static u8 rec_tag_index,tag_num_tosend; +extern uint8_t Anchor_Vcc_Flag; +extern float bat_volt; +uint16_t AD_value[500],ti; void MBXANCPoll(void) //将要发的标签序号,在列表中的位置 { @@ -396,6 +404,7 @@ tag_num_tosend = 25; } count1++; + ti = 0; dwt_setrxaftertxdelay(300);//设置发送完成后开启接收延迟时间 dwt_setrxtimeout(0);//接收超时时间 memcpy(&uwb_sendbuffer[TAG_ID_IDX],&dev_id,2); @@ -410,8 +419,12 @@ dwt_writetxfctrl(13+4*tag_num_tosend, 0);//设置超宽带发送数据长度 dwt_starttx(DWT_START_TX_IMMEDIATE | DWT_RESPONSE_EXPECTED);//开启发送,发送完成后等待一段时间开启接收,等待时间在dwt_setrxaftertxdelay中设置 - //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET); - + if(Anchor_Vcc_Flag) + { + READC_Init(); + adc_val_min=0xffff; + verfint_cal = *(__IO uint16_t *)(0X1FF80078); + } start_count=HAL_LPTIM_ReadCounter(&hlptim1); poll_timeout=tag_num_tosend*SLOT_SCALE+20; //单位0.1ms end_count=start_count+(poll_timeout<<2); @@ -422,8 +435,21 @@ { current_count=HAL_LPTIM_ReadCounter(&hlptim1); while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))//不断查询芯片状态直到成功接收或者发生错误 - { - + { + if(Anchor_Vcc_Flag) + { + +// HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET); + adc_val1 = Get_ADC_Value(); + AD_value[ti++] = adc_val1; + if(ti>=500) + ti = 400; +// HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET); + if(adc_val1<adc_val_min) + { + adc_val_min= adc_val1; + } + } current_count=HAL_LPTIM_ReadCounter(&hlptim1); if(current_count>=end_count&¤t_count<end_count+15000) break; @@ -450,8 +476,12 @@ SetANCTimestap(temp_index,&rx_buffer[RESP_MSG_POLL_RX_TS_IDX],&rx_buffer[RESP_MSG_RESP_TX_TS_IDX],resp_rx_ts,&rx_buffer[RESP_MSG_ANC_DISTOFFSET]); } - } - } + }else{ + dwt_write32bitreg(SYS_STATUS_ID,SYS_STATUS_RXFCG| SYS_STATUS_ALL_RX_ERR); + dwt_rxenable(0); + + } + } dwt_forcetrxoff(); CalculateDists(); TagListUpdate(); @@ -459,6 +489,14 @@ taglist_current_index+=tag_num_tosend; if(taglist_current_index>=taglist_total_num||taglist_total_num<=25) //如果标签当前index大于总index,或者总基站数量小于等于25,则从0开始index。 taglist_current_index = 0; + if(Anchor_Vcc_Flag) + { + HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET); + Anchor_Vcc_Flag=0; + MX_ADC_DeInit(); + bat_volt = 3*(float)verfint_cal/AD_value[50]-0.28; + bat_percent=bat_volt*100-200; + } } -- Gitblit v1.9.3