From e6a35a9ad44e3db48c7bae45dbb7d8e3983373cf Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期一, 17 二月 2025 17:24:29 +0800 Subject: [PATCH] 1.29,改为轮询查询uwb测距 --- Src/application/dw_mbx_tag.c | 33 ++++++++++++++++++++++++--------- 1 files changed, 24 insertions(+), 9 deletions(-) diff --git a/Src/application/dw_mbx_tag.c b/Src/application/dw_mbx_tag.c index 4116f52..39ad98b 100644 --- a/Src/application/dw_mbx_tag.c +++ b/Src/application/dw_mbx_tag.c @@ -45,6 +45,7 @@ static u8 tagofflinetime[ANC_MAX_NUM]; u8 taglist_num; uint16_t tagid_list[ANC_MAX_NUM],tagdist_list[ANC_MAX_NUM]; +uint16_t test111; uint8_t Anchor_RecNearPoll(uint8_t ancrec_nearbasepos) //0 mainbase 1 first near_base { uint8_t motorstate; @@ -81,7 +82,8 @@ result = dwt_starttx(DWT_START_TX_DELAYED); if(result==0) - { + { + test111++; start_time=HAL_LPTIM_ReadCounter(&hlptim1); timeout=100; //单位0.1ms end_time=start_time+(timeout<<2); @@ -141,7 +143,8 @@ uint32_t rec_syncid,status_reg; uint16_t checksum; uint8_t kk; - + + UWB_Wkup(); // dwt_setrxtimeout(3000);//设定接收超时时间,0位没有超时时间 // dwt_rxenable(0);//打开接收 // HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET); @@ -161,9 +164,21 @@ // if(current_time>=end_time&¤t_time<end_time+15000) // break; // }; + dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR| SYS_STATUS_TXFRS |SYS_STATUS_RXFCG); + dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间 + dwt_rxenable(0);//打开接收 + while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))//不断查询芯片状态直到接收成功或者出现错误 + { + IdleTask(); + }; status_reg = dwt_read32bitreg(SYS_STATUS_ID); - dwt_setinterrupt( DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 0); - if (status_reg & SYS_STATUS_RXFCG && status_reg!=0xffffffff)//成功接收 + if(status_reg==0xffffffff) + { +// printf("UWB芯片状态:0xffffffff,设备重启"); + SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader + } +// dwt_setinterrupt( DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 0); + if (status_reg & SYS_STATUS_RXFCG)//成功接收 { uint16_t tag_recv_interval; float temp_tagpos; @@ -233,10 +248,10 @@ // dwt_rxenable(0); } - dwt_forcetrxoff(); - dwt_setinterrupt( DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1); - dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间 - dwt_rxenable(0); +// dwt_forcetrxoff(); +// dwt_setinterrupt( DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1); +// dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间 +// dwt_rxenable(0); } wg_state_enum wg_state = WG_Lost; @@ -290,7 +305,7 @@ uint16_t heatbeat_count = 3600; int16_t intheight; #define HEATBEAT_UPDATE_TIME 3600 -#define LORA_REPORT_MAXANC_NUM 7 +#define LORA_REPORT_MAXANC_NUM 14 extern float Height; u8 tarray[20]= {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; void LoraReportPoll(void) -- Gitblit v1.9.3