| | |
| | | |
| | | struct BOARD_PARAM_T board_param = {0}; |
| | | static GPIO_IRQ_HANDLER_T button_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 |
| | |
| | | |
| | | 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) |
| | | { |