From 2b40605dbb9622b2099f7c4c6a628e40cd17e805 Mon Sep 17 00:00:00 2001
From: chen <15335560115@163.com>
Date: 星期四, 29 五月 2025 18:11:01 +0800
Subject: [PATCH] 基本完成免布线基站测试固件,功耗升级等未测试

---
 keil/include/board/board.c |  151 ++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 126 insertions(+), 25 deletions(-)

diff --git a/keil/include/board/board.c b/keil/include/board/board.c
index 6b581b1..aa5a47d 100644
--- a/keil/include/board/board.c
+++ b/keil/include/board/board.c
@@ -61,8 +61,9 @@
 
 struct BOARD_PARAM_T board_param = {0};
 static GPIO_IRQ_HANDLER_T button_irq_handler = NULL;
-static GPIO_IRQ_HANDLER_T accelerate_irq_handler=NULL;
-static GPIO_IRQ_HANDLER_T _4Gusart_irq_handler=NULL;
+static struct UWB_CONFIG_T uwb_config;
+static uint8_t tx_payload[20];
+static uint16_t tx_len = 20;
 void board_clock_run(void)
 {
     // default load cap
@@ -392,40 +393,138 @@
 void board_5V_input_init(GPIO_IRQ_HANDLER_T irq_handler)
 {
 		button_irq_handler = irq_handler;
-    gpio_pin_set_dir(INPUT_5V_Pin , GPIO_DIR_IN, 0);
-    io_pull_set(INPUT_5V_Pin , IO_PULL_DOWN, IO_PULL_UP_LEVEL4);
+    gpio_pin_set_dir(INPUT_5V_Pin, GPIO_DIR_IN, 0);
+    io_pull_set(INPUT_5V_Pin, IO_PULL_DOWN, IO_PULL_UP_LEVEL4);
     gpio_enable_irq(INPUT_5V_Pin, GPIO_IRQ_TYPE_RISING_EDGE, button_irq_handler);
-    //power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)INPUT_5V_Pin, POWER_WAKEUP_LEVEL_LOW);
-}
-void board_acceleration_detection_init(GPIO_IRQ_HANDLER_T irq_handler)
-{
-		accelerate_irq_handler=irq_handler;
-		gpio_pin_set_dir(ACCLERATE_DETECT_Pin , GPIO_DIR_IN, 0);
-		io_pull_set(ACCLERATE_DETECT_Pin, IO_PULL_DOWN, IO_PULL_UP_LEVEL4);
-        gpio_enable_irq(ACCLERATE_DETECT_Pin, GPIO_IRQ_TYPE_RISING_EDGE, accelerate_irq_handler);
-}
-void board_4GUsart_detection_init(GPIO_IRQ_HANDLER_T irq_handler)  //4G 串口输入检测中断,下拉触发
-{
-        _4Gusart_irq_handler=irq_handler;  
-        io_pin_mux_set(_4G_USART_RX_Pin,IO_FUNC0);//把原先io 变为普通GPIO
-		gpio_pin_set_dir(_4G_USART_RX_Pin , GPIO_DIR_IN, 0);
-		io_pull_set(_4G_USART_RX_Pin, IO_PULL_UP, IO_PULL_UP_LEVEL2);
-        gpio_enable_irq(_4G_USART_RX_Pin, GPIO_IRQ_TYPE_FALLING_EDGE, _4Gusart_irq_handler);
+    power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)INPUT_5V_Pin, POWER_WAKEUP_LEVEL_LOW);
 }
 void board_button_init(GPIO_IRQ_HANDLER_T irq_handler)
 {
     button_irq_handler = irq_handler;
     gpio_pin_set_dir(BOARD_SW_1, GPIO_DIR_IN, 0);
-    io_pull_set(BOARD_SW_1, IO_PULL_UP, IO_PULL_UP_LEVEL3);
+    io_pull_set(BOARD_SW_1, IO_PULL_UP, IO_PULL_UP_LEVEL4);
     gpio_enable_irq(BOARD_SW_1, GPIO_IRQ_TYPE_FALLING_EDGE, button_irq_handler);
 
     power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)BOARD_SW_1, POWER_WAKEUP_LEVEL_LOW);
 }
