WXK
2023-07-28 d74cb2bd098186eef245b733aae6945db77a7431
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);