From cf92a2fedf94d889b1a39e8557221149ea554a3c Mon Sep 17 00:00:00 2001 From: yincheng.zhong <634916154@qq.com> Date: 星期五, 19 五月 2023 14:30:44 +0800 Subject: [PATCH] v2.8 --- Src/application/dw_ancapp.c | 40 ++++++++++++++++++++++++---------------- 1 files changed, 24 insertions(+), 16 deletions(-) diff --git a/Src/application/dw_ancapp.c b/Src/application/dw_ancapp.c index 13f9468..2f6554a 100644 --- a/Src/application/dw_ancapp.c +++ b/Src/application/dw_ancapp.c @@ -60,7 +60,8 @@ static uint64_t final_rx_ts; static uint32_t status_reg = 0; extern uint8_t tx_near_msg[80]; -static uint8_t motor_state,result; +uint8_t motor_state; +static u8 result; static uint64_t get_tx_timestamp_u64(void) { uint8_t ts_tab[5]; @@ -108,7 +109,7 @@ *ts += ts_field[i] << (i * 8); } } - +u8 send_buffer[100]; #define FZ_NEARBASENUM_INDEX 10 #define FZ_NEARBASEID_INDEX 11 void FZNearPoll(void) @@ -118,7 +119,7 @@ uint32_t final_tx_time; u32 start_poll; u8 i,j,getsync_flag=0,timeout; - dwt_setrxaftertxdelay(POLL_TX_TO_RESP_RX_DLY_UUS); //设置发送后开启接收,并设定延迟时间 + dwt_setrxaftertxdelay(10); //设置发送后开启接收,并设定延迟时间 dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS); tag_succ_times = 0; //GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_SET); @@ -131,17 +132,19 @@ nearbase_num=next_nearbase_num; recbase_num=0; motor_state=0; - tx_near_msg[GROUP_ID_IDX] = group_id; - tx_near_msg[BATTARY_IDX] = bat_percent; + + memcpy(&send_buffer[TAG_ID_IDX], &dev_id, 2); + send_buffer[GROUP_ID_IDX] = group_id; + send_buffer[BATTARY_IDX] = bat_percent; //tx_near_msg[BUTTON_IDX] = !GET_USERKEY|stationary_flag<<1; - tx_near_msg[SEQUENCE_IDX] = frame_seq_nb++; - tx_near_msg[FZ_NEARBASENUM_INDEX] = nearbase_num; - memcpy(&tx_near_msg[FZ_NEARBASEID_INDEX],&nearbaseid_list,nearbase_num*2); - tx_near_msg[MESSAGE_TYPE_IDX] = NEAR_POLL; - memcpy(&tx_near_msg[ANCHOR_ID_IDX],&mainbase_id,2); - dwt_writetxdata(13+2*nearbase_num, tx_near_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去 - dwt_writetxfctrl(13+2*nearbase_num, 0);//设置超宽带发送数据长度 - dwt_starttx(DWT_START_TX_IMMEDIATE | DWT_RESPONSE_EXPECTED);//开启发送,发送完成后等待一段时间开启接收,等待时间在dwt_setrxaftertxdelay中设置 + send_buffer[SEQUENCE_IDX] = frame_seq_nb++; + send_buffer[FZ_NEARBASENUM_INDEX] = nearbase_num; + memcpy(&send_buffer[FZ_NEARBASEID_INDEX],&nearbaseid_list,nearbase_num*2); + send_buffer[MESSAGE_TYPE_IDX] = NEAR_POLL; + memcpy(&send_buffer[ANCHOR_ID_IDX],&mainbase_id,2); + dwt_writetxdata(35, send_buffer, 0);//将Poll包数据传给DW1000,将在开启发送时传出去 + dwt_writetxfctrl(35, 0);//设置超宽带发送数据长度 + dwt_starttx(DWT_START_TX_IMMEDIATE| DWT_RESPONSE_EXPECTED);//开启发送,发送完成后等待一段时间开启接收,等待时间在dwt_setrxaftertxdelay中设置 tx_near_msg[TAGCONFIGSUCCESS_INDEX] =0; para_update = 0; @@ -151,9 +154,13 @@ neartimout_timer = 0; recbase_num=0; + start_count=HAL_LPTIM_ReadCounter(&hlptim1); timeout=ceil((float)nearbase_num*SLOT_SCALE)+3; - - while(neartimout_timer<timeout) + current_count=HAL_LPTIM_ReadCounter(&hlptim1); + end_count=start_count+(timeout<<5); + if(end_count>=32768) + {end_count-=32768;} + while(current_count<end_count||current_count>end_count+15000) { while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))//不断查询芯片状态直到成功接收或者发生错误 { @@ -172,7 +179,8 @@ } } - if(neartimout_timer>timeout) + current_count=HAL_LPTIM_ReadCounter(&hlptim1); + if(current_count>=end_count&¤t_count<end_count+15000) break; }; if(status_reg==0xffffffff) -- Gitblit v1.9.3