+#define CH_NUM 5
+
+enum TEST_MODE_T
+{
+    TEST_RF_CARRIER = 0,
+    TEST_UWB_TX,
+    TEST_UWB_RX,
+    TEST_MCU_ACTIVE,
+    TEST_MCU_SLEEP,
+    TEST_MCU_POWER_DOWN,
+    TEST_MCU_DEEP_POWER_DOWN,
+    TEST_MCU_SHELF_MODE,
+};
+static void app_power_mode_set(enum TEST_MODE_T pm)
+{
+    enum POWER_MODE_T power_mode = POWER_MODE_ACTIVE;
+
+    switch (pm)
+    {
+        case TEST_RF_CARRIER:
+            power_mode = POWER_MODE_ACTIVE;
+            uwb_open();
+            power_on_radio(1, 0);
+            uwb_tx_carrier_only(1, CH_NUM, TX_POWER_LEVEL);
+            LOG_INFO(TRACE_MODULE_APP, "==== RF Single Carrier ====\r\n");
+            break;
+        case TEST_UWB_TX:
+            power_mode = POWER_MODE_ACTIVE;
+            uwb_tx_carrier_only(0, CH_NUM, TX_POWER_LEVEL);
+            uwb_configure(PHY_TX | PHY_RX, TX_POWER_LEVEL, &uwb_config);
+            LOG_INFO(TRACE_MODULE_APP, "==== UWB TX ====\r\n");
+            break;
+        case TEST_UWB_RX:
+            power_mode = POWER_MODE_ACTIVE;
+            uwb_blocking_trx_stop();
+            power_off_radio();
+            power_on_radio(0, 1);
+            LOG_INFO(TRACE_MODULE_APP, "==== UWB RX ====\r\n");
+            break;
+        case TEST_MCU_ACTIVE:
+            power_mode = POWER_MODE_ACTIVE;
+            uwb_blocking_trx_stop();
+            LOG_INFO(TRACE_MODULE_APP, "==== MCU Active ====\r\n");
+            break;
+        case TEST_MCU_SLEEP:
+            power_mode = POWER_MODE_SLEEP;
+            LOG_INFO(TRACE_MODULE_APP, "==== MCU Sleep ====\r\n");
+            break;
+        case TEST_MCU_POWER_DOWN:
+            power_mode = POWER_MODE_POWER_DOWN;
+            LOG_INFO(TRACE_MODULE_APP, "==== MCU Power-down ====\r\n");
+            break;
+        case TEST_MCU_DEEP_POWER_DOWN:
+            power_mode = POWER_MODE_DEEP_POWER_DOWN;
+            LOG_INFO(TRACE_MODULE_APP, "==== MCU Deep Power-down ====\r\n");
+            break;
+        case TEST_MCU_SHELF_MODE:
+            power_mode = POWER_MODE_SHELF;
+            LOG_INFO(TRACE_MODULE_APP, "==== MCU Shelf Mode ====\r\n");
+            break;
+    }
+
+    power_mode_request(POWER_UNIT_APP, power_mode);
+//    app_led_set(pm);
+}
+void LED_PA_change(void)
+{
+io_pin_mux_set(IO_PIN_9, IO_FUNC0);
+		io_pin_mux_set(IO_PIN_10, IO_FUNC0);
+	 gpio_pin_set_dir(IO_PIN_9, GPIO_DIR_OUT, 0);
+	 io_pull_set(IO_PIN_9, IO_PULL_DOWN, IO_PULL_UP_LEVEL4);
+}
+void uwb_power_init(void)
+{
+    uwb_config.ch_num = CH_NUM;
+    uwb_config.code_index = 9;
+    uwb_config.mean_prf = MEAN_PRF_64M;
+    uwb_config.data_bit_rate = DATA_BR_6M8;
+
+    uwb_config.sync_sym = PREAM_LEN_64;
+    uwb_config.sfd_sym = BPRF_NSFD2_8;
+    uwb_config.ranging_bit = 0;
+    uwb_config.trx_mode = TRX_MODE_15_4Z_BPRF;
+
+    uwb_config.sts_pkt_cfg = STS_PKT_CFG_0;
+    uwb_config.sts_segnum = STS_SEGNUM_BPRF_1;
+    uwb_config.sts_seglen = STS_SEGLEN_BPRF_64;
+    uwb_config.rx_ant_id = UWB_RX_ANT_3;
+
+    uwb_rx_antenna_open(uwb_config.rx_ant_id);
+
+    for (uint32_t i = 0; i < sizeof(tx_payload); i++)
+    {
+        tx_payload[i] = 0x55;
+    }
+		 uwb_open();
+    power_on_radio(1, 0);
+    uwb_tx_carrier_only(1, CH_NUM, TX_POWER_LEVEL);
+		app_power_mode_set(TEST_UWB_TX);
+		 delay_us(65535);
+		gpio_pin_set(IO_PIN_9);//测试;
+		gpio_pin_clr(IO_PIN_10);//测试; 
+		uwb_blocking_tx_start(tx_payload, tx_len, 0);
+		gpio_pin_clr(IO_PIN_9);//测试;
+		gpio_pin_clr(IO_PIN_10);//测试;
+}
 
 void board_led_init(void)
 {
-    gpio_pin_set_dir(BOARD_LED_1, GPIO_DIR_OUT, 0);
-    gpio_pin_set_dir(BOARD_LED_2, GPIO_DIR_OUT, 0);
+    //灯
+		io_pin_mux_set(LED_PIN, IO_FUNC0);
+		gpio_pin_set_dir( LED_PIN, GPIO_DIR_OUT, 0);
+		io_pull_set(LED_PIN , IO_PULL_DOWN, IO_PULL_UP_LEVEL4);
+		//5V输入检测
+		io_pin_mux_set(INPUT_5V_Pin, IO_FUNC0);
+		gpio_pin_set_dir(INPUT_5V_Pin, GPIO_DIR_IN, 0);
+    io_pull_set(INPUT_5V_Pin, IO_PULL_DOWN, IO_PULL_UP_LEVEL2);
+//		power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)INPUT_5V_Pin, POWER_WAKEUP_LEVEL_LOW);
 }
 
 void board_led_on(enum IO_PIN_T idx)
@@ -446,9 +545,10 @@
 void board_configure(void)
 {
 }
-
+extern struct UART_CFG_T test_uart_cfg;
 void board_prepare_for_power_down(void)
 {
+	 
 #if !defined(CELL_PHONE_EN)
     board_led_off(BOARD_LED_1);
 #endif
@@ -456,6 +556,7 @@
 
 void board_restore_from_power_down(void)
 {
+	//uart_open(UART_ID0, &test_uart_cfg);
 #if defined(UCI_INTF_PORT)
     uci_tl_resume();
 #else
@@ -474,6 +575,6 @@
     sys_timer_open();
 
 #if TRACE_EN
-    trace_open(user_trace_port, TRACE_BAUD_RATE);
+    trace_open(user_trace_port, TRACE_BAUD_RATE);//记得回复
 #endif
 }

--
Gitblit v1.9.3