From 2ee355706fb52cd610000dfa89ad244656428d72 Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期四, 14 八月 2025 18:23:46 +0800 Subject: [PATCH] 开发完成 先提交 适配纽扣电池 --- keil/uwb_tag.c | 33 +++++++++++++++++++-------------- 1 files changed, 19 insertions(+), 14 deletions(-) diff --git a/keil/uwb_tag.c b/keil/uwb_tag.c index b692897..50cb2ee 100644 --- a/keil/uwb_tag.c +++ b/keil/uwb_tag.c @@ -29,7 +29,7 @@ #define POLL_DELAY 100U //yuan100U /* Receive response timeout */ -#define RESP_RX_TIMEOUT_US 10000 //Yuan500 10mssuccess 300jixian +#define RESP_RX_TIMEOUT_US 1000 //Yuan500 10mssuccess 300jixian /* Field index in frame */ #define MSG_SEQ_NUM_IDX 2 @@ -569,6 +569,7 @@ } } uint8_t readgcom_flag1; +uint32_t current_count11,current_count22,current_count33,current_count44,current_count55; void DiscPoll2(void) { uint32_t temp1,temp2,dw_systime,mindist_slavebaseid,mindist; @@ -648,21 +649,21 @@ flag_getresponse=0; temp_tag_count2=phy_timer_count_get(); - resp_rx_en_start_u32 = poll_tx_en_start_u32+ US_TO_PHY_TIMER_COUNT(POLL_TX_TO_RESP_RX_DLY_US);//设置发送多少s后接收按target独立时间起点算+ US_TO_PHY_TIMER_COUNT(POLL_TX_TO_RESP_RX_DLY_US为发送后要多久开启接收时间 + resp_rx_en_start_u32 = temp_tag_count2+ US_TO_PHY_TIMER_COUNT(600);//设置发送多少s后接收按target独立时间起点算+ US_TO_PHY_TIMER_COUNT(POLL_TX_TO_RESP_RX_DLY_US为发送后要多久开启接收时间 temp_resp=resp_rx_en_start_u32; - //tempflag=uwb_rx(1, resp_rx_en_start_u32, RESP_RX_TIMEOUT_US);//开启接受并设置接收超时 - tempflag=uwb_rx(0,0, RESP_RX_TIMEOUT_US); + tempflag=uwb_rx(1,resp_rx_en_start_u32, RESP_RX_TIMEOUT_US); +// tempflag=uwb_rx(0,0, 3000); receive_flag =0; start_receive_count=phy_timer_count_get(); - poll_timeout=nearbase_num*US_TO_PHY_TIMER_COUNT(DELAY_BETWEEN_TWO_FRAME_UUS)+US_TO_PHY_TIMER_COUNT(30000);//多一个多0.4ms默认0.4ms计算为0.125*4*100000,默认开启1mss + poll_timeout=US_TO_PHY_TIMER_COUNT(600);//多一个多0.4ms默认0.4ms计算为0.125*4*100000,默认开启1mss end_receive_count=start_receive_count+poll_timeout; if(end_receive_count>=UINT32_MAX) {end_receive_count-=UINT32_MAX;} current_count=phy_timer_count_get(); mainbase_dist=100000; mainbase_lost_count++; - while(current_count<end_receive_count||current_count>end_receive_count+HALF_SECOND_TIME)//循环接受包体,若为124.8K则是+62400000 - { +// while(current_count<end_receive_count||current_count>end_receive_count+HALF_SECOND_TIME)//循环接受包体,若为124.8K则是+62400000 +// { current_count=phy_timer_count_get();//不断刷新当前计数器值 temp_tag_count2=phy_timer_count_get(); @@ -685,7 +686,8 @@ temp_dist = nearbase_distlist[rec_nearbasepos]; if(rx_buf[0]==0xff) {xiaobiaoqian_flag=1;} - tempflag=uwb_rx(0, 0, RESP_RX_TIMEOUT_US);//立即开启接受并设置0超时 + current_count11=phy_timer_count_get(); +// tempflag=uwb_rx(0, 0, RESP_RX_TIMEOUT_US);//立即开启接受并设置0超时 } else if(rx_buf[MSG_TYPE_IDX]==LORA_MSGTYPE_WGRESPTAG) { @@ -693,9 +695,10 @@ } else { + current_count22=phy_timer_count_get(); if(recbase_num!=nearbase_num+1) { - tempflag=uwb_rx(0, 0, RESP_RX_TIMEOUT_US);//立即开启接受并设置0超时 +// tempflag=uwb_rx(0, 0, RESP_RX_TIMEOUT_US);//立即开启接受并设置0超时 } } //gpio_pin_clr(IO_PIN_5);//测试 @@ -705,12 +708,14 @@ {//接收出错 receive_flag=0; ggggg++; - tempflag=uwb_rx(0, 0, RESP_RX_TIMEOUT_US);//立即开启接受并设置0超时 +// tempflag=uwb_rx(0, 0, RESP_RX_TIMEOUT_US);//立即开启接受并设置0超时 + current_count33=phy_timer_count_get(); } //gpio_pin_clr(IO_PIN_5);//测试 - } +// } delay_us(1); uwb_rx_force_off(1); + current_count44=phy_timer_count_get(); // if(readgcom_flag1==0) // { CalculateDists(poll_tx_ts_i64); //计算距离并更新距离表 @@ -811,10 +816,10 @@ recbase_num=0; temp_tag_count2=phy_timer_count_get(); - resp_rx_en_start_u32 = poll_tx_en_start_u32+ US_TO_PHY_TIMER_COUNT(POLL_TX_TO_RESP_RX_DLY_US);//设置发送多少s后接收按target独立时间起点算+ US_TO_PHY_TIMER_COUNT(POLL_TX_TO_RESP_RX_DLY_US为发送后要多久开启接收时间 + resp_rx_en_start_u32 = temp_tag_count2+ US_TO_PHY_TIMER_COUNT(600);//设置发送多少s后接收按target独立时间起点算+ US_TO_PHY_TIMER_COUNT(POLL_TX_TO_RESP_RX_DLY_US为发送后要多久开启接收时间 temp_resp=resp_rx_en_start_u32; - //tempflag=uwb_rx(1, resp_rx_en_start_u32, RESP_RX_TIMEOUT_US);//开启接受并设置接收超时 - tempflag=uwb_rx(0,0, RESP_RX_TIMEOUT_US); + tempflag=uwb_rx(1, resp_rx_en_start_u32, RESP_RX_TIMEOUT_US);//开启接受并设置接收超时 +// tempflag=uwb_rx(0,0, RESP_RX_TIMEOUT_US); receive_flag =0; start_receive_count=phy_timer_count_get(); poll_timeout=nearbase_num*US_TO_PHY_TIMER_COUNT(DELAY_BETWEEN_TWO_FRAME_UUS)+US_TO_PHY_TIMER_COUNT(RESP_RX_TIMEOUT_US);//多一个多0.4ms默认0.4ms计算为0.125*4*100000,默认开启1mss -- Gitblit v1.9.3