From e54166d028ed6c32324d24fc28c54c8194906c60 Mon Sep 17 00:00:00 2001
From: zhangbo <zhangbo@qq.com>
Date: 星期一, 24 二月 2025 16:38:27 +0800
Subject: [PATCH] 测试阶段:可以跟多个UWB基站测距,以及蓝牙协议转发,现在上传协议是强制写进去的,然后还有那个基站,标签时间同步没有调试正常,

---
 keil/include/drivers/mk_phy.h |   64 ++++++++++++++++++++++++++++----
 1 files changed, 56 insertions(+), 8 deletions(-)

diff --git a/keil/include/drivers/mk_phy.h b/keil/include/drivers/mk_phy.h
index bec64e5..19b0bb5 100644
--- a/keil/include/drivers/mk_phy.h
+++ b/keil/include/drivers/mk_phy.h
@@ -52,7 +52,7 @@
 #define PHY_PAYLOAD_LEN_MAX 1023
 #endif
 
-/** us to PHY timer count converter, x <= 3,441,480 us */
+/** us to PHY timer count converter, x <= 34,414,802 us */
 #define US_TO_PHY_TIMER_COUNT(x) ((x)*1248U / 10U)
 /** ms to PHY timer count converter x <= 34,414 ms */
 #define MS_TO_PHY_TIMER_COUNT(x) ((x)*124800U)
@@ -66,11 +66,13 @@
 
 /** PHY timer count to MAC timer count converter */
 #define PHY_TIMER_COUNT_TO_MAC_TIMER_COUNT(x) ((x) >> 1)
+/** ms to MAC timer count converter x <= 68,829 ms */
+#define MS_TO_MAC_TIMER_COUNT(x) ((x)*62400U)
 
 /** RSTU to PHY timer count converter, x <= 41,297,762 RSTU */
 #define RSTU_TO_PHY_TIMER_COUNT(x) ((x)*104U)
 
-/** RSTU to us converter, x <= 429,496,729 RSTU */
+/** RSTU to us converter */
 #define RSTU_TO_US(x) ((x)*10U / 12U)
 /** RSTU to ms converter */
 #define RSTU_TO_MS(x) ((x) / 1200U)
@@ -86,11 +88,8 @@
 /** sleep count to PHY timer count converter */
 #define SLEEP_COUNT_TO_PHY_TIMER_COUNT(x) ((uint32_t)((float)(x) * (124800000.0f / 32768.0f)))
 
-/** The maximum sleep time of PHY, 10s */
-#define PHY_SLEEP_TIME_MS_MAX (10000U)
-
-/** The minimum sleep time of PHY, 2000us */
-#define PHY_SLEEP_TIME_US_MIN (2000U)
+/** PHY timer count to sleep count converter */
+#define PHY_TIMER_COUNT_TO_SLEEP_COUNT(x) ((uint32_t)((float)(x) * (32768.0f / 124800000.0f)))
 
 /// Low power mode clock drift compensation for phy timer count, p = ppm, t = interval(ms)
 #define LPM_PPM_COMPENSATION(p, t) ((p)*2 * (t)*1248 / 10000)
@@ -199,6 +198,7 @@
     PHY_IDLE = 0,
     PHY_TX = 1,
     PHY_RX = 2,
+    PHY_TRX = 3,
 };
 
 /** PHY protocol data unit parameters */
@@ -219,6 +219,7 @@
     uint8_t sts_seglen;
     uint8_t rx_ant_id;
     uint8_t fcs_type;
+    uint8_t pulse_shape;
 };
 
 /** STS key configuration*/
@@ -318,6 +319,12 @@
  * @return 0 represent intialization successful
  */
 int phy_init(enum IRQ_PRIORITY_LEVEL_T priority);
+
+/**
+ * @brief De-initialize PHY, disable PHY interrupt.
+ * @return 0 represent de-intialization successful
+ */
+int phy_deinit(void);
 
 /**
  * @brief Register PHY interrupt callback function.
@@ -458,8 +465,15 @@
 int phy_timer_close(void);
 
 /**
+ * @brief Calculate time duation from start to end.
+ * @param[in] start             Start time (124.8MHz clock)
+ * @param[in] end               End time (124.8MHz clock)
+ */
+uint32_t phy_time_gap(uint32_t start, uint32_t end);
+
+/**
  * @brief Set a target time for the PHY timer.
- * @param[in] target            Target time (124.8MHz clock).
+ * @param[in] target            Target time (124.8MHz clock)
  * @param[in] callback          Callback function for the target time
  */
 void phy_timer_target_set(uint32_t target, drv_callback_t callback);
@@ -482,6 +496,7 @@
  */
 uint32_t phy_timer_count_left(void);
 
+uint32_t phy_timer_lp_tick_left(void);
 /**
  * @brief Pause the PHY timer.
  */
@@ -561,6 +576,39 @@
  */
 void enter_debug_mode(void);
 
+/**
+ * @brief Enable antenna port switching based on AGC gain
+ * @param[in] en                    Enable or disable
+ * @param[in] rf_gain               LNA gain
+ * @param[in] bb_gain               Filter gain
+ * @return Rx antenna ID
+ */
+uint8_t phy_rx_ant_sw(uint8_t en, uint8_t rf_gain, uint8_t bb_gain);
+
+/**
+ * @brief Set AGC threshold
+ * @param[in] high_th               AGC high threshold
+ * @param[in] low_th                AGC low threshold
+ */
+void phy_agc_th_set(uint8_t high_th, uint8_t low_th);
+
+/**
+ * @brief Set CE configuration
+ * @param[in] sym_per_blk           symbol per block
+ * @param[in] bd_th                 preamble detection threshold
+ * @param[in] ce_avg                CE average index
+ * @param[in] ce_start              CE start symbol
+ */
+void phy_preamble_ce_set(uint16_t sym_per_blk, uint32_t bd_th, uint8_t ce_avg, uint8_t ce_start);
+
+/**
+ * @brief Set preamble code index
+ * @param[in] work_mode             PHY_TX mode or PHY_RX mode
+ * @param[in] code_idx              Preamble code index
+ * @return 0: sucess, -1: error
+ */
+int phy_preamble_code_idx_set(enum PHY_WORK_MODE_T work_mode, uint8_t code_idx);
+
 #ifdef __cplusplus
 }
 #endif

--
Gitblit v1.9.3