From c513ae47c722876a69a7b8aea1efb82edaf2fa42 Mon Sep 17 00:00:00 2001 From: zhyinch <zhyinch@gmail.com> Date: 星期三, 26 五月 2021 12:36:57 +0800 Subject: [PATCH] 测试完成 --- Src/application/dw_app.c | 57 +++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 41 insertions(+), 16 deletions(-) diff --git a/Src/application/dw_app.c b/Src/application/dw_app.c index 167813d..b283028 100644 --- a/Src/application/dw_app.c +++ b/Src/application/dw_app.c @@ -69,7 +69,7 @@ #define FINAL_MSG_FINAL_TX_TS_IDX 18 #define FINAL_MSG_TS_LEN 4 -#define STARTPOLL SINGLEPOLL//#define SWITCHBASE_DIST +#define STARTPOLL REGPOLL//#define SWITCHBASE_DIST #define SWITCHBASE_ZHUANDIAN enum enumtagstate { @@ -78,7 +78,7 @@ GETNEARMSG, NEARPOLL, SINGLEPOLL, -}tag_state=STARTPOLL; +}tag_state=REGPOLL; static dwt_config_t config = { 2, /* Channel number. */ DWT_PRF_64M, /* Pulse repetition frequency. */ @@ -95,7 +95,7 @@ static uint8_t tx_sync_msg[14] = {0}; static uint8_t tx_final_msg[60] = {0}; static uint8_t tx_resp_msg[22] = {0}; - uint8_t tx_near_msg[80] = {0}; + uint8_t tx_near_msg[180] = {0}; static uint32_t frame_seq_nb = 0; static uint32_t status_reg = 0; @@ -472,9 +472,9 @@ u8 motor_state,rec_remotepara_state,rec_remotepara[80]; -#define SINGLEPOLL_BASENUM 10 -uint16_t singlepoll_baseid[SINGLEPOLL_BASENUM]={0x9733,0x9788,0x9798,0x8159,0x9797,0x9790,0x9799,0x9785,0x8169,0x8276}; -int32_t singlepoll_basedist[SINGLEPOLL_BASENUM]; +#define SINGLEPOLL_BASENUM 15 +uint16_t singlepoll_baseid[20]={0x8166,0x9804,0x9689,0x9686,0x8279,0x9815,0x9803,0x9814,0x9687,0x9774,0x8278,0x9743,0x9688,0x9771,0x8277}; +int32_t singlepoll_basedist[20]; extern u8 userkey_state; extern float motor_keeptime; @@ -496,17 +496,17 @@ for(singlepoll_i=0;singlepoll_i<SINGLEPOLL_BASENUM;singlepoll_i++) { /* Write frame data to DW1000 and prepare transmission. See NOTE 7 below. */ - nearbase_num = SINGLEPOLL_BASENUM-1; + nearbase_num = SINGLEPOLL_BASENUM; tx_near_msg[BATTARY_IDX] = bat_percent; tx_near_msg[BUTTON_IDX] = userkey_state|stationary_flag<<1|gotosleep_flag<<2; tx_near_msg[SEQUENCE_IDX] = frame_seq_nb; tx_near_msg[SEQUENCEH_IDX] = (frame_seq_nb)>>8; tx_near_msg[NEARBASENUM_INDEX] = nearbase_num; - memcpy(&tx_near_msg[NEARBASEID_INDEX],&nearbaseid_list,nearbase_num*2); - memcpy(&tx_near_msg[NEARBASEID_INDEX+nearbase_num*2],&nearbase_distlist,nearbase_num*4+4); - intheight+=g_com_map[MAX_REPORT_ANC_NUM]; - memcpy(&tx_near_msg[NEARBASEID_INDEX+nearbase_num*6+4],&intheight,2); + memcpy(&tx_near_msg[NEARBASEID_INDEX],&singlepoll_baseid,nearbase_num*2); + memcpy(&tx_near_msg[NEARBASEID_INDEX+nearbase_num*2],&singlepoll_basedist,nearbase_num*4+4); + intheight+=g_com_map[HEIGHTOFFEST_INDEX]; + memcpy(&tx_near_msg[NEARBASEID_INDEX+nearbase_num*6],&intheight,2); tx_near_msg[MESSAGE_TYPE_IDX] = SPOLL; tx_near_msg[NEARP_TAGFREQ_INDEX] = tag_frequency; @@ -598,17 +598,18 @@ } else { - singlepoll_basedist[singlepoll_i] = 0x1ffff; + // singlepoll_basedist[singlepoll_i] = 0x1ffff; random_delay_tim = DFT_RAND_DLY_TIM_MS; //如果通讯失败,将间隔时间增加5ms,避开因为多标签同时发送引起的冲突。 } } else { - singlepoll_basedist[singlepoll_i] = 0x1ffff; + // singlepoll_basedist[singlepoll_i] = 0x1ffff; dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR); random_delay_tim = DFT_RAND_DLY_TIM_MS; } } + if(getsync_flag==0) { // tagslotpos--; @@ -697,7 +698,10 @@ tx_near_msg[NEARBASENUM_INDEX] = nearbase_num; memcpy(&tx_near_msg[NEARBASEID_INDEX],&nearbaseid_list,nearbase_num*2); memcpy(&tx_near_msg[NEARBASEID_INDEX+nearbase_num*2],&nearbase_distlist,nearbase_num*4+4); - intheight+=g_com_map[MAX_REPORT_ANC_NUM]; + + if(intheight!=0) + intheight+=g_com_map[HEIGHTOFFEST_INDEX]; + memcpy(&tx_near_msg[NEARBASEID_INDEX+nearbase_num*6+4],&intheight,2); tx_near_msg[MESSAGE_TYPE_IDX] = NEAR_POLL; @@ -776,6 +780,25 @@ para_len = frame_len-22; memcpy(rec_remotepara,&rx_buffer[REMOTEPARA_INDEX],para_len); } + if(!memcmp(&rx_buffer[TAGPOS_INDEX],&dev_id,2)) + { + static u16 last_baoxu,baoxu; + + usart_send[0]=0x55; + usart_send[1]=0xaa; + usart_send[2] = 0x0e;//正常模式 + usart_send[3] = 18;//数据段长度 + + memcpy(&usart_send[4],&rx_buffer[TAGPOS_INDEX],16); + memcpy(&baoxu,&usart_send[6],2); + if(last_baoxu!=baoxu) + { + last_baoxu = baoxu; + checksum = Checksum_u16(&usart_send[2],18); + memcpy(&usart_send[20],&checksum,2); + UART_PushFrame(usart_send,22); + } + } dwt_writetxdata(28+nearbase_num*4, tx_near_msg, 0);//将发送数据写入DW1000 dwt_writetxfctrl(28+nearbase_num*4, 0);//设定发送数据长度 dwt_setdelayedtrxtime(final_tx_time);//设置final包发送时间T5 @@ -934,8 +957,9 @@ memcpy(&tx_near_msg[REGP_VERSION_INDEX],&g_com_map[VERSION],2); memcpy(&tx_near_msg[REGP_IMUTHRES_INDEX],&g_com_map[IMU_THRES],2); memcpy(&tx_near_msg[REGP_NOMOVESLEEPTIME_INDEX],&g_com_map[NOMOVESLEEP_TIME],2); - dwt_writetxdata(21, tx_near_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去 - dwt_writetxfctrl(21, 0);//设置超宽带发送数据长度 + memcpy(&tx_near_msg[REGP_HEIGHTOFFSET_INDEX],&g_com_map[HEIGHTOFFEST_INDEX],2); + dwt_writetxdata(23, tx_near_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去 + dwt_writetxfctrl(23, 0);//设置超宽带发送数据长度 dwt_starttx(DWT_START_TX_IMMEDIATE | DWT_RESPONSE_EXPECTED);//开启发送,发送完成后等待一段时间开启接收,等待时间在dwt_setrxaftertxdelay中设置 while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))//不断查询芯片状态直到成功接收或者发生错误 { @@ -1045,5 +1069,6 @@ Poll(); break; } + userkey_state = !GET_USERKEY; dwt_entersleep(); } -- Gitblit v1.9.3