From f224d649c2d62d0289f47ba704c7da3509647ff4 Mon Sep 17 00:00:00 2001 From: zhangbo <zhangbo@qq.com> Date: 星期四, 17 四月 2025 14:26:19 +0800 Subject: [PATCH] 现在的UWB常开1s测距一次(和老免布线基站测距)功耗是95ma一秒上传一次数据 --- keil/uwb_app.c | 112 ++++++++++++++++++++++--------------------------------- 1 files changed, 45 insertions(+), 67 deletions(-) diff --git a/keil/uwb_app.c b/keil/uwb_app.c index dc1aa48..e05a79f 100644 --- a/keil/uwb_app.c +++ b/keil/uwb_app.c @@ -12,6 +12,10 @@ #include "lib_aoa.h" #include "WS2812.h" #include "PCA9555.h" +#include "GPS.h" + + +#define UWB_TIME_INTERVAL 2 extern int simple_main(void); extern int temp_main(void); void Calibration_Time(void); @@ -142,7 +146,7 @@ .phy_cfg.code_index = 9, /* TRX preamble code */ .phy_cfg.mean_prf = MEAN_PRF_64M, /* Mean prf 64/128/256M */ .phy_cfg.data_bit_rate = DATA_BR_6M8, /* Data rate 6.8M */ - .phy_cfg.sync_sym = PREAM_LEN_128, /* Preamble duration, length of preamble 128 */ + .phy_cfg.sync_sym = PREAM_LEN_64, /* Preamble duration, length of preamble 128 */ .phy_cfg.sfd_sym = NON_STD_NSFD5_8, /* Identifier for SFD sequence */ .phy_cfg.ranging_bit = 1, /* ranging bit set 1 */ .phy_cfg.trx_mode = TRX_MODE_15_4A, /* IEEE802.15.4z - BPRF mode */ @@ -288,6 +292,8 @@ uint8_t receive_error_flag; uint8_t rxnumoknum,rxnumerrornum; uint8_t resp_tx_flag; +extern uint8_t ceju_onlinetime; +extern uint8_t in_the_room_flag; static void rx_int_callback(struct MAC_HW_REPORT_T *rx_report) { uint8_t valid_sts=0; // Power off radio @@ -343,6 +349,8 @@ temp_count= phy_timer_count_get(); memcpy(&rx_rpt, rx_report, sizeof(struct MAC_HW_REPORT_T)); rx_length = 0; +// ceju_onlinetime==0; +// in_the_room_flag++; receive_error_flag=1; OpenUWB();//再次开启UWB接收 } @@ -483,6 +491,8 @@ extern uint8_t in_the_room_flag; extern uint8_t lounei_flag; uint8_t ceju_onlinetime; +uint16_t last_id=0; +uint8_t ceju_leave_flag=0; void TagListUpdate(void) { uint16_t i,j=0,k=0; @@ -495,15 +505,27 @@ anchordata_bat[j]=anchordata_bat[i];//电量随之更新 anchor_rssi[j]=anchor_rssi[i]; tagofflinetime[j++]=tagofflinetime[i]; - in_the_room_flag=0; - ceju_onlinetime++; - } +// in_the_room_flag=0; + last_id=tagid_list[i]; + if(last_id=tagid_list[i]) + { + ceju_onlinetime++; + } + } } - if(ceju_onlinetime>0||taglist_num==0) +// if(ceju_onlinetime==0&&taglist_num==0) +// { +// in_the_room_flag=0; +// } +// if(ceju_onlinetime>1&&taglist_num==0) +// { +// in_the_room_flag=1; +// } + if(ceju_onlinetime>0&&taglist_num==0) { - ceju_onlinetime=0; - in_the_room_flag=1; + ceju_onlinetime=0; + ceju_leave_flag=1; } taglist_num=j; } @@ -616,8 +638,8 @@ { // while(!mac_is_busy()) // { -// flag_temp1=uwb_rx(0, 0,range_timeout_us);//提交接收请求 -// uwb_rx_flag=1; + flag_temp1=uwb_rx(0, 0,range_timeout_us);//提交接收请求 + uwb_rx_flag=1; // } //LOG_INFO(TRACE_MODULE_APP,"打开uwb_rx\r\n"); } @@ -630,6 +652,7 @@ } extern uint8_t heart_upload_time; uint16_t count_hexupload; +extern uint8_t open_gps_time; void UWBSendUDPTask(void) { uint16_t checksum,tempdistarray[20]; @@ -694,7 +717,7 @@ memcpy(&usart_send[17+taglist_num*4],&anchordata_bat,taglist_num); checksum = Checksum_u16(&usart_send[2],15+5*taglist_num); memcpy(&usart_send[17+5*taglist_num],&checksum,2); - if(lounei_flag==0&&heart_upload_time%3==0) + if((heart_upload_time%UPLOAD_4G_TIME==0&&lounei_flag==0&&open_gps_time>120)||(open_gps_time%UPLOAD_4G_TIME==0&&lounei_flag==0&&open_gps_time<120)) { HexToAsciiSendUDP(usart_send,19+5*taglist_num); count_hexupload++; @@ -729,53 +752,19 @@ //} //enumwltagstate wltag_state=RANGE; uint32_t wltag_statetimer,wltag_uwbtimer; +extern uint16_t uwb_time_count; int uwb_app_poll(void) { - switch(wltag_state) - { - - case RANGE: -// time_flag=HIDO_TimerGetTick()-wltag_uwbtimer; - if(HIDO_TimerGetTick()-wltag_uwbtimer>2&&uwb_rx_flag==0) - { - wltag_uwbtimer = HIDO_TimerGetTick(); - OpenUWB(); - - } - else if(HIDO_TimerGetTick()-wltag_uwbtimer>1&&uwb_rx_flag==1) + switch(uwb_time_count) { -// time_flag=HIDO_TimerGetTick()-wltag_uwbtimer; - wltag_uwbtimer = HIDO_TimerGetTick(); - CloseUWB(); + case 1: +// CloseUWB(); + break; + case UWB_TIME_INTERVAL: + OpenUWB(); + uwb_time_count=0; + break; } - if(uwb_losttimer>g_com_map[UWB_RNAGE_TIME]) - { - wltag_statetimer = HIDO_TimerGetTick(); - if(uwb_rx_flag==0)//若要切换到搜索模式时没有开启则开启UWB - { - OpenUWB(); - } - wltag_state = SEARCH; - } - break; - case SEARCH: - if(HIDO_TimerGetTick()-wltag_statetimer>1) - { - wltag_statetimer = HIDO_TimerGetTick(); - wltag_state = CLOSE; - CloseUWB(); - - } - break; - case CLOSE: - if(HIDO_TimerGetTick()-wltag_statetimer>g_com_map[UWB_WAIT_TIME]) - { - wltag_statetimer = HIDO_TimerGetTick(); - wltag_state = SEARCH; - OpenUWB(); - } - break; - } UWBIdleTask(); } uint8_t in_the_room_flag=0; @@ -833,23 +822,12 @@ tagdist_list[taglist_pos]=rec_ancdistlist[i]; anchordata_bat[taglist_pos] = battary;//保存该基站电量 anchor_rssi[taglist_pos]=rssi; -// in_the_room_flag=1; -// if(dev_id==g_com_map[DOOR_UWB_1]) -// { -// -// } -// if(dev_id==g_com_map[DOOR_UWB_2]) -// { -// -// } -// if(dev_id==g_com_map[DOOR_UWB_3]) -// { -// IN_THE_ROOM_FLAG=1; -// } + PCA9555_Set_One_Value_Output(GPS_POWER,1); if(taglist_pos==taglist_num)// taglist_pos==taglist_num 说明这个基站不在当前列表中 { //tempid==dev_id 说明基站下发测距报文有这个标签的信息 taglist_num++; //满足上述两种情况才会添加基站ID进入列表中,否则会出现标签不在基站列表中,标签也不响应的情况 - tagid_list[taglist_pos] = tag_id_recv; + tagid_list[taglist_pos] = tag_id_recv; + PCA9555_Set_One_Value_Output(GPS_POWER,1); } break; } -- Gitblit v1.9.3