From a598fc473257ddd9eef10db36ada42af46b8b5bf Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期五, 16 五月 2025 16:19:46 +0800 Subject: [PATCH] V1.20,按照杨总提供文档全部改好,主要涉及下发修改开启uwb gps开关 频率等 --- keil/uwb_app.c | 77 +++++++++++++++++++++++++++++++++----- 1 files changed, 67 insertions(+), 10 deletions(-) diff --git a/keil/uwb_app.c b/keil/uwb_app.c index 13154e6..cd237a8 100644 --- a/keil/uwb_app.c +++ b/keil/uwb_app.c @@ -11,6 +11,8 @@ #include "board.h" #include "lib_aoa.h" #include "WS2812.h" +#include "TCPClient.h" + extern int simple_main(void); extern int temp_main(void); void Calibration_Time(void); @@ -62,6 +64,7 @@ int16_t elevation = 0; int16_t azimuth = 0; uint8_t fom = 0; +extern CountState_t current_state; int32_t distance; uint8_t taglist_num; float *sts_rssi=NULL; @@ -81,7 +84,7 @@ #define RANGING_PERIOD_MS (1000) /* This is the delay from Frame RX POLL frame to send RESP Frame */ -#define POLL_RX_TO_RESP_TX_DLY_US 670U //yuan550极限 +#define POLL_RX_TO_RESP_TX_DLY_US 550U //yuan550极限 //#define POLL_RX_TO_RESP_TX_DLY_US 550U //yuan550极限 #define RESP_TX_TO_FINAL_RX_DLY_US 500U @@ -115,6 +118,9 @@ #define MSG_COMMON_LEN 10 #define UWB_DELAY_TIME_US 496 + + + uint8_t receive_flag=0; struct mk_uwb_configure { @@ -138,7 +144,24 @@ // .phy_cfg.sts_seglen = STS_SEGLEN_BPRF_64, /* Number of symbols in an STS segment */ // .phy_cfg.rx_ant_id = UWB_RX_ANT_3, /* UWB RX antenna port */ //}; -#ifdef DW1000 +#ifdef UWB_MK8000_XB +static struct mk_uwb_configure config = { + .phy_work_mode = (uint8_t)(PHY_TX | PHY_RX), + .phy_cfg.ch_num = 5, /* Channel number. */ + .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.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 */ + .phy_cfg.sts_pkt_cfg = STS_PKT_CFG_0, /* SP0 Frame */ + .phy_cfg.sts_segnum = STS_SEGNUM_BPRF_1, /* Number of STS segments in the frame */ + .phy_cfg.sts_seglen = STS_SEGLEN_BPRF_64, /* Number of symbols in an STS segment */ + .phy_cfg.rx_ant_id = UWB_RX_ANT_3, /* UWB RX antenna port */ +}; +#endif +#ifdef UWB_DW1000_MBXJZ_OLD static struct mk_uwb_configure config = { .phy_work_mode = (uint8_t)(PHY_TX | PHY_RX), .phy_cfg.ch_num = 5, /* Channel number. */ @@ -154,6 +177,26 @@ .phy_cfg.sts_seglen = STS_SEGLEN_BPRF_64, /* Number of symbols in an STS segment */ .phy_cfg.rx_ant_id = UWB_RX_ANT_3, /* UWB RX antenna port */ }; +#endif + +#ifdef DW1000 + +//static struct mk_uwb_configure config = { +// .phy_work_mode = (uint8_t)(PHY_TX | PHY_RX), +// .phy_cfg.ch_num = 5, /* Channel number. */ +// .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_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 */ +// .phy_cfg.sts_pkt_cfg = STS_PKT_CFG_0, /* SP0 Frame */ +// .phy_cfg.sts_segnum = STS_SEGNUM_BPRF_1, /* Number of STS segments in the frame */ +// .phy_cfg.sts_seglen = STS_SEGLEN_BPRF_64, /* Number of symbols in an STS segment */ +// .phy_cfg.rx_ant_id = UWB_RX_ANT_3, /* UWB RX antenna port */ +//}; + #elif defined STS_MODE static struct mk_uwb_configure config = { .phy_work_mode = (uint8_t)(PHY_TX | PHY_RX), @@ -316,7 +359,7 @@ Anchor_App(); if(resp_tx_flag==0) { - OpenUWB(); + OpenUWB(); } // #ifdef STS_MODE // valid_sts= sts_valid_check(); @@ -347,7 +390,10 @@ memcpy(&rx_rpt, rx_report, sizeof(struct MAC_HW_REPORT_T)); rx_length = 0; receive_error_flag=1; - OpenUWB();//再次开启UWB接收 + + OpenUWB(); + +// OpenUWB();//再次开启UWB接收 } // CloseUWB(); // OpenUWB();//再次开启UWB接收 @@ -367,7 +413,10 @@ temp_count= phy_timer_count_get(); temp_internal=temp_count; resp_tx_num++; - OpenUWB();//再次开启UWB接收 + + OpenUWB(); + +// OpenUWB();//再次开启UWB接收 //LOG_INFO(TRACE_MODULE_APP, "poll_rx_num is %d,resp_tx_num is %d\r\n",poll_rx_num,resp_tx_num); } // OpenUWB();//再次开启UWB接收 @@ -661,8 +710,8 @@ // } // Set4LEDColor(uwbled,rtkled,led4g,powerled); - if(taglist_num>20) //最多上传20个基站数据,距离最近的20个 - taglist_num = 20; + if(taglist_num>14) //最多上传20个基站数据,距离最近的20个 + taglist_num = 14; usart_send[0]= 0x55; usart_send[1]= 0xaa; usart_send[2] = 0x12;//正常模式 @@ -686,7 +735,7 @@ checksum = Checksum_u16(&usart_send[2],15+5*taglist_num); memcpy(&usart_send[17+5*taglist_num],&checksum,2); HexToAsciiSendUDP(usart_send,19+5*taglist_num); - taglist_num = 0; +// taglist_num = 0; // rxnum=0; } void UWBIdleTask(void) @@ -706,17 +755,23 @@ { uwbtasktimer = HIDO_TimerGetTick(); UWBOneSecondTask(); - UWBSendUDPTask(); + if(g_com_map[UWBFrequency]==1) + { + UWBSendUDPTask(); + } } } int uwb_app_poll(void) { UWBIdleTask(); } +extern uint8_t uwb_offtime_count; int Anchor_App(void) { uint8_t i; uint16_t tempid; + uwb_offtime_count=0; + current_state = STATE_NORMAL; if(group_id==rx_buf[GROUP_ID_IDX]&&rx_buf[MESSAGE_TYPE_IDX] == MBX_POLL)//判断是否是和自己是同一组通讯的且为poll包 { flag_recsuccess = 1; wltag_state=RANGE;//成功后从search切换为range @@ -731,6 +786,8 @@ memcpy(rec_ancdistlist,&rx_buf[FZ_NEARBASEID_INDEX+2*rec_nearbase_num],2*rec_nearbase_num); memcpy(&rec_antdelay,&rx_buf[FZ_NEARBASEID_INDEX+rec_nearbase_num*4],2); uwbled=BLUE; + + // for(i=0; i<rec_nearbase_num; i++) // { // if(rec_ancidlist[i] == dev_id) @@ -766,7 +823,7 @@ Anchor_RecNearPoll(i); tagdist_list[taglist_pos]=rec_ancdistlist[i]; anchordata_bat[taglist_pos] = battary;//保存该基站电量 - anchor_rssi[taglist_pos]=rssi; + anchor_rssi[taglist_pos]=rssi; if(taglist_pos==taglist_num)// taglist_pos==taglist_num 说明这个基站不在当前列表中 { //tempid==dev_id 说明基站下发测距报文有这个标签的信息 taglist_num++; //满足上述两种情况才会添加基站ID进入列表中,否则会出现标签不在基站列表中,标签也不响应的情况 -- Gitblit v1.9.3