From d5b7f8cee7bbe731224627ee58b3a324e0c8bd56 Mon Sep 17 00:00:00 2001 From: yincheng.zhong <634916154@qq.com> Date: 星期三, 20 十一月 2024 08:28:45 +0800 Subject: [PATCH] V2.8 小组ID可以改,提高响应速度 --- Src/application/dw_mbx_tag.c | 36 +++++++++++++++++++++--------------- 1 files changed, 21 insertions(+), 15 deletions(-) diff --git a/Src/application/dw_mbx_tag.c b/Src/application/dw_mbx_tag.c index 884f7ed..52331e0 100644 --- a/Src/application/dw_mbx_tag.c +++ b/Src/application/dw_mbx_tag.c @@ -41,7 +41,7 @@ #define REPORT_TAG_KEEPTIMES 5 static uint16_t ancidlist_rec[TAG_NUM_IN_SYS],ancidlist_send[TAG_NUM_IN_SYS],rec_ancidlist[TAG_NUM_IN_SYS],rec_ancdistlist[TAG_NUM_IN_SYS]; static u8 frame_seq_nb2,battary,button,uwb_losttimer,taglist_pos; - +uint8_t rec_num[3]; static u8 tagofflinetime[ANC_MAX_NUM]; u8 taglist_num; uint16_t tagid_list[ANC_MAX_NUM],tagdist_list[ANC_MAX_NUM]; @@ -78,21 +78,25 @@ dwt_writetxdata(38, send_buffer, 0);//写入发送数据 dwt_writetxfctrl(38, 0);//设定发送长度 result = dwt_starttx(DWT_START_TX_DELAYED); - - start_time=HAL_LPTIM_ReadCounter(&hlptim1); - timeout=100; //单位0.1ms - end_time=start_time+(timeout<<2); - if(end_time>=32768) + if(result==0) { - end_time-=32768; - } - current_time=HAL_LPTIM_ReadCounter(&hlptim1); - while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & SYS_STATUS_TXFRS ))///不断查询芯片状态直到接收成功或者出现错误 - { + rec_num[2]++; + start_time=HAL_LPTIM_ReadCounter(&hlptim1); + timeout=100; //单位0.1ms + end_time=start_time+(timeout<<2); + if(end_time>=32768) + { + end_time-=32768; + } current_time=HAL_LPTIM_ReadCounter(&hlptim1); - if(current_time>=end_time&¤t_time<end_time+15000) - break; - }; + while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & SYS_STATUS_TXFRS ))///不断查询芯片状态直到接收成功或者出现错误 + { + current_time=HAL_LPTIM_ReadCounter(&hlptim1); + if(current_time>=end_time&¤t_time<end_time+15000) + break; + }; + } + tagofflinetime[taglist_pos] = 0; // printf("测距成功,序号%d,距离%d\r\n",frame_seq_nb2,tagdist_list[taglist_pos]); // delay_ms(10); @@ -129,6 +133,7 @@ return i; } uint32_t temp231; + void MbxTagUwbRec(void) { @@ -149,6 +154,7 @@ { end_time-=32768; } + rec_num[0]++; current_time=HAL_LPTIM_ReadCounter(&hlptim1); while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))//不断查询芯片状态直到接收成功或者出现错误 @@ -165,7 +171,7 @@ dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG | SYS_STATUS_TXFRS); frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFL_MASK_1023;//获得接收数据长度 - + rec_num[1]++; dwt_readrxdata(rx_buffer, frame_len, 0);//读取接收数据 memcpy(&anc_id_recv,&rx_buffer[ANCHOR_ID_IDX],2); //将收到的tag_id分别写入各次通讯的包中,为多标签通讯服务,防止一次通讯中接收到不同ID标签的数据 -- Gitblit v1.9.3