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