From ac55307242da6846c2b8fe4b710fb90feaa30978 Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期三, 11 十二月 2024 17:15:39 +0800 Subject: [PATCH] PCA的INT脚加速度计清0判断成功,INT脚中断正常 --- keil/uwb_app.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 46 insertions(+), 12 deletions(-) diff --git a/keil/uwb_app.c b/keil/uwb_app.c index befa0c1..81b5eba 100644 --- a/keil/uwb_app.c +++ b/keil/uwb_app.c @@ -69,7 +69,7 @@ #define RANGING_PERIOD_MS (1000) /* This is the delay from Frame RX POLL frame to send RESP Frame */ -#define POLL_RX_TO_RESP_TX_DLY_US 4000U //yuan670 with urt 3000success +#define POLL_RX_TO_RESP_TX_DLY_US 2000U //yuan670 with urt 3000success #define RESP_TX_TO_FINAL_RX_DLY_US 500U @@ -432,7 +432,7 @@ // resp_tx_en_start_u32 = phy_timer_count_get()+US_TO_PHY_TIMER_COUNT(20*rec_nearbase_num+POLL_RX_TO_RESP_TX_DLY_US+ancrec_nearbasepos*DELAY_BETWEEN_TWO_FRAME_UUS);//后面的需要根据已有基站数量进行更改,如果是抢占自己最后一个回复,要有底数 // //这里应该有问题问一下钟工 // }//此处设置绝对时间将poll u32改为phy_timer_count_get() - resp_tx_en_start_u32 = phy_timer_count_get()+US_TO_PHY_TIMER_COUNT(POLL_RX_TO_RESP_TX_DLY_US); + resp_tx_en_start_u32 = poll_rx_en_start_u32+US_TO_PHY_TIMER_COUNT(POLL_RX_TO_RESP_TX_DLY_US); resp_tx_ts_i64 = ranging_tx_time_correct(resp_tx_en_start_u32 + phy_shr_duration());//修正时间戳 /* Write all timestamps in the final message. See NOTE 8 below. */ resp_msg_set_ts(&send_buffer[RESP_MSG_POLL_RX_TS_IDX], poll_rx_ts_i64); @@ -652,18 +652,25 @@ if(rssi_ant0>rssi_ant2&&distance_from_tag<200) { change_count[position_anchor_exist]++; + if(change_count[position_anchor_exist]>0) + { + position_anchor_in_table=CmpCarInTable(receive_success_id); + add_in_car_table(position_anchor_in_table,receive_success_id); + } if(change_count[position_anchor_exist]>=3) { change_count[position_anchor_exist]=3; - position_anchor_in_table=CmpCarInTable(receive_success_id); - add_in_car_table(position_anchor_in_table,receive_success_id); + } }else if(rssi_ant0<rssi_ant2&&distance_from_tag<200) { change_count[position_anchor_exist]--; - if(change_count[position_anchor_exist]<=-3) - {change_count[position_anchor_exist]=-3; + if(change_count[position_anchor_exist]<0) + { position_anchor_in_table=CmpCarInTable(receive_success_id); delete_in_car_table(position_anchor_in_table); + } + if(change_count[position_anchor_exist]<=-3) + {change_count[position_anchor_exist]=-3; } } } @@ -768,7 +775,7 @@ } recev_error_num=0; //range_timeout_us=5000;//恢复为5000进入range后 - LOG_INFO(TRACE_MODULE_APP,"标签ID:%X,距离: %d 信号强度ANT0: %f,信号强度ANT2: %f\r\n",g_com_receive_id,distance,sts_rssi[0],sts_rssi[2]); + //LOG_INFO(TRACE_MODULE_APP,"标签ID:%X,距离: %d 包序%d\r\n",g_com_receive_id,distance,frame_seq_nb2); check_if_in_or_out_car(g_com_receive_id,distance,sts_rssi[0],sts_rssi[2]); @@ -805,36 +812,48 @@ } void Uwb_init(void) { + #ifdef STS_MODE // Set STS key and IV phy_sts_key_configure(&sts_iv_key); // which RX ports will be used for AoA/PDoA phy_rx_ant_mode_set(RX_ANT_PORTS_COMBINATION); - + #endif // Set calibration parameters uwb_calibration_params_set(config.phy_cfg.ch_num); - + #ifndef STS_MODE // set advanced parameters + struct PHY_ADV_CONFIG_T adv_config = { + .thres_fap_detect = 40, + .nth_scale_factor = 4, + .ranging_performance_mode = 0, + .skip_weakest_port_en = 0, + }; + #else + // set advanced parameters struct PHY_ADV_CONFIG_T adv_config = { .thres_fap_detect = 40, .nth_scale_factor = 4, .ranging_performance_mode = 3, .skip_weakest_port_en = 0, }; + #endif phy_adv_params_configure(&adv_config); // uwb configure uwb_configure(config.phy_work_mode, board_param.tx_power_fcc[CALIB_CH(config.phy_cfg.ch_num)], &config.phy_cfg); - + #ifdef STS_MODE ranging_lib_init(); + #endif ranging_frame_type_set(config.phy_cfg.sts_pkt_cfg); - + #ifdef STS_MODE aoa_aux_info_set(AOA_AUX_ANT_IQ_RSSI_PDOA_AOA_FOM); aoa_steering_vector_set((const float *)((uint32_t)((config.phy_cfg.ch_num == 9) ? svec_ch9_ptr : svec_ch5_ptr) | SRAM_BASE)); aoa_param_config(); phy_rx_sts_switch_mode_set(config.phy_cfg.sts_pkt_cfg, STS_SWITCH_EVERY_4SYM, 0, 0); + #endif } //主函数绑定接受逻辑 int UwbSearch(void) @@ -844,36 +863,51 @@ // The following peripherals will be initialized in the uwb_open function // phy/mac/aes/lsp/phy timers initialized uwb_open(); + #ifdef STS_MODE // Set STS key and IV phy_sts_key_configure(&sts_iv_key); // which RX ports will be used for AoA/PDoA phy_rx_ant_mode_set(RX_ANT_PORTS_COMBINATION); - + #endif // Set calibration parameters uwb_calibration_params_set(config.phy_cfg.ch_num); + #ifndef STS_MODE // set advanced parameters + struct PHY_ADV_CONFIG_T adv_config = { + .thres_fap_detect = 40, + .nth_scale_factor = 4, + .ranging_performance_mode = 0, + .skip_weakest_port_en = 0, + }; + #else + // set advanced parameters struct PHY_ADV_CONFIG_T adv_config = { .thres_fap_detect = 40, .nth_scale_factor = 4, .ranging_performance_mode = 3, .skip_weakest_port_en = 0, }; + #endif phy_adv_params_configure(&adv_config); // uwb configure uwb_configure(config.phy_work_mode, board_param.tx_power_fcc[CALIB_CH(config.phy_cfg.ch_num)], &config.phy_cfg); + #ifdef STS_MODE ranging_lib_init(); + #endif ranging_frame_type_set(config.phy_cfg.sts_pkt_cfg); + #ifdef STS_MODE aoa_aux_info_set(AOA_AUX_ANT_IQ_RSSI_PDOA_AOA_FOM); aoa_steering_vector_set((const float *)((uint32_t)((config.phy_cfg.ch_num == 9) ? svec_ch9_ptr : svec_ch5_ptr) | SRAM_BASE)); aoa_param_config(); phy_rx_sts_switch_mode_set(config.phy_cfg.sts_pkt_cfg, STS_SWITCH_EVERY_4SYM, 0, 0); + #endif // Register rx interrupt callback function mac_register_process_handler(tx_int_callback, rx_int_callback); -- Gitblit v1.9.3