| | |
| | | |
| | | //#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 |
| | |
| | | #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 = { |
| | |
| | | #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. */ |
| | |
| | | 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); |
| | |
| | | { |
| | | 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_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++; |
| | |
| | | } |
| | | } |
| | | }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); |
| | | } |
| | |
| | | // 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; |
| | |
| | | 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) |
| | |
| | | |
| | | |
| | | 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); |