| | |
| | | float dis_after_filter; //当前距离值 |
| | | LPFilter_Frac* p_Dis_Filter; //测距用的低通滤波器 |
| | | |
| | | |
| | | void NextSlotDelayMs(int16_t delayms); |
| | | void GetNearMsg(void); |
| | | static uint64_t get_tx_timestamp_u64(void) |
| | | { |
| | |
| | | } |
| | | |
| | | u16 tag_time_recv[TAG_NUM_IN_SYS]; |
| | | u8 usart_send[25]; |
| | | u8 usart_send[40]; |
| | | u8 battary,button; |
| | | extern uint8_t g_pairstart; |
| | | void tag_sleep_configuraion(void) |
| | |
| | | int32_t minddist=0x1ffff,minid=-1,temp_dist; |
| | | u8 i,j,getsync_flag=0; |
| | | u16 mindist_ancid,random_delay_tim,tempval; |
| | | |
| | | NextSlotDelayMs(-2); |
| | | dwt_setrxaftertxdelay(POLL_TX_TO_RESP_RX_DLY_UUS); //设置发送后开启接收,并设定延迟时间 |
| | | dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS); |
| | | frame_seq_nb++; |
| | |
| | | { |
| | | |
| | | exsistbase_list[i]--; |
| | | clockOffsetRatio = anc_clockoffset[i] * (FREQ_OFFSET_MULTIPLIER * HERTZ_TO_PPM_MULTIPLIER_CHAN_2 / 1.0e6) ; |
| | | rtd_init = tag_resprx[i] - poll_tx_ts; |
| | | clockOffsetRatio = anc_clockoffset[i] * (FREQ_OFFSET_MULTIPLIER * HERTZ_TO_PPM_MULTIPLIER_CHAN_5 / 1.0e6) ; |
| | | rtd_init = tag_resprx[i] - poll_tx_ts&0xffffffff; |
| | | rtd_resp = anc_resptx[i] - anc_pollrx[i]; |
| | | tof = ((rtd_init - rtd_resp * (1 - clockOffsetRatio)) / 2.0) * DWT_TIME_UNITS; |
| | | distance = tof * SPEED_OF_LIGHT; |
| | | if(distance>-1000&&distance<100000) |
| | | if(distance>-10&&distance<1000) |
| | | nearbase_distlist[i] = distance*100+anc_distoffset[i]; |
| | | }else{ |
| | | nearbase_distlist[i] = 0x1ffff; |
| | |
| | | u32 id,error_times=0; |
| | | extern float Height; |
| | | extern float Altitude; |
| | | void QiyaJizhan_Send(void) |
| | | { |
| | | GetPressAndHeight(); |
| | | intheight =Altitude*100; |
| | | nearbase_num = 0; |
| | | mainbase_id = 0x1234; |
| | | usart_send[0] = 0x55; |
| | | usart_send[1] = 0xaa; |
| | | usart_send[2] = 0x0c;//正常模式 |
| | | usart_send[3] = 15+8*(nearbase_num+1);//数据段长度 |
| | | memcpy(&usart_send[4],&dev_id,2); |
| | | usart_send[6] = frame_seq_nb; |
| | | usart_send[7] = frame_seq_nb++>>8; |
| | | usart_send[8] = bat_percent; |
| | | usart_send[9] = tx_near_msg[BUTTON_IDX]; |
| | | |
| | | memcpy(&usart_send[10],&intheight,2); |
| | | usart_send[12] = tag_frequency; |
| | | usart_send[13] = tagslotpos; |
| | | usart_send[14] = 0; |
| | | usart_send[15] = 0; |
| | | usart_send[16] = nearbase_num+1; |
| | | memcpy(&usart_send[17],&mainbase_id,2); |
| | | memcpy(&usart_send[19],&nearbaseid_list,2*nearbase_num); |
| | | memcpy(&usart_send[19+nearbase_num*2],&nearbase_distlist,4*nearbase_num+4); |
| | | memcpy(&usart_send[19+nearbase_num*6+4],&rec_anc_signalpower,2*nearbase_num+2); |
| | | |
| | | checksum = Checksum_u16(&usart_send[2],23+8*nearbase_num); |
| | | memcpy(&usart_send[25+8*nearbase_num],&checksum,2); |
| | | USART_puts(usart_send,27+8*nearbase_num); |
| | | //HexToAsciiSendUDP(usart_send,27+8*nearbase_num); |
| | | } |
| | | void Tag_App(void)//发送模式(TAG标签) |
| | | { |
| | | |
| | |
| | | // SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader |
| | | // } |
| | | // } |
| | | Dw1000_Init(); |
| | | #ifdef QIYA_JIZHAN |
| | | QiyaJizhan_Send(); |
| | | #else |
| | | // Dw1000_Init(); |
| | | dwt_forcetrxoff(); |
| | | error_times = 0; |
| | | switch(tag_state) |
| | | { |
| | |
| | | break; |
| | | case NEARPOLL: |
| | | NearPoll(); |
| | | GetPressAndHeight(); |
| | | intheight =Altitude*100; |
| | | // GetPressAndHeight(); |
| | | // intheight =Altitude*100; |
| | | break; |
| | | case SINGLEPOLL: |
| | | // Poll(); |
| | | break; |
| | | } |
| | | GetPressAndHeight(); |
| | | intheight =Altitude*100; |
| | | userkey_state = !GET_USERKEY; |
| | | dwt_forcetrxoff(); |
| | | 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); |
| | | #endif |
| | | //dwt_entersleep(); |
| | | } |