| | |
| | | #define REPORT_TAG_KEEPTIMES 5 |
| | | static uint16_t ancidlist_rec[TAG_NUM_IN_SYS],ancidlist_send[TAG_NUM_IN_SYS],rec_ancidlist[TAG_NUM_IN_SYS],rec_ancdistlist[TAG_NUM_IN_SYS]; |
| | | static u8 frame_seq_nb2,battary,button,uwb_losttimer,taglist_pos; |
| | | |
| | | uint8_t rec_num[3]; |
| | | static u8 tagofflinetime[ANC_MAX_NUM]; |
| | | u8 taglist_num; |
| | | uint16_t tagid_list[ANC_MAX_NUM],tagdist_list[ANC_MAX_NUM]; |
| | |
| | | dwt_writetxdata(38, send_buffer, 0);//写入发送数据 |
| | | dwt_writetxfctrl(38, 0);//设定发送长度 |
| | | result = dwt_starttx(DWT_START_TX_DELAYED); |
| | | |
| | | start_time=HAL_LPTIM_ReadCounter(&hlptim1); |
| | | timeout=100; //单位0.1ms |
| | | end_time=start_time+(timeout<<2); |
| | | if(end_time>=32768) |
| | | if(result==0) |
| | | { |
| | | end_time-=32768; |
| | | } |
| | | current_time=HAL_LPTIM_ReadCounter(&hlptim1); |
| | | while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & SYS_STATUS_TXFRS ))///不断查询芯片状态直到接收成功或者出现错误 |
| | | { |
| | | rec_num[2]++; |
| | | 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); |
| | | if(current_time>=end_time&¤t_time<end_time+15000) |
| | | break; |
| | | }; |
| | | while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & SYS_STATUS_TXFRS ))///不断查询芯片状态直到接收成功或者出现错误 |
| | | { |
| | | current_time=HAL_LPTIM_ReadCounter(&hlptim1); |
| | | if(current_time>=end_time&¤t_time<end_time+15000) |
| | | break; |
| | | }; |
| | | } |
| | | |
| | | tagofflinetime[taglist_pos] = 0; |
| | | // printf("测距成功,序号%d,距离%d\r\n",frame_seq_nb2,tagdist_list[taglist_pos]); |
| | | // delay_ms(10); |
| | |
| | | return i; |
| | | } |
| | | uint32_t temp231; |
| | | |
| | | void MbxTagUwbRec(void) |
| | | { |
| | | |
| | |
| | | { |
| | | end_time-=32768; |
| | | } |
| | | rec_num[0]++; |
| | | current_time=HAL_LPTIM_ReadCounter(&hlptim1); |
| | | |
| | | while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))//不断查询芯片状态直到接收成功或者出现错误 |
| | |
| | | |
| | | dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG | SYS_STATUS_TXFRS); |
| | | frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFL_MASK_1023;//获得接收数据长度 |
| | | |
| | | rec_num[1]++; |
| | | dwt_readrxdata(rx_buffer, frame_len, 0);//读取接收数据 |
| | | memcpy(&anc_id_recv,&rx_buffer[ANCHOR_ID_IDX],2); |
| | | //将收到的tag_id分别写入各次通讯的包中,为多标签通讯服务,防止一次通讯中接收到不同ID标签的数据 |