zhangbo
2025-08-04 f975229aa44884a7dba218247a49d488f54226a0
keil/uwb_tag_.c
@@ -29,7 +29,7 @@
#define POLL_DELAY  100U //yuan100U
/* Receive response timeout */
#define RESP_RX_TIMEOUT_US_DEFAULT 600U //Yuan500 10mssuccess 300jixian
#define RESP_RX_TIMEOUT_US_DEFAULT 700U //Yuan500 10mssuccess 300jixian
#define RESP_RX_TIMEOUT_US 2000000
/* Field index in frame */
#define MSG_SEQ_NUM_IDX 2
@@ -37,7 +37,8 @@
#define FINAL_MSG_RESP_RX_TS_IDX 14
#define FINAL_MSG_FINAL_TX_TS_IDX 18
#define DELAY_DEFAULT 50000
#define DELAY_BETWEEN_TWO_FRAME_UUS 500  //yuan1400
//#define DELAY_BETWEEN_TWO_FRAME_UUS 500  //yuan1400
#define DELAY_BETWEEN_TWO_FRAME_UUS 700  //yuan1400
#define HALF_SECOND_TIME 62400000
uint16_t CmpTagInList(uint16_t tagid);
@@ -51,15 +52,16 @@
};
uint32_t dev_id;
uint8_t group_id;
#ifdef DW1000
/* Default communication configuration. */
static struct mk_uwb_configure config = {//yuan
    .phy_work_mode = (uint8_t)(PHY_TX | PHY_RX),
    .phy_cfg.ch_num = 9,                      /* Channel number.                           */
    .phy_cfg.ch_num = UWB_CH_NUM,             /* Channel number.                           */
    .phy_cfg.code_index = 9,                  /* TRX preamble code                         */
    .phy_cfg.mean_prf = MEAN_PRF_64M,         /* Mean prf 64/128/256M                      */
    .phy_cfg.data_bit_rate = DATA_BR_6M8,     /* Data rate 6.8M                            */
    .phy_cfg.sync_sym = PREAM_LEN_128,        /* Preamble duration, length of preamble 128 */
    .phy_cfg.sync_sym = PREAM_LEN_64,        /* Preamble duration, length of preamble 128 */
    .phy_cfg.sfd_sym = NON_STD_NSFD5_8,          /* Identifier for SFD sequence               */
    .phy_cfg.ranging_bit = 1,                 /* ranging bit set 1                         */
    .phy_cfg.trx_mode = TRX_MODE_15_4A,  /* IEEE802.15.4z - BPRF mode                 */
@@ -193,6 +195,7 @@
extern double distance;
extern uint8_t bat_percent;
uint32_t count1,count2;
extern uint32_t reboot_num;
enum SIMPLE_FSM_T
{
    SIMPLE_IDLE = 0,
@@ -212,6 +215,7 @@
    {
        tag_num_tosend = SEND_GROUP_MAX_NUM;
    }
    memcpy(&uwb_sendbuffer[7],&g_com_map[VERSION],2);
      uwb_sendbuffer[GROUP_ID_IDX] = group_id;
      memcpy(&uwb_sendbuffer[TAG_ID_IDX],&dev_id,2);
      uwb_sendbuffer[BATTARY_IDX] = bat_percent;
@@ -220,7 +224,8 @@
      memcpy(&uwb_sendbuffer[NEARBASEID_INDEX],&taglist_id[taglist_current_index],tag_num_tosend*2);//基站id
    memcpy(&uwb_sendbuffer[NEARBASEID_INDEX+tag_num_tosend*2],&taglist_dist[taglist_current_index],tag_num_tosend*2);
      uwb_sendbuffer[MESSAGE_TYPE_IDX] = MBX_POLL;   
      memcpy(&uwb_sendbuffer[ANCHOR_ID_IDX],&mainbase_id,2);
//      memcpy(&uwb_sendbuffer[ANCHOR_ID_IDX],&mainbase_id,2);
}
static enum SIMPLE_FSM_T state = SIMPLE_IDLE;
@@ -651,6 +656,7 @@
            sleep_timer_start(__MS_TO_32K_CNT(SLEEP_COUNT-rand_temp));//测试
            }else if (rx_buf[MESSAGE_TYPE_IDX] == MBX_RESPONSE&&!memcmp(&rx_buf[TAG_ID_IDX],&dev_id,2)&&rx_buf[GROUP_ID_IDX]==group_id) //判断接收到的数据是否是response数据
                     {   
                        reboot_num=0;//清0复位监测数值
                           memcpy(&rec_nearbaseid,&rx_buf[ANCHOR_ID_IDX],2);
                        rec_tag_index = CmpTagInList(rec_nearbaseid);//当前新来的这包数据插入当前表中的位置索引
                           //rec_nearbasepos=FindNearBasePos(rec_nearbaseid);
@@ -663,7 +669,7 @@
//                              nearbase_num++;
//                              nearbaseid_list[rec_nearbasepos] = rec_nearbaseid;
//                           }
//                           exsistbase_list[rec_nearbasepos]=KEEP_TIMES;//更新存活时间
                           //exsistbase_list[rec_nearbasepos]=KEEP_TIMES;//更新存活时间
              
                     memset(rx_buf, 0, sizeof(rx_buf));//清空接收到的用完的数组
                     rx_length=0;//清0长度