From 2c162b948f68bde8d17cb5e86d18a8972b5661f2 Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期二, 22 七月 2025 18:18:05 +0800 Subject: [PATCH] 修改传aoa信息逻辑为读取指令发送时并且为自身id才给,取消发送区域显示逻辑,将信号质量改为角度置信度 --- keil/include/drivers/mk_uwb.h | 83 +++++++++++++++++++++++++++++++++++++---- 1 files changed, 75 insertions(+), 8 deletions(-) diff --git a/keil/include/drivers/mk_uwb.h b/keil/include/drivers/mk_uwb.h index 40401d9..a921880 100644 --- a/keil/include/drivers/mk_uwb.h +++ b/keil/include/drivers/mk_uwb.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and + * Copyright (c) 2019-2025 Beijing Hanwei Innovation Technology Ltd. Co. and * its subsidiaries and affiliates (collectly called MKSEMI). * * All rights reserved. @@ -48,6 +48,14 @@ * @addtogroup MK8000_UWB * @{ */ + +#ifndef RANGING_EN +#if defined(FIRA_RANGING_EN) || defined(CCC_RANGING_EN) || defined(CUSTOM_RANGING_EN) || defined(UL_TDOA_EN) +#define RANGING_EN (1) +#else +#define RANGING_EN (0) +#endif +#endif /* Receiver antenna mode: Port Num in use (2 bits) | Ant Num in use (2 bits) | Index (2 bits) | Main Rx Ant (2 bits) */ // 4-Antennas, for high band (CH5/CH9) @@ -161,6 +169,25 @@ ANT_LAYOUT_VERTICAL, }; +/** + * @brief Enumeration for UWB transmission modes. + */ +enum UWB_TX_MODE_T +{ + TX_MODE_IMMEDIATE = 0, /*!< Immediate transmission mode */ + TX_MODE_DEFER = 1, /*!< Deferred transmission mode */ + TX_MODE_CSMACA = 2, /*!< CSMA-CA transmission mode */ +}; + +/** + * @brief Enumeration for UWB reception modes. + */ +enum UWB_RX_MODE_T +{ + RX_MODE_IMMEDIATE = 0, /*!< Immediate reception mode */ + RX_MODE_DEFER = 1, /*!< Deferred reception mode */ +}; + #ifdef __cplusplus extern "C" { #endif @@ -188,6 +215,20 @@ void uwb_channel_switch(uint8_t ch_num); /** + * @brief Set UWB pulse shape. + * @param[in] pulse_shape Pulse shape (0x0 - Symmetrical pulse, 0x1/0x2 - Precursor-Free) + * @note This API is used for CCC pulse shape setting + */ +void uwb_pulse_shape_set(uint8_t pulse_shape); + +/** + * @brief Set UWB pulse width. + * @param[in] width Pulse width (0x0 - 2ns(500M), 0x3 - 0.92ns(900M), 0x2 - 0.75ns(1.3G)) + * @note This API is used for UWB pulse width setting, it will change the setting of pulse shaping + */ +void uwb_pulse_width_set(uint8_t width); + +/** * @brief Set UWB TX power. * @param[in] tx_power_level TX power level */ @@ -212,9 +253,8 @@ * @param[in] mode Work mode, PHY_TX or PHY_RX or both. * @param[in] tx_power_level TX power level * @param[in] ppdu_params PHY protocol data unit parameters @ref UWB_CONFIG_T - * @return default PHY parameter set address */ -void *uwb_configure(uint8_t mode, uint8_t tx_power_level, const struct UWB_CONFIG_T *ppdu_params); +void uwb_configure(uint8_t mode, uint8_t tx_power_level, struct UWB_CONFIG_T *ppdu_params); /** * @brief Switch the PHY parameter sets. @@ -227,7 +267,7 @@ * @brief UWB transmit a packet. * @param[in] pkt_data Pointer to packet data to be sent * @param[in] pkt_len Packet length - * @param[in] scheduled_mode Scheduled sending mode + * @param[in] scheduled_mode Transmission scheduling mode @ref UWB_TX_MODE_T * @param[in] tgt_time Target time to send packet, if target time equals 0 means send immediately. * @return programmed TX event number, the maximum TX event number depends on configuration from mac_init() */ @@ -235,18 +275,28 @@ /** * @brief Receive a UWB packet. - * @param[in] scheduled_mode Scheduled receiving mode + * @param[in] scheduled_mode Reception scheduling mode @ref UWB_RX_MODE_T * @param[in] tgt_time Target time to receive packet - * @param[in] timeout_us Maximum receive window, input value <= 3,441,480 us + * @param[in] timeout Maximum receive window, unit: PHY timer count 1/124.8M * @return programmed RX event number, the maximum RX event number depends on configuration from mac_init() */ -int uwb_rx(uint8_t scheduled_mode, uint32_t target_time, uint32_t timeout_us); +int uwb_rx(uint8_t scheduled_mode, uint32_t target_time, uint32_t timeout); + +/** + * @brief UWB loopback. + * @param[in] pkt_data Pointer to packet data to be sent + * @param[in] pkt_len Packet length + * @param[in] scheduled_mode Transmission scheduling mode @ref UWB_TX_MODE_T + * @param[in] tgt_time Target time to send packet, if target time equals 0 means send immediately. + * @return programmed TX event number, the maximum TX event number depends on configuration from mac_init() + */ +int uwb_loopback(uint8_t *pkt_data, uint16_t pkt_len, uint8_t scheduled_mode, uint32_t target_time); /** * @brief Force switch off UWB Rx. * @param[in] int_rpt_dis Discard current RX interrupt report */ -void uwb_rx_force_off(uint8_t int_rpt_dis); +void uwb_rx_force_off(bool int_rpt_dis); /** * @brief Configure UWB transceiver work at TX carrier only mode. @@ -276,6 +326,23 @@ */ void uwb_blocking_trx_stop(void); +/** + * @brief Update UWB loopback time, the result is the avarage value of the count times + * @note This API will change UWB configuration, please call uwb_configure() to restore the configuration. + * @param[in] count Loopback count, one loopback test time is around 2ms + * @param[in] ppdu_params PHY protocol data unit parameters @ref UWB_CONFIG_T + */ +void uwb_loopback_time_update(uint16_t count, struct UWB_CONFIG_T *ppdu_params); + +/** + * @brief Find a suitable Vdd core voltage value and measure the UWB TX and RX loopback time for antenna delay calibration + * @note This API should be called after power_init(), suggests to do loopback calibration before antenna delay calibration. + * @param[in] wr_nvm_en Enable calibration result written into NVM + * @param[in] count Loopback count, one loopback test time is around 2ms + * @param[in] ppdu_params PHY protocol data unit parameters @ref UWB_CONFIG_T + */ +void uwb_loopback_calibration(uint8_t wr_nvm_en, uint16_t count, struct UWB_CONFIG_T *ppdu_params); + #ifdef __cplusplus } #endif -- Gitblit v1.9.3