From d74cb2bd098186eef245b733aae6945db77a7431 Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期五, 28 七月 2023 18:11:40 +0800 Subject: [PATCH] 修复bug,可以跟dw3000的接收端测距。 --- Src/application/dw_app.c | 40 ++++++++++++---------------------------- 1 files changed, 12 insertions(+), 28 deletions(-) diff --git a/Src/application/dw_app.c b/Src/application/dw_app.c index 4655448..ad53ef6 100644 --- a/Src/application/dw_app.c +++ b/Src/application/dw_app.c @@ -33,9 +33,7 @@ //#define USART_INTEGRATE_OUTPUT /*------------------------------------ Marcos ------------------------------------------*/ -#define FRAME_LEN_MAX (127) -#define FRAME_LEN_MAX_EX (1023) -#define DWT_DEVICE_ID (0xDECA0302) //!< DW1000 MP device ID + /* Inter-ranging delay period, in milliseconds. */ #define RNG_DELAY_MS 100 #define PRE_TIMEOUT 5 @@ -73,7 +71,7 @@ #define FINAL_MSG_RESP_RX_TS_IDX 14 #define FINAL_MSG_FINAL_TX_TS_IDX 18 #define FINAL_MSG_TS_LEN 4 - +extern dwt_rxdiag_t rx_diag; //#define _UWB_4G //static dwt_config_t config = { @@ -99,7 +97,7 @@ #else 9, #endif - DWT_PLEN_1024, /* Preamble length. Used in TX only. */ + DWT_PLEN_128, /* Preamble length. Used in TX only. */ DWT_PAC8, /* Preamble acquisition chunk size. Used in RX only. */ 9, /* TX preamble code. Used in TX only. */ 9, /* RX preamble code. Used in RX only. */ @@ -238,7 +236,7 @@ dwt_setrxantennadelay(RX_ANT_DLY); //设置接收天线延迟 dwt_settxantennadelay(TX_ANT_DLY); //设置发射天线延迟 - +// dwt_configciadiag(1); // dwt_setrxaftertxdelay(POLL_TX_TO_RESP_RX_DLY_UUS); // dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS); // dwt_setpreambledetecttimeout(PRE_TIMEOUT); @@ -547,16 +545,17 @@ { NVIC_SystemReset(); } - if (status_reg & SYS_STATUS_RXFCG_BIT_MASK)//如果成功接收 + if (status_reg & SYS_STATUS_RXFCG)//如果成功接收 { - dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG_BIT_MASK | SYS_STATUS_TXFRS_BIT_MASK);//清楚寄存器标志位 + dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG | SYS_STATUS_TXFRS);//清楚寄存器标志位 frame_len = dwt_read32bitreg(RX_FINFO_ID) & FRAME_LEN_MAX_EX; //获得接收到的数据长度 dwt_readrxdata(rx_buffer, frame_len, 0); //读取接收数据 test2 = dwt_readcarrierintegrator(); dwt_setrxtimeout(0);//DELAY_BETWEEN_TWO_FRAME_UUS*(nearbase_num+1-recbase_num)+10);//设定接收超时时间,0位没有超时时间 dwt_rxenable(0);//打开接收 if (rx_buffer[MESSAGE_TYPE_IDX] == MBX_RESPONSE&&!memcmp(&rx_buffer[TAG_ID_IDX],&dev_id,2)&&rx_buffer[GROUP_ID_IDX]==group_id) //判断接收到的数据是否是response数据 - { + { +// dwt_readdiagnostics(&rx_diag); poll_tx_ts = get_tx_timestamp_u64(); //获得POLL发送时间T1 resp_rx_ts = get_rx_timestamp_u64(); //获得RESPONSE接收时间T4 recbase_num++; @@ -648,7 +647,7 @@ } } }else{ - dwt_write32bitreg(SYS_STATUS_ID,SYS_STATUS_RXFCG_BIT_MASK| SYS_STATUS_ALL_RX_ERR); + dwt_write32bitreg(SYS_STATUS_ID,SYS_STATUS_RXFCG| SYS_STATUS_ALL_RX_ERR); if(flag_rxon) {dwt_rxenable(0); } @@ -656,7 +655,7 @@ // dwt_write32bitreg(SYS_STATUS_ID,SYS_STATUS_RXFCG| SYS_STATUS_ALL_RX_ERR); } dwt_forcetrxoff(); - dwt_write32bitreg(SYS_STATUS_ID,SYS_STATUS_RXFCG_BIT_MASK| SYS_STATUS_ALL_RX_ERR); + dwt_write32bitreg(SYS_STATUS_ID,SYS_STATUS_RXFCG| SYS_STATUS_ALL_RX_ERR); CalculateDists(); j = 0; next_nearbase_num = 0; @@ -707,7 +706,7 @@ exsistbase_list[i] = true_exsistbase_list[i]; } - dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR| SYS_STATUS_TXFRS_BIT_MASK |SYS_STATUS_RXFCG_BIT_MASK); + dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR| SYS_STATUS_TXFRS |SYS_STATUS_RXFCG); //HAL_GPIO_WritePin(LED0_GPIO, GPIO_PIN_9, GPIO_PIN_RESET); if(para_update==1) @@ -778,22 +777,7 @@ iderror_count=0; -// delay_us(100); -// g_Resttimer=0; -// if(freqlost_count>FREQ_LOST_TIME) -// { -// if(regpoll_count++>11) //待机状态1分钟上传一次基站状态 -// { -// regpoll_count = 0; -// Registor_Poll(); -// } -// }else{ -// if(regpoll_count++>59)//测距状态1分钟上传一次基站状态 -// { -// regpoll_count = 0; -// Registor_Poll(); -// } -// } + NearPoll(); dwt_restoreconfig(); dwt_configuresleep(DWT_CONFIG, DWT_PRES_SLEEP | DWT_WAKE_CSN | DWT_WAKE_WUP | DWT_SLP_EN); -- Gitblit v1.9.3