WXK
2024-04-18 4b421322afff4020c6b2c1bece996a7f9cd67337
APL/dw_mbx_tag.c
@@ -3,7 +3,7 @@
#include "WS2812.h"
//#include "syn6288.h"
#define DELAY_BETWEEN_TWO_FRAME_UUS 400
#define POLL_RX_TO_RESP_TX_DLY_UUS 470
#define POLL_RX_TO_RESP_TX_DLY_UUS 1000
#define UUS_TO_DWT_TIME 65536
static uint64_t get_rx_timestamp_u64(void)
@@ -54,7 +54,8 @@
            memcpy(&send_buffer[ANCHOR_ID_IDX],&dev_id,2);
         
//         memcpy(&send_buffer[ANCTIMEUS],&tmp_time,2);
         send_buffer[TAGFREQ_IDX] = tag_frequency;
//         send_buffer[TAGFREQ_IDX] = tag_frequency;
    send_buffer[TAGFREQ_IDX] = 1;
         memcpy(&send_buffer[TAG_ID_IDX],&tag_id_recv,2);
         poll_rx_ts = get_rx_timestamp_u64();//获得Poll包接收时间T2
           resp_tx_time = (poll_rx_ts + ((rec_nearbase_num*20+POLL_RX_TO_RESP_TX_DLY_UUS+ancrec_nearbasepos*DELAY_BETWEEN_TWO_FRAME_UUS) * UUS_TO_DWT_TIME)) >> 8;//计算Response发送时间T3。
@@ -143,26 +144,26 @@
   uint32_t rec_syncid,status_reg;
   uint16_t checksum;
    uint8_t kk;
    dwt_setrxtimeout(3000);//设定接收超时时间,0位没有超时时间
   dwt_rxenable(0);//打开接收
//    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_5, GPIO_PIN_SET);
//    printf("成功接收LORA\r\n");
        temp231 =  dwt_read32bitreg(CHAN_CTRL_ID) ;
    start_time=HAL_LPTIM_ReadCounter(&hlptim1);
    timeout=100; //单位0.1ms
    end_time=start_time+(timeout<<2);
    if(end_time>=32768)
    {end_time-=32768;}
    current_time=HAL_LPTIM_ReadCounter(&hlptim1);
    while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))//不断查询芯片状态直到接收成功或者出现错误
    {
        current_time=HAL_LPTIM_ReadCounter(&hlptim1);
        if(current_time>=end_time&&current_time<end_time+15000)
            break;
    };
   uwbdezhuangtai=status_reg;
//    dwt_setrxtimeout(3000);//设定接收超时时间,0位没有超时时间
//   dwt_rxenable(0);//打开接收
//        temp231 =  dwt_read32bitreg(CHAN_CTRL_ID) ;
//    start_time=HAL_LPTIM_ReadCounter(&hlptim1);
//    timeout=100; //单位0.1ms
//    end_time=start_time+(timeout<<2);
//    if(end_time>=32768)
//    {end_time-=32768;}
//    current_time=HAL_LPTIM_ReadCounter(&hlptim1);
//
//    while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))//不断查询芯片状态直到接收成功或者出现错误
//    {
//        current_time=HAL_LPTIM_ReadCounter(&hlptim1);
//        if(current_time>=end_time&&current_time<end_time+15000)
//            break;
//    };
//   uwbdezhuangtai=status_reg;
//    printf("UWB״̬:%x\r\n",uwbdezhuangtai);
    status_reg  = dwt_read32bitreg(SYS_STATUS_ID);
    dwt_setinterrupt(  DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 0);
   if (status_reg & SYS_STATUS_RXFCG && status_reg!=0xffffffff)//成功接收
      {
            uint16_t tag_recv_interval;
@@ -237,12 +238,9 @@
        }
    
        dwt_forcetrxoff();
        dwt_entersleep();
//printf("UWB״̬:%x\r\n",uwbdezhuangtai);
//printf("ID:%x\r\n",tag_id_recv);
//printf("测距:%x\r\n",rec_ancdistlist[0]);
//uwbdezhuangtai=0;
//tag_id_recv=0;
        dwt_setinterrupt(  DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1);
      dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间
        dwt_rxenable(0);
}
wg_state_enum wg_state = WG_Lost;
uint8_t lora_sendbuffer[200];