chen
2025-05-29 2b40605dbb9622b2099f7c4c6a628e40cd17e805
keil/include/board/board.c
@@ -61,7 +61,9 @@
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
@@ -405,6 +407,112 @@
    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)
{