From 4a32430b606b5bc69d1f65b00b78c0641bf7d6fc Mon Sep 17 00:00:00 2001 From: zhangbo <zhangbo@qq.com> Date: 星期二, 06 五月 2025 16:37:59 +0800 Subject: [PATCH] MK大工卡和新信标测距,5s一次 --- keil/uwb_app.c | 71 +++++++++++++++++++++++++++++++---- 1 files changed, 62 insertions(+), 9 deletions(-) diff --git a/keil/uwb_app.c b/keil/uwb_app.c index ba131ee..20ba960 100644 --- a/keil/uwb_app.c +++ b/keil/uwb_app.c @@ -75,14 +75,17 @@ CLOSE, RANGE, }enumwltagstate; +#define TAGFREQ_IDX 7 + /* Ranging period */ #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 550U //yuan550极限 +//#define POLL_RX_TO_RESP_TX_DLY_US 550U //yuan550极限 #define RESP_TX_TO_FINAL_RX_DLY_US 500U - +//#define RESP_TX_TO_FINAL_RX_DLY_US 500U /* RX sync window size 50 ms*/ #define RX_SYNC_WIN_US 5000U //yuan1000 7000success @@ -99,6 +102,7 @@ #define RX_WIN_IN_ADVANCE_US (150) #define DELAY_BETWEEN_TWO_FRAME_UUS 500 //yuan1400 +//#define DELAY_BETWEEN_TWO_FRAME_UUS 500 //yuan1400 /* Field index in frame */ #define MSG_SEQ_NUM_IDX 2 @@ -111,6 +115,9 @@ #define MSG_COMMON_LEN 10 #define UWB_DELAY_TIME_US 496 + + + uint8_t receive_flag=0; struct mk_uwb_configure { @@ -134,7 +141,7 @@ // .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_DW1000_XB static struct mk_uwb_configure config = { .phy_work_mode = (uint8_t)(PHY_TX | PHY_RX), .phy_cfg.ch_num = 5, /* Channel number. */ @@ -150,6 +157,43 @@ .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 +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 */ +}; +#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), @@ -309,10 +353,12 @@ poll_rx_num++; rssi = rx_report->rssi; receive_flag=1; - Anchor_App(); + Anchor_App(); if(resp_tx_flag==0) { - OpenUWB(); + + OpenUWB(); + } // #ifdef STS_MODE // valid_sts= sts_valid_check(); @@ -343,7 +389,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接收 @@ -363,10 +412,13 @@ 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接收 +// OpenUWB();//再次开启UWB接收 } uint32_t start_receive_count,end_receive_count,poll_timeout,current_count,temp_resp; uint16_t anchordata_id[TAG_NUM_IN_SYS],anchordata_dist[TAG_NUM_IN_SYS]; @@ -506,6 +558,7 @@ memcpy(&send_buffer[ANCHOR_ID_IDX],&dev_id,2);//自身id memcpy(&send_buffer[TAG_ID_IDX],&tag_id_recv,2);//接受者id send_buffer[MESSAGE_TYPE_IDX]=MBX_RESPONSE; + memcpy(&send_buffer[TAGFREQ_IDX],&tag_frequency,2); position=ancrec_nearbasepos; resp_tx_en_start_u32 = poll_rx_en_start_u32+US_TO_PHY_TIMER_COUNT(POLL_RX_TO_RESP_TX_DLY_US)+ancrec_nearbasepos*US_TO_PHY_TIMER_COUNT(DELAY_BETWEEN_TWO_FRAME_UUS);//加入帧间隔 @@ -701,7 +754,7 @@ { uwbtasktimer = HIDO_TimerGetTick(); UWBOneSecondTask(); - UWBSendUDPTask(); +// UWBSendUDPTask(); } } int uwb_app_poll(void) @@ -761,7 +814,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