From 027bc1bbfe61d1c28617340b7886586c38ac4eec Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期二, 07 十一月 2023 09:17:58 +0800 Subject: [PATCH] lora免布线标签5hz版本 没有调试好 先提交 目前不用 --- Src/application/dw_ancapp.c | 100 +++++++++++++++++++++++++++++++------------------ 1 files changed, 63 insertions(+), 37 deletions(-) diff --git a/Src/application/dw_ancapp.c b/Src/application/dw_ancapp.c index d76d691..83c66d8 100644 --- a/Src/application/dw_ancapp.c +++ b/Src/application/dw_ancapp.c @@ -27,7 +27,7 @@ #define RESP_RX_TO_FINAL_TX_DLY_UUS 410 #define RESP_RX_TIMEOUT_UUS 2000 #define DELAY_BETWEEN_TWO_FRAME_UUS 400 -#define POLL_RX_TO_RESP_TX_DLY_UUS 2000 +#define POLL_RX_TO_RESP_TX_DLY_UUS 3000 #define RESP_TX_TO_FINAL_RX_DLY_UUS 10 #define FINAL_RX_TIMEOUT_UUS 4300 @@ -52,7 +52,8 @@ static uint8_t flag_syncbase,sync_seq,synclost_timer,temp_nearbaspos; static uint16_t sync_timer; static uint8_t send_buffer[150]; -static uint8_t frame_seq_nb2,battary,button,ancidlist_num; +static uint8_t battary,button,ancidlist_num; +uint8_t frame_seq_nb2; uint8_t rec_nearbase_num; 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 int16_t rec_antdelay; @@ -81,6 +82,7 @@ static int32_t hex_dist,his_dist[TAG_NUM_IN_SYS]; extern uint16_t g_Resttimer; static int32_t filter_dist,g_Tagdist[TAG_NUM_IN_SYS]; +uint16_t RX_TIMEOUTs_UWB; double LOS(dwt_rxdiag_t *dia) { F1 = dia->firstPathAmp1; F2 = dia->firstPathAmp2; @@ -227,24 +229,31 @@ // dwt_writetxfctrl(38, 0);//设定发送长度 // result = dwt_starttx(DWT_START_TX_DELAYED); //// uwb_timeout = 0; -// if(result == 0) - uwb_timeout=lp_time; + if(result == 0) + { + RX_TIMEOUTs_UWB++; +// uwb_timeout=lp_time; while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_TXFRS | SYS_STATUS_ALL_RX_ERR)))///不断查询芯片状态直到接收成功或者出现错误 { - current_time=HAL_LPTIM_ReadCounter(&hlptim1); - if(current_time>end_time/*||current_time<end_time+15000*/) - { -// printf("debug2 timec:%d timee:%d\r\n",current_time,end_time); - break;} +// current_time=HAL_LPTIM_ReadCounter(&hlptim1); +// if(current_time>end_time+((32768/1000)*3)||current_time<end_time+15000) +// { +//// printf("debug2 timec:%d timee:%d\r\n",current_time,end_time); +// break;} // if(lp_time-uwb_timeout>2) // break; }; - dwt_rxenable(0); +// dwt_rxenable(0); + } } -uint8_t power_and_key=0; + uint16_t target_tagid[12] = {0x1316,0x1394,0x1265,0x1318,0x1306,0x1304,0x1376,0x1312,0x1277,0x1388,0x1140,0x1392}; +uint16_t Lora_tx_ancid[50]; +uint16_t Lora_tx_ancdist[50]; +uint8_t Lora_tx_ancnum=0; +uint8_t break_flag ; void Anchor_App(void) { @@ -252,7 +261,7 @@ u16 tempid; uint32_t rec_syncid; uint16_t checksum; - + uint8_t kk; dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间 dwt_rxenable(0);//打开接收 @@ -260,7 +269,7 @@ start_time=HAL_LPTIM_ReadCounter(&hlptim1); - end_time=start_time+((32768/1000)*20); + end_time=start_time+((32768/1000)*2); if(end_time>=32768) {end_time-=32768;} current_time=HAL_LPTIM_ReadCounter(&hlptim1); @@ -278,7 +287,7 @@ { uint16_t tag_recv_interval; float temp_tagpos; - + dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG | SYS_STATUS_TXFRS); frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFL_MASK_1023;//获得接收数据长度 recpoll_len = frame_len; @@ -289,7 +298,7 @@ //将收到的tag_id分别写入各次通讯的包中,为多标签通讯服务,防止一次通讯中接收到不同ID标签的数据 memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2); - +// HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET); // printf("ID %x\r\n",tag_id_recv); switch(rx_buffer[MESSAGE_TYPE_IDX]) {uint8_t target_tagi; @@ -330,29 +339,46 @@ for(u8 i=0;i<rec_nearbase_num;i++) { if(rec_ancidlist[i] == dev_id) - { -// PushAnchorDataArray(tag_id_recv,rec_ancdistlist[i],-(int8_t)firstpath_power); - - // PushAnchorDataArray(tag_id_recv,rec_ancdistlist[i],battary); - } - } -// #ifdef USART_ALL_OUTPUT - usart_send[2] = 0x12;//正常模式 - usart_send[3] = 8+rec_nearbase_num*4;//数据段长度 - memcpy(&usart_send[4],&tag_id_recv,2); - usart_send[6] = frame_seq_nb2;//包序 - power_and_key=battary<<1;//把按键跟电量2合1,发出去 - power_and_key=power_and_key+button; - memcpy(usart_send+7,&power_and_key,1); + { + for(kk=0;kk<Lora_tx_ancnum;kk++) + { + if(Lora_tx_ancid[kk]==tag_id_recv) + { +// Lora_tx_ancnum--; + Lora_tx_ancdist[kk]=rec_ancdistlist[i]; + break_flag=1; + break; + } + } + if(break_flag) + { + break_flag=0; + break; + } + Lora_tx_ancid[Lora_tx_ancnum]=tag_id_recv; + Lora_tx_ancdist[Lora_tx_ancnum]=rec_ancdistlist[i]; - usart_send[8] = rec_nearbase_num;//lora等待应答位 - usart_send[9] = lora_yingda_flag; - memcpy(&usart_send[10],&rec_ancidlist,2*rec_nearbase_num); - memcpy(&usart_send[10+rec_nearbase_num*2],&rec_ancdistlist,2*rec_nearbase_num); - checksum = Checksum_u16(&usart_send[2],8+4*rec_nearbase_num); - memcpy(&usart_send[10+4*rec_nearbase_num],&checksum,2); -// UART_PushFrame(usart_send,12+rec_nearbase_num*4); -// #endif + Lora_tx_ancnum++; + + } + } +//// #ifdef USART_ALL_OUTPUT +// usart_send[2] = 0x12;//正常模式 +// usart_send[3] = 8+rec_nearbase_num*4;//数据段长度 +// memcpy(&usart_send[4],&tag_id_recv,2); +// usart_send[6] = frame_seq_nb2;//包序 +// power_and_key=battary<<1;//把按键跟电量2合1,发出去 +// power_and_key=power_and_key+button; +// memcpy(usart_send+7,&power_and_key,1); +// usart_send[8] = lora_yingda_flag;//lora等待应答位 +// usart_send[9] = rec_nearbase_num;//lora等待应答位 +//// usart_send[9] = lora_yingda_flag; +// memcpy(&usart_send[10],&rec_ancidlist,2*rec_nearbase_num); +// memcpy(&usart_send[10+rec_nearbase_num*2],&rec_ancdistlist,2*rec_nearbase_num); +// checksum = Checksum_u16(&usart_send[2],8+4*rec_nearbase_num); +// memcpy(&usart_send[10+4*rec_nearbase_num],&checksum,2); +//// UART_PushFrame(usart_send,12+rec_nearbase_num*4); +//// #endif taglist_pos=CmpTagInList(tag_id_recv); if(taglist_num>=TAG_NUM_IN_SYS) -- Gitblit v1.9.3