| | |
| | | |
| | | void board_led_init(void) |
| | | { |
| | | //灯 |
| | | 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); |
| | | // 判断是Airtag还是免布线模式 |
| | | io_pin_mux_set(MODE_CHANGE_PIN, IO_FUNC0); |
| | | gpio_pin_set_dir( MODE_CHANGE_PIN, GPIO_DIR_IN, 0); |
| | | io_pull_set(MODE_CHANGE_PIN , IO_PULL_DOWN, IO_PULL_UP_LEVEL2); |
| | | } |
| | | |
| | | void board_led_on(enum IO_PIN_T idx) |
| | |
| | | */ |
| | | void board_pins_config(void); |
| | | |
| | | void boot_deinit(void); |
| | | /** |
| | | * @brief Configure debug trace port. |
| | | * @param[in] port Trace port |
| | |
| | | |
| | | // This function will be called by uwbapi_session_init() |
| | | void app_session_init(void) |
| | | { |
| | | normal_uwb_change_to_fira();//变为fira配置的uwb |
| | | { |
| | | #ifdef MY_MODE |
| | | normal_uwb_change_to_fira(); |
| | | #endif |
| | | // register process handler for MAC TX done and RX done |
| | | mac_register_process_handler(ranging_tx_process, ranging_rx_process); |
| | | uwbs_handler_init(&op); |
| | | |
| | | uwbs_handler_init(&op); |
| | | } |
| | | |
| | | void ranging_configure(void) |
| | |
| | | .phy_cfg.rx_ant_id = UWB_RX_ANT_3, /* UWB RX antenna port */ |
| | | }; |
| | | #endif |
| | | uint8_t normal_flag=1; |
| | | |
| | | void uwb_fira_init(void) |
| | | { |
| | | uwb_open(); |
| | | // uwb_open(); |
| | | |
| | | // set advanced parameters |
| | | struct PHY_ADV_CONFIG_T adv_config = |
| | |
| | | uwb_app_config.session_param.tx_power_level = board_param.tx_power_fcc[CALIB_CH(uwb_app_config.ppdu_params.ch_num)]; |
| | | uwb_app_config.ppdu_params.rx_ant_id = (uint8_t)(RX_MAIN_ANT_PORT); |
| | | } |
| | | uint8_t normal_flag=0; |
| | | void uwb_normal_init(void) |
| | | { |
| | | Uwb_init(); |
| | |
| | | void ranging_stop(void) |
| | | { |
| | | ranging_env.enable = 0; |
| | | #ifdef MY_MODE |
| | | fira_uwb_change_to_normal();//变为normal配置的uwb |
| | | #endif |
| | | ranging_monitor_stop(); |
| | | LOG_INFO(TRACE_NO_REPORT_HOST | TRACE_MODULE_APP, "Ranging stop\r\n"); |
| | | } |
| | |
| | | { |
| | | ranging_ant_delays_set(i, board_param.ant_delays[ch_idx][i]); |
| | | } |
| | | LOG_INFO(TRACE_MODULE_DRIVER, "ToF ant delays %d %d %d %d\r\n", board_param.ant_delays[ch_idx][0], board_param.ant_delays[ch_idx][1], |
| | | board_param.ant_delays[ch_idx][2], board_param.ant_delays[ch_idx][3]); |
| | | //LOG_INFO(TRACE_MODULE_DRIVER, "ToF ant delays %d %d %d %d\r\n", board_param.ant_delays[ch_idx][0], board_param.ant_delays[ch_idx][1], |
| | | // board_param.ant_delays[ch_idx][2], board_param.ant_delays[ch_idx][3]); |
| | | |
| | | pdoa_ant_delays_set(&board_param.pdoa_delays[ch_idx][0], 4); |
| | | LOG_INFO(TRACE_MODULE_DRIVER, "PDoA delays %d %d %d %d\r\n", board_param.pdoa_delays[ch_idx][0], board_param.pdoa_delays[ch_idx][1], |
| | | board_param.pdoa_delays[ch_idx][2], board_param.pdoa_delays[ch_idx][3]); |
| | | //LOG_INFO(TRACE_MODULE_DRIVER, "PDoA delays %d %d %d %d\r\n", board_param.pdoa_delays[ch_idx][0], board_param.pdoa_delays[ch_idx][1], |
| | | // board_param.pdoa_delays[ch_idx][2], board_param.pdoa_delays[ch_idx][3]); |
| | | |
| | | pdoa_gain_set(&board_param.pdoa_gains[ch_idx][0], 4); |
| | | LOG_INFO(TRACE_MODULE_DRIVER, "PDoA gains %d %d %d %d\r\n", board_param.pdoa_gains[ch_idx][0], board_param.pdoa_gains[ch_idx][1], |
| | | board_param.pdoa_gains[ch_idx][2], board_param.pdoa_gains[ch_idx][3]); |
| | | //LOG_INFO(TRACE_MODULE_DRIVER, "PDoA gains %d %d %d %d\r\n", board_param.pdoa_gains[ch_idx][0], board_param.pdoa_gains[ch_idx][1], |
| | | // board_param.pdoa_gains[ch_idx][2], board_param.pdoa_gains[ch_idx][3]); |
| | | |
| | | pdoa_ant_space_set(board_param.pdoa_ant_space); |
| | | LOG_INFO(TRACE_MODULE_DRIVER, "PDoA ant space %d\r\n", board_param.pdoa_ant_space); |
| | | //LOG_INFO(TRACE_MODULE_DRIVER, "PDoA ant space %d\r\n", board_param.pdoa_ant_space); |
| | | |
| | | pdoa_angle_offset_set(board_param.pdoa_offsets); |
| | | LOG_INFO(TRACE_MODULE_DRIVER, "PDoA angle offsets %d %d\r\n", board_param.pdoa_offsets[0], board_param.pdoa_offsets[1]); |
| | | //LOG_INFO(TRACE_MODULE_DRIVER, "PDoA angle offsets %d %d\r\n", board_param.pdoa_offsets[0], board_param.pdoa_offsets[1]); |
| | | } |
| | | |
| | | void *uwb_configure(uint8_t mode, uint8_t tx_power_level, const struct UWB_CONFIG_T *ppdu_params) |
| | |
| | | LOG_INFO(TRACE_MODULE_APP,"固件版本:4G-GPS定位手环 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff); |
| | | LOG_INFO(TRACE_MODULE_APP,"服务器地址: %d.%d.%d.%d:%d.\r\n",ip0,ip1,ip2,ip3,port); |
| | | } |
| | | |
| | | static void board_init(void) |
| | | { |
| | | uint32_t internal_flash = (REG_READ(0x40000018) >> 17) & 0x1; |
| | |
| | | |
| | | // Clock configuration |
| | | board_clock_run(); |
| | | boot_deinit();//新加的 |
| | | // Pin configuration |
| | | board_pins_config(); |
| | | // Trace configuration |
| | |
| | | #else |
| | | Program_Init(); |
| | | // led |
| | | // board_led_init(); |
| | | board_led_init(); |
| | | // board_led_on(BOARD_LED_1); |
| | | #endif |
| | | board_configure(); |
| | |
| | | } |
| | | |
| | | int main(void) |
| | | { |
| | | // Initialize MCU system |
| | | { |
| | | // Initialize MCU system |
| | | board_init(); |
| | | |
| | | // Disable watchdog timer |
| | | // Disable watchdog timer |
| | | wdt_close(WDT_ID0); |
| | | LOG_INFO(TRACE_MODULE_APP, "UCI FiRa example\r\n"); |
| | | if(gpio_pin_get_val(MODE_CHANGE_PIN)) |
| | | { |
| | | |
| | | |
| | | // Platform init for WSF |
| | | PalSysInit(); |
| | |
| | | uwb_test_init(handlerId); |
| | | #endif |
| | | |
| | | #ifndef MY_MODE |
| | | uwb_open(); |
| | | |
| | | // // set advanced parameters |
| | | // struct PHY_ADV_CONFIG_T adv_config = |
| | | // { |
| | | // // RPM0: 40, RPM3: 60 |
| | | // .thres_fap_detect = 60, |
| | | // // RPM0: 4, RPM3: 8 |
| | | // .nth_scale_factor = 8, |
| | | // // RFrame SP0: 0/1, Others: 0/1/2/3 |
| | | // .ranging_performance_mode = 3, |
| | | //#if RX_ANT_PORTS_NUM == 4 |
| | | // .skip_weakest_port_en = 1, |
| | | //#else |
| | | // .skip_weakest_port_en = 0, |
| | | //#endif |
| | | // }; |
| | | // phy_adv_params_configure(&adv_config); |
| | | // set advanced parameters |
| | | struct PHY_ADV_CONFIG_T adv_config = |
| | | { |
| | | // RPM0: 40, RPM3: 60 |
| | | .thres_fap_detect = 60, |
| | | // RPM0: 4, RPM3: 8 |
| | | .nth_scale_factor = 8, |
| | | // RFrame SP0: 0/1, Others: 0/1/2/3 |
| | | .ranging_performance_mode = 3, |
| | | #if RX_ANT_PORTS_NUM == 4 |
| | | .skip_weakest_port_en = 1, |
| | | #else |
| | | .skip_weakest_port_en = 0, |
| | | #endif |
| | | }; |
| | | phy_adv_params_configure(&adv_config); |
| | | |
| | | // // which RX ports will be used for AoA/PDoA |
| | | // phy_rx_ant_mode_set(RX_ANT_PORTS_COMBINATION); |
| | | // which RX ports will be used for AoA/PDoA |
| | | phy_rx_ant_mode_set(RX_ANT_PORTS_COMBINATION); |
| | | |
| | | // uwbs_init(); |
| | | // uwb_app_config.ranging_flow_mode = (uint8_t)(RANGING_FLOW_FIRA); |
| | | // uwb_app_config.filter_en = (uint8_t)(FILTER_EN); |
| | | // uwb_app_config.session_param.tx_power_level = board_param.tx_power_fcc[CALIB_CH(uwb_app_config.ppdu_params.ch_num)]; |
| | | // uwb_app_config.ppdu_params.rx_ant_id = (uint8_t)(RX_MAIN_ANT_PORT); |
| | | uwbs_init(); |
| | | uwb_app_config.ranging_flow_mode = (uint8_t)(RANGING_FLOW_FIRA); |
| | | uwb_app_config.filter_en = (uint8_t)(FILTER_EN); |
| | | uwb_app_config.session_param.tx_power_level = board_param.tx_power_fcc[CALIB_CH(uwb_app_config.ppdu_params.ch_num)]; |
| | | uwb_app_config.ppdu_params.rx_ant_id = (uint8_t)(RX_MAIN_ANT_PORT); |
| | | |
| | | #elif defined MY_MODE |
| | | Uwb_init();//默认为我们测距配置 |
| | | OpenUWB(); |
| | | uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); |
| | | #endif |
| | | // |
| | | // Create UCI transmission layer task |
| | | // |
| | |
| | | |
| | | // Enable sleep timer |
| | | sleep_timer_open(true, SLEEP_TIMER_MODE_ONESHOT, sleep_timer_callback); |
| | | uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); |
| | | |
| | | while (1) |
| | | { |
| | | wsfOsDispatcher(); |
| | | #ifdef MY_MODE |
| | | if(normal_flag) |
| | | { |
| | | |
| | | IdleTask(); |
| | | } |
| | | #endif |
| | | power_manage(); |
| | | } |
| | | }else{ |
| | | // adc_open(&usr_adc_cfg); |
| | | Uwb_init();//默认为我们测距配置 |
| | | OpenUWB(); |
| | | uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); |
| | | while (1) |
| | | { |
| | | uwb_app_poll();//我们的测距逻辑 |
| | | IdleTask(); |
| | | } |
| | | power_manage(); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | void app_restore_from_power_down(void) |
| | |
| | | |
| | | #include "mk_io.h" |
| | | #include "board.h" |
| | | void boot_deinit(void) |
| | | { |
| | | //将boot中串口返回普通gpio |
| | | // UART0 TX/RX |
| | | io_pin_mux_set(IO_PIN_5, IO_FUNC0); |
| | | io_pin_mux_set(IO_PIN_6, IO_FUNC0); |
| | | // UART1 RX/TX |
| | | io_pin_mux_set(IO_PIN_10, IO_FUNC0); |
| | | io_pin_mux_set(IO_PIN_9, IO_FUNC0); |
| | | uart_close(UART_ID1);//解绑原来串口1 |
| | | uart_close(UART_ID0);//解绑原来串口0 |
| | | } |
| | | |
| | | void board_pins_config(void) |
| | | { |
| | |
| | | io_pin_mux_set(IO_PIN_0, IO_FUNC4); |
| | | io_pin_mux_set(IO_PIN_1, IO_FUNC4); |
| | | |
| | | |
| | | #elif BOARD_TYPE == MK8000_DK |
| | | |
| | | // UART1 TX/RX |
| | |
| | | /// Antenna pattern |
| | | #define ANT_PATTERN (ANT_PATTERN_LINEAR) |
| | | #endif |
| | | |
| | | //#define MY_MODE |
| | | /** Enable load cap automatic tuning during ranging procedure */ |
| | | #define XTAL_AUTO_TUNE_EN (1) |
| | | |
| | |
| | | #define UWB_RX_WINDOW (US_TO_PHY_TIMER_COUNT(750)) |
| | | #define LED_PIN IO_PIN_4 |
| | | #define INPUT_5V_Pin IO_PIN_11 |
| | | #define MODE_CHANGE_PIN IO_PIN_4 |
| | | /* =========================================================================================================================== */ |
| | | /* ================ End ================ */ |
| | | /* =========================================================================================================================== */ |