zhyinch
2019-07-29 743f4f1291c555b1facc0c34bcbb3cea3cfd41c4
Ô´Âë/ºËÐİå/Src/application/dw_app.c
@@ -256,8 +256,7 @@
    /* Set expected response's delay and timeout. See NOTE 4 and 5 below.
     * As this example only handles one incoming frame with always the same delay and timeout, those values can be set here once for all. */
    dwt_setrxaftertxdelay(POLL_TX_TO_RESP_RX_DLY_UUS);         //设置发送后开启接收,并设定延迟时间
    dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS);                  //设置接收超时时间
            //设置接收超时时间
}
void Dw1000_App_Init(void)
{
@@ -301,14 +300,14 @@
   u32 start_poll;
   u8 i;
   //LED0_ON;
   dwt_forcetrxoff();
   g_Resttimer=0;
   GPIO_ResetBits(SPIx_GPIO, SPIx_CS);
   delay_us(2500);
   GPIO_SetBits(SPIx_GPIO, SPIx_CS);
    dwt_setrxaftertxdelay(POLL_TX_TO_RESP_RX_DLY_UUS);         //设置发送后开启接收,并设定延迟时间
    dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS);
   tag_succ_times = 0;
   tx_poll_msg[BATTARY_IDX] = Get_Battary();
   tx_poll_msg[BUTTON_IDX] = !READ_KEY0;
   dwt_forcetrxoff();
   for(i=0;i<REPOET_ANC_NUM;i++)
   {
   /* Write frame data to DW1000 and prepare transmission. See NOTE 7 below. */
@@ -326,7 +325,7 @@
   { if(time32_incr - start_poll>20)
      NVIC_SystemReset();
      UART_CheckReceive();
      UART_CheckSend();
   };
   /* Increment frame sequence number after transmission of the poll message (modulo 256). */
@@ -355,7 +354,7 @@
         poll_tx_ts = get_tx_timestamp_u64();                              //获得POLL发送时间T1
         resp_rx_ts = get_rx_timestamp_u64();                              //获得RESPONSE接收时间T4
         
         memcpy(&anchor_dist_last_frm[tag_id], &rx_buffer[DIST_IDX], 4);
         memcpy(&anchor_dist_last_frm[0], &rx_buffer[DIST_IDX], 4);
         memcpy(&tx_final_msg[ANCHOR_ID_IDX], &rx_buffer[ANCHOR_ID_IDX], 4);
         /* Compute final message transmission time. See NOTE 9 below. */
         final_tx_time = (resp_rx_ts + (RESP_RX_TO_FINAL_TX_DLY_UUS * UUS_TO_DWT_TIME)) >> 8;//计算final包发送时间,T5=T4+Treply2
@@ -376,7 +375,25 @@
         result=dwt_starttx(DWT_START_TX_DELAYED);//设定为延迟发送
         
         tag_succ_times++;
         #ifdef WORK_MODE_TAG
            LED0_BLINK;
         #endif
            #ifdef HEX_OUTPUT
               usart_send[2] = frame_seq_nb++;
               //usart_send[6] = tag_id_recv;
               //usart_send[8] = g_com_map[DEV_ID];
               memcpy(&usart_send[3],&dev_id,4);
               memcpy(&usart_send[7],&rx_buffer[ANCHOR_ID_IDX],4);
               hex_dist = anchor_dist_last_frm[0];
               memcpy(&usart_send[11],&hex_dist,4);
               usart_send[15] = battary;
               usart_send[16] = button;
               checksum = Checksum_u16(&usart_send[2],19);
               memcpy(&usart_send[21],&checksum,2);
               UART_PushFrame(usart_send,23);
               #else
               printf("Anchor ID: %d, Tag ID: %d, Dist = %d cm\n", g_com_map[DEV_ID_L]|g_com_map[DEV_ID_L]<<8, tag_id_recv, (uint16_t)dist_cm);
               #endif
         /* Poll DW1000 until TX frame sent event set. See NOTE 8 below. */
         if(result==0)
         {while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS))//不断查询芯片状态直到发送完成
@@ -402,7 +419,7 @@
   }
//   deca_sleep(10);
}
   dwt_entersleep();
//   dwt_entersleep();
   if(tag_succ_times<REPOET_ANC_NUM_MIN)
   {
   random_delay_tim =time32_incr&0x8f+7;